import 语句
想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:
import module1[, module2[,... moduleN]
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
from…import 语句
Python的from语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:
from modname import name1[, name2[, ... nameN]]
例如,要导入模块 fibo 的 fib 函数,使用如下语句:
>>> from fibo import fib, fib2 >>> fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377
这个声明不会把整个fibo模块导入到当前的命名空间中,它只会将fibo里的fib函数引入进来。
from…import* 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
from modname import *
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
__name__属性
一个模块被另一个程序第一次引入时,其主程序将运行。实际上在导入的时候,有一部分代码我们是不希望被运行的。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
#!/usr/bin/python3 # Filename: using_name.py if __name__ == '__main__': print('程序自身在运行') else: print('我来自另一模块')
运行输出如下:
$ python using_name.py
程序自身在运行
$ python >>> import using_name 我来自另一模块 >>>
说明: 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。
说明:__name__ 与 __main__ 底下是双下划线, _ _ 是这样去掉中间的那个空格。
主模块的执行,放在if判断里,可以防止其他程序执行。
导入模块的所有方法:
import module_name #表示将模块中的所有代码加载到这个位置并赋值给变量module_name,并执行模块 import libs.module_name #表示从libs目录下导入模块文件module_name,调用方法:libs.module_name.func() import module1_name,module2_name #同时导入多个模块 from module_name import login,logout #相当于将module_name\login中的代码拿到当前位置执行 from module_name import login as module_name_login #对导入模块中的方法取别名 from libs.module_name import func #从目录下的模块文件中导入方法func,调用:func()
import本质:
导入模块的本质就是把Python文件解释一遍。
导入包的本质就是执行该包下的__init__.py文件。