第二十四天- 模块导入 import from xxx import …

2018-11-20 03:26:24来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

 

# 模块:
# 模块就是?个包含了python定义和声明的?件,?件名就是模块的名字加上.py后缀
# 换句话说我们?前写的所有的py?件都可以看成是?个模块
# 为何用模块:写大项目时,把相关的功能进?分离,方便开发和维护


# import:
# 先创建?个yitian.py,在该?件中创建?些武林前辈和?些打?场景
 1 print("片头曲...")
 2 
 3 main_person_man = "张无忌"
 4 main_person_woman = "赵敏"
 5 
 6 bad_person_one = "陈友谅"
 7 bad_person_two = "灭绝师太"
 8 bad_person_three = "周芷若"
 9 bad_person_four = "宋青书"
10 
11 
12 def fight1():
13     # global main_person_man  # 改变了当前全局名称空间
14     # main_person_man = "麻花藤"
15     print("光明顶%s粉碎了%s的重大阴谋"%(main_person_man,bad_person_two))
16 
17 
18 def fight2():
19     print("屠狮大会%s粉碎了%s的阴谋"%(main_person_man,bad_person_three))
20 
21 
22 print("片尾曲...")
23 
24 if __name__ == '__main__':  # __name__可以屏蔽掉一些测试代码
25     print(__name__)  # 打印结果 __main__
View Code
# 再定义一个jinyong,模块中引入yitian模块
 1 import yitian
 2 import yitian  # 模块若已导入 则不会重复导入(sys.modules)
 3 
 4 from yitian import fight1
 5 
 6 print("金庸...")
 7 yitian.fight1()
 8 
 9 print(yitian.bad_person_three)  # 使用模块名可直接访问模块中的内容(变量、类、函数)
10 print(yitian.main_person_woman)
11 
12 '''
13 片头曲...
14 片尾曲...
15 光明顶张无忌粉碎了灭绝师太的重大阴谋
16 周芷若
17 赵敏
18 '''
# 由上可知
# 模块导入时做的事情
# 1. 先去sys.modules中查看当前导入的模块是否已经被导入.
如果该模块已经导入。 则不会重复导入
# 2. 若未导入,开辟一个新的名称空间。在该空间中执行模块中的代码
# 3. 给该空间一个名称。把该名称(py文件命名)引入到当前模块中(可使用globals查看模块的名称空间)
# print(globals())

# 如果我们在不同的模块中引入了同?个模块. 并且在某?个模块中改变了被引入模块中的全局变量.
# 则其他模块看到的值也跟着边. 原因是python的模块只会引入?次. ?家共享同?个名称空间
 1 # 直接无法改变模块内容
 2 from yitian import main_person_man,fight1
 3 main_person_man = "灭绝"  # 只改变了当前作用域
 4 print(main_person_man)
 5 fight1()  # 光明顶张无忌粉碎了灭绝师太的重大阴谋
 6 
 7 # 非要改变只能在引入时改变(强烈不推荐使用)
 8 import yitian
 9 yitian.main_person_man = "灭绝"
10 
11 print(yitian.fight1())  # 光明顶灭绝粉碎了灭绝师太的重大阴谋

# # import jinyong as jy  # 导入的模块可以给出一个别名,但这样原名就用不了了
# # import yitian,jinyong,re,json # 可以同时导入

# from xxx import * (不推荐使用)
# 等同 import xxx ,但若导入的模块有写 __all__ 那你就只能引用__all__的内容,且容易名称冲突!

# __name__可以屏蔽掉一些测试代码
# __name__如果是启动模块 值是main
# 若是导入模块 值是被导入的模块名称
 






标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:模块语法

下一篇:记一次简单爬虫(豆瓣/dytt)