赞
踩
模块是什么?
模块实际上就是 以.py为结尾的文件
注意点:自定义的模块尽量不要和系统模块重名
模块内部封装了很多实用的功能,有时在模块外部调用就需要将其导入,导入模块简单划分,实际上就只有两种:
详细一点划分有五种:
sys.path 返回导入模块时的搜索路径集,是一个list列表。
可以添加新的模块:
In [37]: sys.path.insert(0,"/home/python/xxxx")
In [38]: sys.path
Out[38]:
['/home/python/xxxx',
'',
'/usr/bin',
'/usr/lib/python35.zip',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-x86_64-linux-gnu',
'/usr/lib/python3.5/lib-dynload',
'/usr/local/lib/python3.5/dist-packages',
'/usr/lib/python3/dist-packages',
'/usr/lib/python3/dist-packages/IPython/extensions',
'/home/python/.ipython']
模块被导入后,import module不能重新导入模块,重新导入需用reload
创建一个reload_test.py文件,里面写一个test方法
打开 ipython 终端导入 reload_test 模块
修改reload_test.py 文件中的test方法
再一次import reload_test 模块 然后调用test方法会发现值没变
原因:import 导入模块只会导入一次,因此即使模块被修改了,import也不会重新导入
解决方案
main.py
from send import *
from show import *
# 主流程
def main():
# 发女朋友
send()
# 秀恩爱
show()
if __name__ == '__main__':
main()
send.py
#import girl
from girl import *
# 发女朋友
def send():
print("发女朋友了,翠花是你的了")
#girl.have_girl = True
have_girl = True
show.py
# import girl
from girl import *
# 秀恩爱
def show():
if have_girl == True:
#if girl.have_girl == True:
print("我有女朋友了,好开心")
else:
print("单身贵族")
girl.py
# 共同变量模块
have_girl = False #False代表没有女朋友 True代表有女朋友
运行结果:
发女朋友了,翠花是你的了
单身贵族
是不是有点惊讶?结果难道,不应该是这样的吗:
发女朋友了,翠花是你的了
我有女朋友了,好开心
会产生这种情况的原因:
import girl 可以理解为地址的复制,也就是 引用 用来修改值
from girl import * 可以理解成内容的复制,也就是深拷贝,那么深拷贝有什么特点,深拷贝最大的特点就是数据独立。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。