首页 > 其他 > 详细

小甲鱼第51讲:《__name__="__main__"、搜索路径和包》课后练习题

时间:2015-11-16 10:33:30      阅读:361      评论:0      收藏:0      [点我收藏+]

测试题:

0. __name__属性指的是在调用该模块的时候调用的函数名称,方便在模块的被调用的时候,模块内部被调用的函数不会被运行。


1. 当模块作为主程序运行的时候,__name__属性的值是“__main__”,当该模块被调用导入到另一个模块的时候,"__name__"属性值为模块名称。


2. 通过sys模块的path变量显示搜索路径:

1 import sys
2 sys.path

 

3. 将相关模块文件的路径加入到搜索路径中,例如:

1 import sys
2 sys.path.append("*****") # *****表示模块坐在路径

但是这里小甲鱼推荐把包最好都存放在python的安装路径里面的sitepackages文件夹内,顺便说一下,安装包的时候,比如numpy直接在官网下载wheel源代码文件然后存入sitepackages文件夹内就可以直接调用numpy这个包里面的所有模块和函数了,再次感谢开源的好处。

4. urllib属于包,request属于包里面的模块

5. 包其实就是在普通文件夹内添加了文件“__init__.py”的模块文件,文件夹内拥有模块,此时文件夹就是一个包了,所以文件夹是否是包的最大区别就是是否拥有“__init__.py”模块。其中这个__init__.py文件就是一个初始化文件,可以为空,也可以写入一些初始化的代码。

动动手:

0. 修改以下程序:

 1 # a.py
 2 import b
 3 
 4 def x():
 5     print(x)
 6 
 7 b.y()
 8 
 9 # b.py
10 import a
11 
12 def y():
13     print(y)
14 
15 a.x()
16 
17 执行 b.py 引发下边异常:
18 >>> 
19 Traceback (most recent call last):
20   File "/Users/FishC/Desktop/b.py", line 1, in <module>
21     import a
22   File "/Users/FishC/Desktop/a.py", line 1, in <module>
23     import b
24   File "/Users/FishC/Desktop/b.py", line 6, in <module>
25     a.x()
26 AttributeError: module object has no attribute x

最好的方式,是单独建立一个模块,用来调用a和b模块,因为a与b两个模块不会被互相调用,否则因为任何一个模块的不完整而报错:

1 # test.py
2 
3 import a
4 import b
5 a.x()
6 b.y()

还有一个方式,如果不想建立一个单独的模块,可以这样(程序就不会报错了):

1 # a.py
2 # import b
3 
4 
5 def x():
6     print(x)
1 # b.py
2 import a
3 
4 
5 def y():
6     print(y)
7 
8 if __name__ == "__main__":
9     a.x()

 

小甲鱼第51讲:《__name__="__main__"、搜索路径和包》课后练习题

原文:http://www.cnblogs.com/wing1995/p/4968127.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!