版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一、模块和包管理
1.模块和包的定义
(1)模块(Moudle):模块是一个Python文件 ,以.py 结尾,包含了Python对象定义和Python语句。
(2)包(Package):Python中的包就是一个包含一个__init__.py文件的目录(文件夹)。
2.模块的作用
(1)模块让你能够有逻辑地组织你的Python代码段
(2)把相关的功能代码写到一个模块里能让你的代码更好用,更易懂。
(3)模块能定义函数,类和变量,模块里也能够包含可执行的代码。
3.模块导入模式:
import *
import.. as..
from...import...
from...import *
from...import...as
注意点:除了顶级目录,一层一层的剥开你的心
import sys
print(sys.path) # 返回的是一个列表
# @time:2019/10/26 18:44
# @Author:coco
# @File:test01.py
# @software:PyCharm
import random
a = 100
num = random.random()
print(num)
def work():
print('test01中的work函数')
# 魔法变量:__name__:
print('__name__的值: ',__name__)
# 在模块导入的时候不希望执行部分内容
if __name__ == "__main__":
num = random.random()
print(num)
运行结果:
# @time:2019/10/26 19:39
# @Author:coco
# @File:test02.py
# @software:PyCharm
""""
为什么代码中会有浅色的波浪线和红色的波浪线
浅色的波浪线:pycharm监测到你的这行代码不符合pop8规范(官方给出的编码规范)
红色的波浪线:pycharm监测到这行代码语法有问题或者变量找不到(没有被定义)
"""
# 方式一:导入整个模块
# import test01
#
# print(test01.a)
# test01.work()
from test01 import a # 导入时会把test01中的模块从上到下执行
print(a)
# 方式二:导入模块中的部分内容
from test01 import work # 这个波浪线并不是代码写错了,只是pycharm识别不出我们自定义的这个模块
work()
# 扩展
# 通过as给导入进来的方法或变量,重新起名字(别名)
from test01 import work as w1
w1()
def work():
print('test02中的work')
work()
w1()
import test01 as t1
print(t1.a)
t1.work()
# 导入多个内容
from test01 import a, work, num
print(a)
print(num)
# 导入模块中所有的内容(不推荐使用)
from test01 import *
print(a)
print(num)
work()
运行结果:
# @time:2019/10/26 20:11
# @Author:coco
# @File:test03.py
# @software:PyCharm
# 包导入
# 方式一
# from 包名 import 模块名
from pack01 import module1
module1.m_func1()
print(module1.aa)
print(module1.bb)
# 方式二:
# from 包名.模块名 import 模块中的变量或方法
from pack01.module1 import aa, bb
print(aa)
print(bb)
# 剥洋葱
# from pack01.ppp import p_m1
# from pack01.ppp.p_m1 import 变量或方法
运行结果:
4.模块导入的搜索路径
# @time:2019/10/26 20:30
# @Author:coco
# @File:p_m1.py
# @software:PyCharm
import sys
print(sys.path)
for i in sys.path:
print(i)
from py23_07day import zy_06day
# 这些路径是我们在导入包的时候,python解释器在搜索我们导入的包
# 从上往下搜索
# 检测不到第一条,第一条是我们运行文件所在的路径
"""
C:\Python37\python.exe D:/Python_test/py23_class/py23_08day/test011/p_m1.py
['D:\\Python_test\\py23_class\\py23_08day\\test011', 'D:\\Python_test\\py23_class', 'C:\\Python37\\python37.zip', 'C:\\Python37\\DLLs', 'C:\\Python37\\lib', 'C:\\Python37', 'C:\\Python37\\lib\\site-packages']
D:\Python_test\py23_class\py23_08day\test011
D:\Python_test\py23_class
C:\Python37\python37.zip
C:\Python37\DLLs
C:\Python37\lib
C:\Python37
C:\Python37\lib\site-packages
"""
运行结果: