一 模块调用的几种样式
1. import 模块名
2. from 模块名 import 类名 (或 方法名 或 全局变量)
3. from 模块名 import * (导入模块名下的所有类名,方法,全局变量
4. from 模块名 import 类名(或 方法名 或 全局变量) as 别名
(别名:用来简化原来太长的名字)
二 python如何定位模块
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
1. 当前目录
2. 如果不在当前目录,则搜索PYTHONPATH下的每个目录
3. 如果都找不到,Python会查看默认路径
三 自定义模块方法一
(1)认识变量 __name__
__name__ :是当前模块执行过程中的名称。
如果当前程序运行在这个模块中,__name__ 的名称就是__main__
__main__ :一般作为函数的入口,类似于C语言,尤其在大型工程中,常常有
if __name__ == "__main__"
来表明整个工程开始运行的入口。使用这个变量的结果可以判断是直接执行的python脚本还是被引入执行的,从而能够有选择性的执行测试代码
例子:
def my_sum(a,b):
return a+b
def main():
ret=my_sum(10,20)
print(ret)
if __name__ == '__main__':
main()
四 自定义模块方法二
(1)使用 __all__
只有使用 from xxx import * 的时候,__all__ 才能产生作用。
如果在一个模块中,定义了很多的类,方法,全局变量,如果使用from xxx import * 的方法使用该模块,而又不允许使用模块中的某几个类,某几个方法或者某几个全局变量,那么就需要在该模块里写上 __all__=[ ] ,在列表里写上允许导入的类,方法,全局变量,使得不在这个列表里注册,就不能使用该类,方法或者全局变量,可以类似这样写:
__all__=["name","sum","Student"]
==================================
python中的包
(1)python中的包会有一个 __init__.py 模块。在python3.x没有__init__.py也可以正常使用,但是在python2.x中必须有__init__.py
(2)在包中的__init__.py中定义all=[在这里面添加你想要导入的模块名]
(3)同理在每个模块下__all__=[ ]添加你允许导入的类名,方法名,全局变量
(4)使用from 包名.模块名 import * 导入模块(1)(2)(3)才能生效
其他导入方法:import 包名.模块名

