目录
一.模块的概念
1.概念的介绍:
一个包含python代码的文件就是一个模块。
使用模块的作用:
1.现在程序开发文件比较大,都放在一个文件中维护不方便,拆分成多个文件方便维护 与管理
2.模块可以增加代码的重用率
2.创建模块:
模块本身就是一个文件,所有py代码都可以在文件中直接书写。不过我们开发共用模块时,最好在模块中书写以下内容。
变量 模块中的属性值
函数 单独的功能
类 相似功能组合
模块测试代码 临时使用,被导入时不会执行
注意:
- .模块名称遵循标识符。
- .模块只有第一次被导入的时候执行,多次导入不会执行。
例如:one_model.py就是一个简单的模块,这个模块的功能就是打招呼
二.模块导入:
1.导入原理:
. 模块导入会将要导入的文件执行一遍
. 导入模块的名称就是我们定义的脚本或包的名称
. 我们导入模块的过程总结就是:在指定的范围内搜索指定名称的python脚本或者包,将其运行, 获取其中的方法
三.模块的导入方式:
1、import 模块名
直接导入模块:
2、import 模块名 as 别名
如果模块的名称太长,我们可以这个模块起一个别名。
3、import 模块名1,模块名2,... 一行导入多个模块。(不推荐使用)
4、from ... import ...
当使用模块中的部分功能的时候,就可以使用局部导入方式。
from 模块 import 某个函数或者类。
作用:直接导入模块中的某个函数或者某个类或变量
注意:如果当前文件中的变量或者函数名称和模块中的名称重复,会使用就近原则。
5、from ... import ... as 别名
当导入的模块和当前模块中的名称相同的时候可以起别名进行区分。
四.模块搜索路径:
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
由sys模块的sys.path方法来规定
因为sys.path返回的数据类型是列表
1、列表可以修改、我们导入的范围也可以通过修改sys.path这个列表获得暂时的修改。例如通过 sys.path.append()添加目录,导入额外目录的模块。
2、列表是有序的,当搜索的过程当中,在第一个路径下搜索到了,就停止搜索。而且sys.path第一个路 径是脚本的当前路径,所以禁止大家讲自己的脚本命名成模块的名称。
因此需要注意的是:自己模块命名的时候不能和系统的模块名称相同。
五.pyc临时文件
为了提高加载模块的速度,python解释器会在__pycache__目录中下缓存每个模块编译后的版本,之后,再次被导入时,实际上导入的是这个.pyc的临时文件。
六.把模块当脚本运行
我们可以通过模块的全局变量__name__来查看模块名:
当做脚本运行:
__name__ 的值 等于'__main__'
当做模块导入:
__name__的值等于模块名
作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
if __name__ == '__main__':
pass
当脚本运行时:
def print_name():
print('hello, %s' % __name__)
if __name__ == '__main__':
print_name()
输出结果:hello, __main__
由此可以看出:__name__ 的值 等于'__main__'
当模块导入时:
from one_model import print_name
print_name()
输出结果:hello, one_model
由此可以看出:__name__当模块导入式等于模块名
七.random模块
作用:产生随机数
1.随机小数:
random()
import random
ret = random.random()
print(ret)
随机输出一个小数
. uniform(a,b) 产生随机范围内的小数 (四舍五入)
import random
ret = random.uniform(3,5.4) # 随机输出3~5之间的小数
print(ret)
import random
ret = random.uniform(3,5.8) # 随机输出3~6之间的小数
print(ret)
2.随机整数
randint(a,b) 产生a,b范围内的整数,包含开头和结尾
import random
ret = random.randint(1,5) # 随机输出1~5之间的整数,包含1 和 5
print(ret)
randrange(start,stop,[step])
- 产生start,stop范围内的整数,包含开头不包含结尾。
- step 指定产生随机数的步长。
import random
ret = random.randrange(1,11,2) # 随机输出1~10之间的整数,步长为2
print(ret)
3.随机选择一个数据:
random.choice(lst) 随机返回序列中的一个数据
import random
s = [1,2,3,4,5,6]
ret = random.choice(s) # 从列表s中随机选出一个数据
print(ret)
4.打乱
shuffle() 打乱列表顺序
import random
s = [1,2,3,4,5,6]
random.shuffle(s) # 打乱列表的顺序,不需要变量承接
print(s)
5.练习:验证码的产生
import random
def yzm():
code = '' # 用来拼接随机产生的数字或字母
for i in range(4):
# 循环4次生成4个字母或数字
# 生成数字
num = random.randint(0, 9)
# 生成字母
zm = chr(random.randint(65, 90))
# 随机选择一个内容
lst = [num, zm]
ret = str(random.choice(lst)) # 注意将数字转换成字符
# 拼接内容
code = ''.join([code, ret])
return code
ret = yzm()
print(ret)
八.sys模块
1.sys.version返回解释器的版本号
print(sys.version)
2.sys.path 返回模块的搜索路径
print(sys.path)
3.sys.argv 接受命令行下的参数