发布于2019-08-07 09:36 阅读(1075) 评论(0) 点赞(5) 收藏(3)
要先导入模块,才能调用用模块中定义的函数(才会有该模块的代码提示)。
import 模块 #导入一个模块 import 模块1,模块2,.... #同时导入多个模块 from 模块 import 部分 #导入一部分 from 模块 import 部分1,部分2,部分3.... #导入一个模块的多个部分 from 模块 import * #导入整个模块
以上的 模块 均可换为 模块.子模块 ,表示只导入子模块|从子模块中导入。
导入之后就可以通过 模块名.方法名() 调用模块中的函数了。
不管导入一个相同模块多少次,只会在第一次时导入。
比如写十行 import math ,只有第一个 import math 会导入math模块,避免了重复导入模块。
import math print(dir(math)) """ dir(模块名) #列出该模块所有的成员变量、方法。需要先导入对应的模块。以字符串列表的形式返回。dir()是python的内置函数。 """
一个python文件(.py)就是一个python模块,一个模块中可以定义多个类,定义多个方法,可以有可执行代码。
新建一个python文件:module1.py
print("module start") #可执行代码 class Test: #定义类 def out(self): print("test class") print("module1 running") #可执行代码 def module1_test(): #定义方法 print("test function") print("module1 over") #可执行代码
一个模块有2个默认属性:__main__,__name__
__main__即这个模块中所有的可执行代码。
导入一个模块时,会自动执行这个模块的__main__部分:
新建python文件module2.py
import module1
执行module2.py,结果如下:
module start
module1 running
module1 over
导入一个模块时,会自动执行这个模块的__main__部分(所有可执行代码)。
所以我们常常在__main__中做一些这个模块的初始化操作,习惯把这些代码放在文件开头。
如果是在模块的类中、函数中,__name__表示当前执行的python文件的文件名(不带后缀.py)。
如果是在模块的可执行代码(__main__)中,__name__表示当前的模块(.py文件)是主动执行的,还是被调用的。如果__name__的值是"__main__则表示当前模块(.py文件)是主动执行的。
module1.py如下:
if __name__=="__main__": print("主动调用") else: print("被动调用") class Test: #定义类 def out(self): print("test class") def module1_test(): #定义方法 print(__name__) #在模块的类、方法中使用 print("test function")
module2.py如下:
import module1 module1.module1_test()
执行module1.py:
主动调用
执行module2.py:
被动调用
module1
test function
有时候我们需要在主动执行时做一种操作,在被调用时做不同的操作,就可以这样来实现:
if __name__=="__main__": #主动调用时做的操作 else: #被动调用时做的操作
包相当于一个命名空间,各个包中的标识符是独立的,互不干扰。
一个包中可以有多个模块(.py文件),也可以有多个子包。
一个包(包括子包),都要有__init__.py文件,这是这个包的索引文件(目录文件),相当于书的索引、目录,标识这本书(这个模块)有哪些章节(python文件|模块)。
__init__.py文件有一个属性__all__,即这个包的索引、目录,我们 import 包 或者 from 包 import * 时(包可以看做一个大模块),python解释器会找到这个包的__init__.py中的__all__属性,根据其属性值导入这个包中的模块。
比如包school中有3个py文件(模块):student.py、teacher.py、leader.py。
__init__.py文件:
__all__=["student","teacher"] #字符串列表,py文件名(不带后缀)
我们 import school 或 from school import * 导入整个包时,只会导入student、teacher这2个py文件,不会全部导入。
一般__init__.py文件是空的,这时默认__all__的值是包下所有py文件(除去__init__.py)的字符串列表,所以会全部导入包下的py文件(模块)。
习惯把包中的入口文件(我们要执行的py文件,程序入口,相当于c/c++、java中的main()函数),命名为__main__.py
1、不使用包
调用函数: py文件名.函数名(参数表)
2、使用包,不使用子模块
调用函数: 包名.py文件名.函数名(参数表)
使用子包时,以 包名.子包 作为包名即可。
作者:天青色等烟雨
链接:https://www.pythonheidong.com/blog/article/9420/75e03e186f25e89d421a/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!