Python Day5
Posted 90500042陈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Day5相关的知识,希望对你有一定的参考价值。
一:区分Python文件的2种用途
1个Python文件的2种用途
1.1 当作脚本执行: if __name__ == \'__main__\':
1.2 当作模块导入使用 if __name__ == \'模块名\':
if __name__ == \'__main__\':
pass
spam.py
说明 在Python内有一种方法
__name__ 这种方法在文件当中默认等于__main__ (此处为2个_) 这样的作用就是。代码可以调试的时候运行的是整个spam.py
1 money = 1000 2 3 4 def index(): 5 print(\'in the index\', money) 6 7 8 def bbs(): 9 print(\'in the bbs\', money) 10 11 12 def delphi(): 13 print(\'in the delphi\', money) 14 15 16 if __name__ == \'__main__\': 17 bbs() 18 delphi() 19 index() 20 print(\'调试功能\') 21 22 print(__name__) # __main__
写完后本地调用直接运行;其他地方需要引用默认不会输出
二:模块的搜索路径
1 内存
sys.modules 查看已经加载到内存的模块
2 内置模块 sys 内置模块都是C语言写的
3 自己定义的模块 sys.path-->查看当前环境变量
需要加入到环境变量才可以执行:
自己定义模块的时候 不能定义跟内置一样的模块
三: 包
1.什么是包
包就是1个包含__init__.py的文件夹,(可以往该文件夹下放一堆子模块)
在python3中,即时包的文件夹下没有__init__.py文件 python3也不会报错,但是python2会报错
之所以这样做是因为在import package1的时候,看似导入的是package1 实际上导入的是它下面的__init__.py文件
示例如下
在__init__.py中写入:
然后在包的导入.py文件中执行导入操作后的执行结果
================示例1 begin===================
init文件
解释如下:
当包的使用.py运行时,import package1 实际上是导入运行了package1文件夹下的init文件;
然后在执行
from package1 import m1
在package1下的m1被导入了init当中
因而最后包的导入中的package1.m1.func()就可以运行了
================示例1 end===================
注意核心是:根据执行文件所在的路径去找,只有执行文件所在的路径才会加到环境变量当中
2 包的使用
注意:但凡在导入时,出现. (点) 这是导入包才用的语法
点的左边必须是一个包;使用的时候没有限制
以上的导入方式太麻烦了;那么针对此;有没有简便的方法?
=====================================示例2==================================================
要实现该功能,只要在D:\\Document\\Python0404\\day5\\模块和包\\测试2\\package1\\__init__.py中写入
上面的导入方式是绝对导入
之所以要这么做 是为了区分开开发者和使用者
=============================================示例3===========================================
原先结构不变;
程式照样运行
注意点 相对导入是从当前init的路径下开始找 . 点 表示当前文件夹
一个点就表示往上一层
1 from ..m1 import func1 2 def func2(): 3 func1() 4 print(\'in the func2 m2\')
以上是关于Python Day5的主要内容,如果未能解决你的问题,请参考以下文章