模块
定义
包含一系列数据、函数、类的文件,通常以.py结尾。
作用
让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰。
有利于多人合作开发。
导入
import
1. 语法:
import 模块名
import 模块名 as 别名
2. 作用:将某模块整体导入到当前模块中
3. 使用:模块名.成员
from import
1. 语法:
from 模块名 import 成员名[ as 别名1]
2. 作用:将模块内的一个或多个成员导入到当前模块的作用域中。
3. 使用:直接使用成员名
from import *
1. 语法:from 模块名 import *
2. 作用:将某模块的所有成员导入到当前模块。
3. 模块中以下划线(_)开头的属性,不会被导入,通常称这些成员为隐藏成员。
# 导入方式1
# 语法:import 模块名称
# 使用:模块名称.成员
# 更适合面向过程的技术(函数、全局变量)
# 本质:通过变量访问其他模块成员
import module01
module01.func01()
# import module01 as m
# m.func01()
# 方式2
# 语法:from 模块名称 import 成员
# 用法:直接使用成员
# 更适合面向对象的技术(类)
# 本质:将其他模块成员导入到当前模块作用域中
from module01 import MyClass
my_class = MyClass()
my_class.func02()
# 方式3
**# 语法:from 模块名称 import ***
# 用法:直接使用模块内所有成员
# 需要访问模块中多个成员
# (小心:名称冲突)
# 本质:将其他模块成员导入到当前模块作用域中
from module01 import *
MyClass02().func03()
func01()
模块变量
__all__变量:定义可导出成员,仅对from xx import *语句有效。
__doc__变量:文档字符串。
__file__变量:模块对应的文件路径名。
__name__变量:模块自身名字,可以判断是否为主模块。
当此模块作为主模块(第一个运行的模块)运行时,__name__绑定'__main__',不是主模块,而是被其它模块导入时,存储模块名。
加载过程
在模块导入时,模块的所有语句会执行。
如果一个模块已经导入,则再次导入时不会重新执行模块内的语句。
分类
1. 内置模块(builtins),在解析器的内部可以直接使用。
2. 标准库模块,安装Python时已安装且可直接使用。
3. 第三方模块(通常为开源),需要自己安装。
4. 用户自己编写的模块(可以作为其他人的第三方模块)
包package
python 程序结构
项目根目录
包
模块
类
函数
语句
导入是否成功的唯一条件:
导入路径 + sys.path == 真实路径
定义
将模块以文件夹的形式进行分组管理。
作用
让一些相关的模块组织在一起,使逻辑结构更加清晰。
导入
import 包名.模块名 [as 模块新名]
import 包名.子包名.模块名 [as 模块新名]
from 包名 import 模块名 [as 模块新名]
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 成员名 [as 属性新名]
# 导入包内的所有子包和模块
from 包名 import *
from 包名.模块名 import *
init.py 文件
是包内必须存在的文件
会在包加载时被自动调用
all
记录from 包 import * 语句需要导入的模块
案例:
1. 根据下列结构,创建包与模块。
my_ project /
main.py
common/
__init__.py
list_helper.py
skill_system/
__init__.py
skill_deployer.py
skill_manager.py
2. 在main.py中调用skill_manager.py中实例方法。
3. 在skill_manager.py中调用skill_deployer.py中实例方法。
4. 在skill_deployer.py中调用list_helper.py中类方法。
搜索顺序
内置模块
sys.path 提供的路径
标准库模块
time
import time
# 获取当前时间戳 1970年1月1日 到现在 经过的秒数
print(time.time())# 1579161897.7612894
# 获取当前时间元组(年,月,日,时,分,秒,星期,这年的第几天,与夏令时的偏移量)
print(time.localtime())
# 时间戳 --> 时间元组
time_tuple = time.localtime(1579161897.7612894)
# 时间元组 -->时间戳
print(time.mktime(time_tuple))
# 时间元组 --- > str
# 20/01/16 16:04:57
print(time.strftime("%y/%m/%d %H:%M:%S",time_tuple))
# 2020/01/16 16:04:57
print(time.strftime("%Y/%m/%d %H:%M:%S",time_tuple))
# str--- > 时间元组
new_time_tuple = time.strptime("2020/01/16 16:04:57","%Y/%m/%d %H:%M:%S")
print(new_time_tuple)
# 定义函数,根据生日(年月日)计算活了多少天。
# 公式:当前时间 - 生日
import time
def life_days(year, month, day):
str_time = "%d-%d-%d" % (year, month, day)
time_tuple = time.strptime(str_time, "%Y-%m-%d")
life_seconds = time.time() - time.mktime(time_tuple)
return int(life_seconds / 60 / 60 / 24)
print(life_days(1996, 4, 15))
ali_ali123
发布了13 篇原创文章 · 获赞 2 · 访问量 326
私信
关注