测试题:

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

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

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

 import sys
sys.path

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

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

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

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

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

动动手:

0. 修改以下程序:

 # a.py
import b def x():
print('x') b.y() # b.py
import a def y():
print('y') a.x() 执行 b.py 引发下边异常:
>>>
Traceback (most recent call last):
File "/Users/FishC/Desktop/b.py", line 1, in <module>
import a
File "/Users/FishC/Desktop/a.py", line 1, in <module>
import b
File "/Users/FishC/Desktop/b.py", line 6, in <module>
a.x()
AttributeError: 'module' object has no attribute 'x'

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

 # test.py

 import a
import b
a.x()
b.y()

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

 # a.py
# import b def x():
print('x')
 # b.py
import a def y():
print('y') if __name__ == "__main__":
a.x()

最新文章

  1. svg学习(六)line
  2. Java中处理异常中return关键字
  3. ul li横向排列及圆点处理
  4. oracle的簇的管理
  5. C++ Primer : 第十二章 : 文本查询程序
  6. [OFBiz]开发 一
  7. POJ 2250(LCS最长公共子序列)
  8. OpenStack虚机相关错误
  9. Special Pythagorean triplet
  10. [UWP]了解模板化控件(5):VisualState
  11. LeetCode(31)-Factorial Trailing Zeroes
  12. 转载:configure生成的文件(1.5.3)《深入理解Nginx》(陶辉)
  13. B-树和B+树的应用
  14. eclipse 安装properties编辑器,显示中文
  15. caffe Python API 之Inference
  16. kali&amp;BT安装好之后无法上网(包括Wifi)或者无法获得内网IP解决方法
  17. 使用swig将C/C++代码转为JAVA接口(Windows平台)
  18. koa2简单demo
  19. 北京Uber优步司机奖励政策(1月16日)
  20. AtCoder Regular Contest 103 题解

热门文章

  1. 【转载】小米2进入recovery的方法
  2. HTTPS的七个误解
  3. 6天的巴厘岛旅行 I love Bali
  4. cocos2d-x之xml文件读取初试
  5. SharpDX之Direct2D教程II——加载位图文件和保存位图文件
  6. 【Ext.Net学习笔记】02:Ext.Net用法概览、Ext.Net MessageBus用法、Ext.Net布局
  7. C#委托与C语言函数指针及函数指针数组
  8. 数据结构Java实现03----单向链表的插入和删除
  9. Windows安装 ANT
  10. c#解决窗体假死的一种方法