Python 3 教程 在线

1143Python3 模块

关于导入模块,自己写的程序,自己也可以把它保存下来,以后需要的时候导入使用,例如下面所示。

我有个代码名称为 test1.py,它的所在路径为 D:\test 下面。那我只需要完成以下步骤就可以把它作为模块 import 到其他代码中了。

  • 1.import sys
  • 2.sys.path.append("D:\\test")

在 test2.py 中我们就可以直接 import test1.py 了。成功导入后,test1中 的方法也就可以在 test2 中进行使用。

import test1

1142Python3 模块

回楼上,经测试,用:

from modname import *

这种方式进行导入,如果不同模块之间有相同的函数命名,最后导入的会覆盖前面的,也就是说只会调用到最后导入进的函数。

1141Python3 模块

回楼上:

在需要导入包中所有模块时,import* 还是有意义的。

只需要在 __init__.py 文件里面将所有模块名定义在列表 __ALL__ 中就能解决你最后的担忧。

1140Python3 模块

from modname import *

这一句里的星号应该是沿用自正则中一样的意义,表示的是全部的意思,文中指出少用这种导入方式,我觉得是如果将一个模块的所有函数名导入当前命名空间中,如果不同模块包含了函数名相同的函数,或者是与自己编写得函数名相同将会导致混乱,而且在 debug 时还不容易发现。

1139Python3 数据结构

教程中遍历 dict 使用的 .items() 方法配合 for 循环,非常简明易懂,但有一项需要注意的是,在 for 循环中,使用单个变量和双变量的区别,注意观察以下两个例子的区别:

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
...     print(k, v)
...
gallahad the pure
robin the brave

===========================分隔线===========================

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k in knights.items():
...     print(k)
...
('gallahad', 'the pure')
('robin', 'the brave')

使用 k 和 v 两个变量时,将键与值分别赋予 k 和 v。使用 k 一个变量时,将对应的键与值作为一个整体赋给 k。所以,最终 print 的显示内容是有区别的。不只是此例,程序设计过程中有很多地方都会体现个体与整体的差异,虽然显示出来的结果非常相似,但逻辑上却是完全不同的。