模块与包
模块
模块中的代码
from math import pi import time # __all__ = ['read1','read2'] 与 from my_module import * 一起使用 print('in my module') money = 20 def read1(): print('in read 1',money) def read2(): print('in read 2') def login(): print('逻辑') if __name__ == '__main__': #当在脚本中运行时 __name__ 为 __main__ login() # 用作测试脚本时使用,当模块被调用也不会执行
# 在脚本外调用__name__ 会显示__name__所在模块的名字
- 调用模块的几种方式:
#方法一:
import my_module my_module.read1() #调用模块方法
print(my_module.money) #调用模块中变量
#把所有模块中的方法都放进内存中,占用内存大
############ #方法二: from my_module import read1,read2 as r2,money
#模块中的方法名字如果与调用文件中的冲突 可以把调用模块方法重命名 read1() r2() print(money) #只根据自己的需要导入模块中的方法,占内存小 如果你导入的模块过大,而你要用的功能很少可以使用 ############# #方法三:
from my_module import * #与模块中的__all__=['调用的方法名']一起使用时,all中有啥才能掉啥,如果不写__all__什么都能调用,如果__all__=[] 啥都不能调
#模块中的名字不要和自己文件中的冲突 冲突时用自己文件中的
read1() read2() print(money)
- 调用模块中模块的方式:
#方法一: 当前程序中没有导入时间模块,但my_module中导入时间模块了
import my_module my_module.time.sleep(10) #调用my_module中的时间模块 睡了10秒
my_module.read1() #方法二: 程序中没有调入math模块 但程序中可以使用pi
from my_module import *
print(pi) #
模块中查看方法
sys.modules:当前引入的所有模块
sys.path:导入模块的时候依据的路径列表
查看一模块中所有的方法与变量
dir(模块名) # 列出模块中的方法和导入的模块和变量名称
dir() # 不加变量,只是列出当前模块中的方法和导入的模块和变量名称
dir()不会列举出内建函数或者变量的名字,它们都被定义到了标准模块builtin中,可以列举出它们,
import builtins dir(builtins)
包
#在manage.py模块中,调用versions.py模块中create_resource方法
from ..api.versions import create_resource def main(): print('from manage.py') #在versions.py模块中
def create_resource(conf): print('from version.py: ',conf) #在包外调用包中 manage方法 from gl.cmd import manage manage.main() manage.create_resource('ccc')
#在manage.py模块中,调用versions.py模块中create_resource方法 from ..api.versions import create_resource def main(): print('from manage.py') #在versions.py模块中 def create_resource(conf): print('from version.py: ',conf) #在cmd包中的__init__.py中
from . import manage
#在包外调用包中 manage方法
from gl import cmd
cmd.manage.main()
cmd.manage.create_resource('ccc')
模块与包
http://www.cnblogs.com/Eva-J/articles/7292109.html#_label13