若是你从 Python 解释器退出再进入,那么你定义的全部的方法和变量就都消失了。为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。模块是一个包含全部你定义的函数和变量的文件,其后缀名是.py。模块能够被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。python
import sys print('命令行参数以下:') for i in sys.argv: print(i) print('\n\nPython 路径为:', sys.path, '\n')
import语句函数
想使用 Python 源文件,只需在另外一个源文件里执行 import 语句,一个模块只会被导入一次,无论你执行了多少次import。这样能够防止导入模块被一遍又一遍地执行。当咱们使用import语句的时候,Python解释器是怎样找到对应的文件的呢?这就涉及到Python的搜索路径,搜索路径是由一系列目录名组成的,Python解释器就依次从这些目录中去寻找所引入的模块。这看起来很像环境变量,事实上,也能够经过定义环境变量的方式来肯定搜索路径。搜索路径是在Python编译或安装的时候肯定的,安装新的库应该也会修改。搜索路径被存储在sys模块中的path变量。spa
sys.path 输出是一个列表,其中第一项是空串'',表明当前目录(如果从一个脚本中打印出来的话,能够更清楚地看出是哪一个目录),亦即咱们执行python解释器的目录(对于脚本的话就是运行的脚本所在的目录)。命令行
若是你打算常常使用一个函数,你能够把它赋给一个本地的名称:code
>>> fib = fibo.fib >>> fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中对象
>>> from fibo import fib, fib2 >>> fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377
from xx import*和import XX的区别blog
funcname 被直接导入到本地名字空间去了,因此它能够直接使用,而不须要加上模块名的限定* 表示,该模块的全部公共对象(public objects)都被导入到当前的名称空间,也就是任何只要不是以”_”开始的东西都会被导入。 字符串
深刻模块it
模块除了方法定义,还能够包括可执行的代码。这些代码通常用来初始化这个模块。这些代码只有在第一次被导入时才会被执行。每一个模块有各自独立的符号表,在模块内部为全部的函数看成全局符号表来使用。因此,模块的做者能够放心大胆的在模块内部使用这些全局变量,而不用担忧把其余用户的全局变量搞混。从另外一个方面,当你确实知道你在作什么的话,你也能够经过 modname.itemname 这样的表示法来访问模块内的函数。编译
__name__属性
一个模块被另外一个程序第一次引入时,其主程序将运行。若是咱们想在模块被引入时,模块中的某一程序块不执行,咱们能够用__name__属性来使该程序块仅在该模块自身运行时执行。
if __name__ == '__main__': print('程序自身在运行') else: print('我来自另外一模块')
每一个模块都有一个__name__属性,当其值是'__main__'时,代表该模块自身在运行,不然是被引入。注意__name__ 与 __main__ 底下是双下划线。
dir( )函数
内置的函数 dir() 能够找到模块内定义的全部名称。以一个字符串列表的形式返回,
>>> import fibo, sys >>> dir(fibo) ['__name__', 'fib', 'fib2'] >>> dir(sys)
若是没有给定参数,那么 dir() 函数会罗列出当前定义的全部名称。
包
包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。注意当使用 from package import item 这种形式的时候,对应的 item 既能够是包里面的子模块(子包),或者包里面定义的其余名称,好比函数,类或者变量。import 语法会首先把 item 看成一个包定义的名称,若是没找到,再试图按照一个模块去导入。若是还没找到,抛出一个 :exc:ImportError 异常。反之,若是使用形如 import item.subitem.subsubitem 这种导入形式,除了最后一项,都必须是包,而最后一项则能够是模块或者是包,可是不能够是类,函数或者变量的名字。