模块的概念:
一个包含python代码的文件就是一个模块。
使用模块的作用:
1.现在程序开发文件较大,都放在一个文件中维护不方便,拆分为多个文件更方便更改与管理。
2.模块可以增加代码的重用率
创建模块:
模块本身就是一个文件,所有的py文件都可以在文件中直接书写,不过最好是在模板中书写一下内容:
变量 模块中的属性值
函数 单独的功能
类 相似的功能
注意:(1.)模块名称遵循标识符(2.)模块只有第一次被导入的时候执行,多次导入不会被执行
模块导入原理:
1.模块导入将会被执行一遍
2.导入模块的名称就是我们定义的脚本名称
3.过程总结:在指定范围内搜索指定名称的python脚本并获取其中的方法
模块的导入方式:
1.import 模块名
2.import 模块名 as 别名
3.import 模块1,模块2,....
4.from...import...(
当使用模块中的部分功能的时候,就可以使用局部导入方式。
from 模块 import 某个函数或者类。
作用:直接导入模块中的某个函数或者某个类或变量
)
5.from...import...as 别名(当导入的模块和当前模块中的名称相同的时候可以起别名进行区分。)
6.from...import 功能1,功能2
7.from...import* 导入所有
import 模块名
import time()
print(time.timezone)#模块名 变量名
import 模块名 as 别名
如果变量名太长我们可以用这种 as
import name_ab as a
a.say_hello()
ret=a.num(10,23)
print(ret)
__all__ = [变量1,变量2 ...] 设置导入模块的功能。
模块搜索路径:
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
由sys模块的sys.path方法来规定
因为sys.path返回的数据类型是列表
1、列表可以修改、我们导入的范围也可以通过修改sys.path这个列表获得暂时的修改。例如通过 sys.path.append()添加目录,导入额外目录的模块。
2、列表是有序的,当搜索的过程当中,在第一个路径下搜索到了,就停止搜索。而且sys.path第一个路 径是脚本的当前路径,所以禁止大家讲自己的脚本命名成模块的名称。
因此需要注意的是:自己模块命名的时候不能和系统的模块名称相同。
模块搜索顺序:
遵循就近原则
把模块当做脚本运行:
我们可以通过模块的全局变量__name__来查看模块名:
当做脚本运行:
__name__ 的值 等于'__main__'
当做模块导入:
__name__的值等于模块名
作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
if __name__ == '__main__':
pass
random模块:
randint():随机产生整数
# 产生0-3之间随机的一位数(randint)
import random
num = random.randint(0, 3) # 包含0,3
print(num)
unifrom():随机产生小数
import random
num = random.randint(0, 3) # 包含0,3
print(num)
random():0-1之间随机产生小数不包括0,1
import random
ret=random.random()
print(ret)
randrange():可以指定步长
import random
ret=random.randrange(1,10,2)#在1-10之间产生随机的奇数
print(ret)
choice():随机返回序列中的一个数据
# choice 在序列中随机取值
import random
lst = [1, 2, 3]
num = random.choice(lst)
print(num)
shuffle():打乱序列顺序
shuffle()打乱序列顺序
import random
lst = ['a', 'b', 'c']
num = random.shuffle(lst)
print(lst)
sys模板:
import sys sys.version 返回解释器版本 import sys sys.path 返回模块搜索路径
time模板:
time.sleep():睡眠功能,让程序在几秒后执行
# time.sleep()
import time
print('程序开始了...')
time.sleep(4)
print('程序结束了...')
time.time():指的是从1970年1月1日到现在的秒值返回的是float类型(时间戳)
# time.time()
import time
ret = time.time()
print(ret) # 1546946830.269016
time.localtime():获取时间元组(将此前时间戳转化为时间元组)
# time.localtime()
import time
ret = time.localtime()
print(ret)
# time.struct_time(tm_year=2019, tm_mon=1, tm_mday=8, tm_hour=19, tm_min=30, tm_sec=0, tm_wday=1, tm_yday=8, tm_isdst=0)
time.strftime():时间字符串格式化
# time.strftime()
import time
ret = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(ret) # 2019-01-08 19:38:26