一,模块
1,下面是hello.py脚本(模块),有两求Fibonacci的函数.
def fib1():a, b = 0, 1print('0-10内:')while a < 10:print(a, end=' ')a, b = b, a + bprint()def fib2(n):a, b = 0, 1L = []while a < n:L.append(a)a, b = b, a + bprint(L)return L
- 导入hello.py模块
# dos 进入hello.py 的文件夹下 打开python交互式窗口
import hello
导入模块后,会有一个hello.py编译的文件
- 调用模块fib函数
f = hello.fib1
f()
'''
0-10内:
0 1 1 2 3 5 8
'''
f = hello.fib2
f(100)
- 导入模块的方式(dos在hello.py文件夹下的py交互式窗口)
import hello
from hello import *
from hello import fib1, fib2
from hello import fib1 as f1
'''
from import * as 这几个关键字随便用
只要满足语法import module / from module import name
'''
二,包的导入使用
- python 包的导入方式
python 包是多个模块的集合。
1, 单个模块
import sound.effects.echo
用里面的函数
sound.effects.echo.func()
2, 导入子模块
from sound.effects import echo
echo.func()
3, 直接从包中导入函数或者变量
from sound.effects.echo import func
func()
4, 不同文件目录下的导包
import sys
sys.path.append(‘hello.py所在的路径, / 或者 \’)
import hello
hello.func()
总结
from package import item
如果item不存在,importError
import item.item.item 最后一个item是模块,或者包函数都行, 但前两个item得是包
-
用 __all__来约束导特定的包
python从包中导入*
from sound.effects import *
执行上面的代码会导入所以包,但有些包是不必要的,可以在__init__.py里面的
all = [“echo”, “surround”, “reverse”]来约束。 -
__path__变量导入其它的包
包支持另一个特殊属性, __path__ 。它被初始化为一个列表,
其中包含在执行该文件中的代码之前保存包的文件 init.py 的目录的名称。
这个变量可以修改;这样做会影响将来对包中包含的模块和子包的搜索。
虽然通常不需要此功能,但它可用于扩展程序包中的模块集。