python全栈工程师能接到私活么_Python全栈工程师(包、模块 的导入)

ParisGabriel

每天坚持手写  一天一篇  决定坚持几年 为了梦想 为了信仰

Python人工智能从入门到精通

$ pip3 install tensorflow :

第三方模块tensorflow 的安装

电脑必须有网 命令行自动下载安装

dir(模块名):

查看模块所有属性

自定义模块导入

示例:

自定义模块的实现方法

defmyfac(n):print('正在计算', n, '的阶乘')defmysum(n):print("正在计算1+2+3+...+%d的和" %n)

name1= "Audi"name2= "TESLA"

print("mymod模块被加载!")

注意事项:

自定义模块的文件要求以.py结尾,文件名必须是标识符的规则

导入 语句import 语句等 搜索块的路径顺序

import mymod

from mymod import myfac

from mymod import *

去哪儿找这个mymod.py?

搜索顺序:

1. 搜索程序运行时的路径(当前路径)

2. sys.path 提供的路径  sys.path是一个列表,里面放的都是模块的搜索路径

3. 搜索内建模块

模块的加载过程:

1. 在模块导入时,模块的所有语句都会执行

2. 如果一个模块已经导入,则再次导入时不会重新执行模块内的语句

模块的重新加载

import mymod

import imp

imp.reload(mymod) # 重新加载mymod模块

模块以导入和执行的过程:

1. 先搜索相关的路径,找到模块名.py

2. 判断是否有此模块对应的.pyc文件。如果.pyc比.py文件新,则直接加载.pyc文件

3. 否则 用模块.py,文件生成.pyc,并加载执行

pyc python的编译

编译 解释执行

mymod.py --------> mymod.pyc --------> python3

模块  -------->  编译好的Python3文件  --------> Python3解释执行器

模块的文档字符串:

模块内第一个没有赋值给任何变量的字符串称为模块的文档字符串

模块的 __doc__ 属性

此属性用于绑定模块的文档字符串

模块的__file__属性

此属性用于记录模块对应的文件路径名

示例:

# 模块的文档字符串:

'''我的自定义模块mymod2

此模块有两个函数

myfac和 mysum

...

'''

defmyfac(n):'''自定义用来测试用的myfac的文档字符串'''

print('正在计算', n, '的阶乘')defmysum(n):print("正在计算1+2+3+...+%d的和" %n)

name1= "Audi"name2= "TESLA"

print("mymod模块被加载!")

模块的__name__属性

__name__属性 用来记录模块自身名字

作用:

1. 记录模块名

2. 用来判断是否为主模块

说明:

当此模块为主模块(也就是第一个运行的模块时)运行时, __name__绑定 '__main__'

当此模块不是主模块时,而是被其它模块导入时,此时 __name__ 绑定模块名

示例:

'''此示例示意 mymod3的 __name__属性的用法'''

deftest():pass

print("__name__属性绑定的值是:", __name__)if __name__ == '__main__':print("当前mymod3.py 正在以主模块运行")else:print("当前mymod3.py 正在被其它模块导入")print("我的模块名是", __name__)

模块的 __all__列表

模块中的 __all__列表是一个用来存放可导出属性的字符串列表

作用:

当用from xxx import *语句导入时,只导入 __all__ 列表内的属性  并且只对 from xx import * 有效

示例:

#__all__属性只对 from import * 语句有效

__all__ = ['hello1', 'name1']defhello1():pass

defhello2():pass

defhello3():passname1= 'aaaaaa'name2= 'aaaaaa'

模块的隐藏属性

模块中以'_'开头的属性,在from xxx import * 导入时,将不被导入,通常称这些属性为隐藏属性

示例:

此模块在用from mymod5 import *导入时,只能导入:#f1和 name1

deff1():pass

def_f2():pass

def __f3():passname1= 'aaaaa'_name2= 'bbbbb'

随机模块 random

模块名: random

作用:

用于模拟或生成随机输出的模块

随机模块 random

说明:

random模块是用于模拟或生成随机输出的模块.

import random as R

函数名描述

R.random()

返回一个[0, 1) 之间的随机实数

R.uniform(a,b)

返回[a,b) 区间内的随机实数

R.randrange([start,] stop[, step])

返回range(start,stop,step)中的随机数

R.choice(seq)

从序列中返回随意元素

R.shuffle(seq[, random])

随机指定序列的顺序(乱序序列)

R.sample(seq,n)

从序列中选择n个随机且不重复的元素

系统模块 sys

运行时系统相关的信息

sys模块的属性

属性描述

sys.path

模块搜索路径 path[0] 是当前脚本程序的路径名,否则为 ''

sys.modules

已加载模块的字典

sys.version

版本信息字符串

sys.version_info

版本信息的命名元组

sys.platform

操作系统平台名称信息

sys.argv

命令行参数 argv[0] 代表当前脚本程序路径名

sys.copyright

获得Python版权相关的信息

sys.builtin_module_names

获得Python内建模块的名称(字符串元组)

sys模块的函数

函数名描述

sys.exit([arg])

退出程序,正常退出时sys.exit(0)

sys.getrecursionlimit()

得到递归嵌套层次限制(栈的深度)

sys.setrecursionlimit(n)

得到和修改递归嵌套层次限制(栈的深度)

包(模块包) package

包的定义

包是将模块以文件夹的组织形式进行分组管理的管理方法

作用:

将一系列模块进行分类管理,有利于防止命名冲突

可以在需要时加载一个或部分模块则不是全部模块

包目录树示例:

mypack/  (包名)

__init__.py                      (__init__.py 文件)

menu.py                         (模块)

games/                          (子包名1)

__init__.py             (__init__.py 文件)

contra.py                (模块)

supermario.py        (模块)

tanks.py                  (模块)

office/                             (子包名2)

__init__.py              (__init__.py 文件)

word.py                   (模块)

excel.py                   (模块)

powerpoint.py         (模块)

__init__.py 文件

__init__.py是常规包内必须存在的文件

__init__.py会在包加载时自动调用

作用:

1. 编写此包的内容

2. 在内部填写文档字符串

3. 在__init__.py文件内可以加载此包所依懒的一些其它模块

包的导入

同模块的导入规则

#import 语句

import 包名 [as 包新名]

import 包名.模块名 [as 模块新名]

import 包名.子包名.模块名 [as 模块新名]

# from import语句

from 包名 import 模块名 [as 模块新名]

from 包名.子包名 import 模块名 [as 模块新名]

from 包名.子包名.模块名 import 属性名 [as 属性新名]

# from import *语句

from 包名 import *

from 包名.模块名 import *

...

导入包时的索引路径顺序:

1. 搜索程序的当前路径

2. sys.path 提供的路径

__init__.py内的 __all__ 列表

作用:

用来记录此包中有哪儿些子包或模块在用from import *语句 时被导入

说明:

__all__列表只对 from xxx import *语句起作用

包的相对导入:

包的相对导入是指包内模块的相互导入(不能超过包的最高界限)

语法:

from 相对路径包或模块 import 属性或模块名

from 相对路径包或模块 import *

相对路径

. 代表当前目录

.. 代表上一级目录

... 代表上二级目录

.... 以此类推

注: 相对导入时不能超出包的外部

模块的导入分三种

import tiem 直接导入模块

from time import time 导入time模块的time功能

from mymod import * 导入time模块的所有功能

这里*导入可以直接使用函数不需要加模块名.函数 如果有__all__属性只导入__all__列表里的

包也是分三种 差不多 包所导入的是文件夹

as 给包或者模块、属性、等 改名

(.)统一代表什么什么下的什么什么

解释执行器就是先把.py文件翻译成二进制码.pyc文件再进行运行(先解释后执行)

但运模块时自动创建__pycache__ 文件夹 里面放.pyc文件 文档字符串和函数一样

一般用三引号括起来 写就可以了 第一行是标题 换行 第三行开始写详细内容

__name__属性返回一个字符串 如果返回 __main__代表程序主入口 也就是第一个运行的模块

否则返回当前模块的名字

__all__ 属性是一个列表 当三种导入方式导入时只导入列表里的其他的不导入

__开头的函数 属性 当三种导入方式导入时不导入_开头的隐藏函数 其他的全导入

__init__.py 是必须存在的文件 不存在 此文件夹就不是包

里面可以写属性 包的文档字符串

导入路径 优先相对路径 其次sys.path路径

相对路径 就是 当前路径 或 路径名加上模块

path是系统环境变量列表 相当于全局变量 在任何目录都能调用这个列表里的路径

练习:

1. 猜数字游戏

随机生成一个 0~100之间的一个整数,用变量x绑定

让用户输入一个数y,输出猜数字的结果:

1) 如果y大于x则提示: "您猜大了"

2) 如果y小于x则提示: "您猜小了"

3) 如果y等于生成的数x,则提供示用户"恭喜您猜对了 "并退出猜数字

循环重复上述步聚,直到猜对为止。

猜对了,显示用户猜数字的次数,然后退出程序

答案:

importrandom

x= random.randrange(101)

i=0whileTrue:

s= int(input("请输入要猜的数字0~100:"))

i+= 1

if s >x:print("大了")elif s

这里有个2分算法 100内的猜数字一般不超过7次猜对 10000不超过20次就能猜对

练习:

1. 写一个闹钟程序,启动时设置定时时间,

到时间后打印一句"时间到...." 然后退出程序

importtimedeftime_out():

h= int(input("please input:"))

m= int(input("please input:"))

s= int(input("please input:"))

d=(h, m, s)whileTrue:

s=time.localtime()print('%02d:%02d:%02d' % (s[3], s[4], s[5]), end = "\r")

time.gmtime(1)if s[3: 6] >=d:print("Time out")breaktime_out()

2. 模拟斗地主发牌,扑克牌共54张

黑桃('\u2660'), 梅花('\u2663'), 方块('\u2665'), 红桃('\u2666')

A2-10JQK

大王、小王

三个人玩,每人发17张牌,底牌留三张

输入回车, 打印出第1个人的17张牌

输入回车, 打印出第2个人的17张牌

输入回车, 打印出第3个人的17张牌

输入回车, 打印三张底牌

答案:

importrandom

L= {"大王", "小王"}

range(2, 11)for x in {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}:

L.add("\u2660" +x)

L.add("\u2663" +x)

L.add("\u2665" +x)

L.add("\u2666" +x)print("共54张牌:", L)print()for x in range(3):

input()

s= set(random.sample(L, 17))if x ==0:

x= "第一个玩家:"

elif x == 1:

x= "第二玩家:"

elif x == 2:

x= "第三个玩家:"

print(x, s)

L-=sprint()print("底牌:", L)

今天的:

3. 修改学生信息管理程序,将原student_info.py 拆分为模块

要求:

1. 主事件循环放在main.py中

2. show_menu 函数放在menu.py中

3. 与学生操作相关的函数放在 student_info.py中

还有昨天的:

3. 改写之前的学生信息管理程序

要求添加四个功能:

| 5) 按学生成绩高-低显示学生信息 |

| 6) 按学生成绩低-高显示学生信息 |

| 7) 按学生年龄高-低显示学生信息 |

| 8) 按学生年龄低-高显示学生信息 |

已 吐血身亡 下次补上 太晚了  嘤嘤嘤.........

#创建输入函数:input_student开始     封装信息输入

#创建输出函数:student完成 临时菜单封装

defstudent():for a in range(1, 8, 2):

x= "*" *aprint(x.center(9), x.center(10), x.center(10), x.center(9))else:for y in range(1, 4 + 1):

c= "*"

if 4 >= 10:

c= "***"

print(c.center(9), c.center(10), c.center(10), c.center(9))print("^^^^^^^^^^^^^ System menu ^^^^^^^^^^^^^")print("---------------------------------------")print("1): Add Student information")print("---------------------------------------")print("2): print Student information")print("---------------------------------------")print("3): delete Student information")print("---------------------------------------")print("4): revamp Student information")print("---------------------------------------")print("5): Results sorting High --> low")print("---------------------------------------")print("6): Results sorting low --> High")print("---------------------------------------")print("7): Age sort High --> low")print("---------------------------------------")print("8): Age sort low --> High")print("---------------------------------------")print("please input number 1~8 select")print("---------------------------------------")print("input :(Q)Exit procedure")print("---------------------------------------")#创建输出函数:perform完成

definput_student():

L=[]print("--------Student information enty--------")whileTrue:

name= input("please input name:")if name == "":

q= input("operation succeed! return y / n :")if q == "y":break

else:

input_student()

age= int(input("please input age:"))

score= int(input("please input score:"))

d={}

d= {"name": name, "age": age, "score": score}print("+---------------+----------+----------+")

name= d["name"].center(15)

age= str(d["age"]).center(10)

score= str(d["score"]).center(10)print('''|%s|%s|%s|''' %(name, age, score))print("+---------------+----------+----------+")print("-----Not input Enter be no revamp!-----")

L.append(d)returnL#创建输入函数:input_student完成

#创建输出函数:output_student开始   封装列表打印

defoutput_student(lst):print("-------Student information sheet-------")print("+---------------+----------+----------+")print("| Name | Age | Score |")print("+---------------+----------+----------+")for x inlst:

name= x["name"].center(15)

age= str(x["age"]).center(10)

score= str(x["score"]).center(10)print('''|%s|%s|%s|''' %(name, age, score))print("+---------------+----------+----------+")

q= input("operation succeed! return y / n :")if q == "y":pass

else:

output_student()#创建输出函数:output_student完成

#创建输出函数:delete_student开始  封装删除信息

defdelete_student(lst):

name= input("please input name delete:")for x inlst:if x["name"] ==name:print("+---------------+----------+----------+")

name= x["name"].center(15)

age= str(x["age"]).center(10)

score= str(x["score"]).center(10)print('''|%s|%s|%s|''' %(name, age, score))print("+---------------+----------+----------+")

delet= input("whether delete (y:yes/y:no):")if delet == "y":

lst.remove(x)

q= input("operation succeed! return y / n :")if q == "y":pass

else:

delete_student()#创建输出函数:delete_student完成

#创建输出函数:revamp_student()开始   封装更改信息

defrevamp_student(lst):

name= input("please input name revamp:")for x inlst:if x["name"] ==name:print("+---------------+----------+----------+")

name= x["name"].center(15)

age= str(x["age"]).center(10)

score= str(x["score"]).center(10)print('''|%s|%s|%s|''' %(name, age, score))print("+---------------+----------+----------+")print("-----not input Enter be no revamp!-----")

rage= input("please input age revamp:")

rscore= input("please input score revamp:")if rage != "":

x["age"] =rageif rscore != "":

x["score"] =rscoreprint("+---------------+----------+----------+")

name= x["name"].center(15)

age= str(x["age"]).center(10)

score= str(x["score"]).center(10)print('''|%s|%s|%s|''' %(name, age, score))print("+---------------+----------+----------+")print("-----------revamp perform!------------")

q= input("operation succeed! return y / n :")if q == "y":pass

else:

revamp_student()#创建输出函数:revamp_student()完成

#创建输出函数:output_student_by_score_desc开始 成绩高~低排序

defoutput_student_by_score_desc(lst):defk(d):return int(d['score'])

L= sorted(lst, key=k, reverse=True)

output_student(L)#创建输出函数:output_student_by_score_asc开始 成绩低~高排序

defoutput_student_by_score_asc(lst):

L= sorted(lst, key=lambda d: int(d['score']))

output_student(L)#创建输出函数:output_student_by_age_desc开始 年龄高~低排序

defoutput_student_by_age_desc(lst):

L= sorted(lst, key=lambda d: int(d['age']),

reverse=True)

output_student(L)#创建输出函数:output_student_by_age_asc开始 年龄低~高排序

defoutput_student_by_age_asc(lst):

L= sorted(lst, key=lambda d: int(d['age']))

output_student(L)#创建输出函数:System_menu()开始    临时封装系统

defSystem_menu():

L=[]whileTrue:

student()

select= input("please input:")if select == '1':

L+=input_student()elif select == '2':

output_student(L)elif select == '3':

delete_student(L)elif select == '4':

revamp_student(L)elif select == '5':

output_student_by_score_desc(L)elif select == '6':

output_student_by_score_asc(L)elif select == '7':

output_student_by_age_desc(L)elif select == '8':

output_student_by_age_asc(L)elif select == 'q':break

#创建输出函数:System_menu()完成    临时封装系统

#运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树?...

题目一:给出一个n,代表有从1到n的数字[1,2,3, n],问可以构成多少种二叉搜索树? 一开始的想法是直接递归构造,时间复杂度是指数上升;后来想法是找规律:先看例子: n 1, 有一个元素,可以构成一个二…

java学习(124):小综合案例

public class Province {private String name;//省份名称private long area;//土地面积private boolean general;//是普通省份还是特殊省份public String getName() {return name;}public void setName(String name) {this.name name;}public long getArea() {return area;}pu…

论文发表在什么期刊上_医学论文发表期刊论文范文

普通期刊是国内期刊中底数最多、选择范围最广、受众最广的期刊类型。这对国内作家来说一定不陌生。选择出版普通期刊的作者总是很多,无论是大学生还是发表专业职称的专业人士。写普通期刊并不难。普通期刊对论文的要求大多是论文的基本要求,大多数人都能…

[Docker]Docker拉取,上传镜像到Harbor仓库

需求因为项目的需求,需要制作一个基于tomcat的镜像.那么前提就是,需要有tomcat的基础镜像. 怎么做我的思路跑偏了,本来以为是需要将tomcat下载下来,然后通过docker命令,让它成为镜像的.结果后来和老大一沟通,才发现自己的思路偏的不是一点儿半点儿 如果需要tomcat镜像,可以从Do…

java学习(125):简单异常处理

//异常处理 import java.util.Scanner; public class test65 {public static void main(String[] args){int a,b,c;Scanner innew Scanner(System.in);try {System.out.println("亲输入a的值");ain.nextInt();System.out.println("请输入b的值");bin.nextI…

python免费下载及安装_Python的下载及安装

Python下载可以在百度查找“Python下载”:或者直接搜索此网址:https://www.python.org/getit/在官网有python2和python3可供选择,我下载的是python3:下载完安装包后开始安装:选择Install Now那么就直接安装&#xff1a…

面试题5,接口和抽象类的区别

转载于:https://www.cnblogs.com/fuckingPangzi/p/10153501.html

玩转oracle 11g(18):数据库相关日志文件位置

数据库相关日志文件 10g 相关路径 警告日志 D:\oracle\product\10.2.0\admin\docare\bdump\alert_docare.log 监听日志文件 D:\oracle\product\10.2.0\db_1\network\log文件 监听配置文件、TNSNAMES.ORA配置文件 D:\oracle\product\10.2.0\db_1\network\admin文件夹 11g 相关…

悬浮窗_华为手机悬浮窗设置在哪里

在我们的手机上,应用有很多,现在很多的直播软件都是可以开启小窗功能的,当然了,假如我们的手机假如是华为手机的话,我们也是可以开启应用的悬浮窗功能的,一起了解下:华为手机悬浮窗设置在哪里。…

玩转oracle 11g(19):ora-00020和64位数据库安装32为plsql

1. 64bit 下使用 PLSQL Developer 操作步骤 1.把instantclient-basic-win32-11.2.0.1.0压缩包中文件夹instantclient_11_2 复制到 C:\ 2.把D:\oracle\product\10.2.0\db_1\ 路径下的NETWORK文件夹复制到 C:\ instantclient_11_2\ 3. 系统环境变量 PATH 最右边添加 ; …

iOS----------Apple id如何关闭双重认证?

https://www.zhihu.com/question/292819209转载于:https://www.cnblogs.com/KiVen2015/p/10154609.html

布尔运算_3dmax教程 - 布尔运算

布尔运算 - 创建匹配框在本教程中,我们将通过创建几个框并使用布尔运算来减去框的内部来创建一个匹配框。布尔运算非常有创意且使用起来很有趣。请享用!步骤1。打开3ds Max,从新页面开始,并将其保存在3ds Max中作为布尔框的场景文…

玩转oracle 11g(20):ora-00604和ora-00018

3. 程序报如下错误: 解决步骤: sql> alter system set processes600 scopespfile; sql> shutdown immediate; sql> startup

nginx wsgi django 建站配置最终版

服务器配置环境centos7 python3: 见web标签中安装方法 1.安装各类基础模块 yum install gcc-c (为centos系统增加编译功能) yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel (安装这些模块都…

主存和cache每一块相等_CPU中的Cache实现原理

本文翻译自:http://duartes.org/gustavo/blog/微信公众号:技术原理君 本文简要的展示了现代Intel处理器的CPU cache是如何组织的。有关cache的讨论往往缺乏具体的实例,使得一些简单的概念变得扑朔迷离。也许是我可爱的小脑瓜有点迟钝吧&#…

玩转oracle 11g(21):修改为静态监听

4. listener修改为静态监听 增加红色部分 SID_LIST_LISTENER (SID_LIST (SID_DESC (SID_NAME PLSExtProc) (ORACLE_HOME d:\oracle\product\10.2.0\db_1) (PROGRAM extproc) ) (SID_DESC (GLOBAL_DBNAME docare) (ORACLE_H…

Python+Selenium练习篇之2-利用ID定位元素

在前面一篇文章,我们介绍了如何摘取页面字段,通过正则进行匹配符合要求的字段。如果感觉有点困难,不能立马理解,没有关系。把字符串摘取放到第一篇,是因为自动化测试脚本,经常要利用字符串操作,…

玩转oracle 11g(22):ora-01691和修改密码过期时间

5. 增加新的数据文件 报:ORA -01691错误 解决描述: 在对应表空间增加新的数据文件 1. select * from dba_data_files ; 查询出表空间的数据文件路径 2.通过语句增加:举例:表空间TSP_MEDSURGERY alter tablespace TSP_MEDSURGER…

华为云上可订阅F5_F5亮相华为云计算大会 解读云应用交付

全球领先的应用交付网络厂商F5 Networks, Inc.(NASDAQ: FFIV)在下周于上海召开的2012华为云计算大会上向用户呈现其面向云计算的应用交付解决方案。在本次活动中,F5将重点为用户展示与华为在云计算方面的合作,F5与华为的联合解决方案如何帮助企业部署云架…

1. 栈和队列的数组实现

栈和队列的比较 栈和队列都属于线性表,且在其上进行Insert和Delete操作所插入和移除的元素是预先设定的。在栈中,在一端插入,在同一端删除,位于该端点的元素称为栈顶元素;在队列中,在一端插入,在…