Day06-Python3模块
1、概述:
前面基本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。即引入外部的python文件供本文件使用。
2、import语句:
java、js中都有用import,python中import的使用和js是否相似,都实现了模块化。
想使用 Python 源文件,只需在另一个源文件里执行 import 语句,将外部的源文件导入本程序。
例如:
import support
#support.py文件中包含print_func()方法
support.print_func("Runoob")
如果你打算经常使用一个函数,你可以把它赋给一个本地的名称:
>>> fib = fibo.fib >>> fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377
3、form...import...语句
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。
例如:
# 将fibo.py文件中的fib,fib2函数导入,并不会导入整个文件 from fibo import fib, fib2
导入整个文件:
from modname import *
这与import modename作用一样。
4、_name_属性
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。__name__ 与 __main__ 底下是双下划线, _ _ 是这样去掉中间的那个空格。
5、dir()函数
内置的函数 dir() 可以找到模块内定义的所有名称。
6、包
一提到包,就会想到java中的包。没错,python中的包也是一种管理 Python 模块命名空间的形式。
在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。
目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包,主要是为了避免一些滥俗的名字(比如叫做 string)不小心的影响搜索路径中的有效模块。
最简单的情况,放一个空的 :file:__init__.py就可以了。当然这个文件中也可以包含一些初始化代码或者为(将在后面介绍的) __all__变量赋值。
用户可以每次只导入一个包里面的特定模块,比如:
import sound.effects.echof
这就是导入了sound.effects下的echo。使用时,必须使用全名:
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
当然,也可以使用import...from...来导入子模块:
from sound.effects import echo
这同样会导入子模块: echo,并且他不需要那些冗长的前缀,所以他可以这样使用:
echo.echofilter(input, output, delay=0.7, atten=4)
如果直接导入一个函数或者变量,那么就会自动导入该函数或者变量所属的模块,并且可以直接使用该函数或者变量,不用通过模块名称访问。

浙公网安备 33010602011771号