'''
http://c.biancheng.net/
创建第一个 Python 包
'''
print('http://c.biancheng.net/python/')
可以看到,__init__.py 文件中,包含了 2 部分信息,分别是此包的说明信息和一条 print 输出语句。
#module1.py模块文件
def display(arc):
print(arc)
#module2.py 模块文件
class CLanguage:
def display(self):
print("http://c.biancheng.net/python/")
现在,我们就创建好了一个具有如下文件结构的包:
my_package
┠── __init__.py
┠── module1.py
┗━━ module2.py
import 包名[.模块名 [as 别名]]from 包名 import 模块名 [as 别名]from 包名.模块名 import 成员名 [as 别名]注意,导入包的同时,会在包目录下生成一个含有 __init__.cpython-36.pyc 文件的 __pycache__ 文件夹。
import my_package.module1
my_package.module1.display("http://c.biancheng.net/java/")
运行结果为:
http://c.biancheng.net/java/
可以看到,通过此语法格式导入包中的指定模块后,在使用该模块中的成员(变量、函数、类)时,需添加“包名.模块名”为前缀。当然,如果使用 as 给包名.模块名”起一个别名的话,就使用直接使用这个别名作为前缀使用该模块中的方法了,例如:
import my_package.module1 as module
module.display("http://c.biancheng.net/python/")
程序执行结果为:
http://c.biancheng.net/python/
import my_package
my_package.module1.display("http://c.biancheng.net/linux_tutorial/")
直接导入包名,并不会将包中所有模块全部导入到程序中,它的作用仅仅是导入并执行包下的 __init__.py 文件,因此,运行该程序,在执行 __init__.py 文件中代码的同时,还会抛出 AttributeError 异常(访问的对象不存在):
http://c.biancheng.net/python/
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\demo.py", line 2, in <module>
my_package.module1.display("http://c.biancheng.net/linux_tutorial/")
AttributeError: module 'my_package' has no attribute 'module1'
import my_package print(my_package) print(my_package.__doc__) print(type(my_package))运行结果为:
http://c.biancheng.net/python/
<module 'my_package' from 'C:\\Users\\mengma\\Desktop\\my_package\\__init__.py'>
http://c.biancheng.net/
创建第一个 Python 包
<class 'module'>
from my_package import module1
module1.display("http://c.biancheng.net/golang/")
运行结果为:
http://c.biancheng.net/python/
http://c.biancheng.net/golang/
from my_package import module1 as module
module.display("http://c.biancheng.net/golang/")
此程序的输出结果和上面程序完全相同。from 包名 import * 这种写法,它和 import 包名 的作用一样,都只是将该包的 __init__.py 文件导入并执行。
from my_package.module1 import display
display("http://c.biancheng.net/shell/")
运行结果为:
http://c.biancheng.net/python/
http://c.biancheng.net/shell/
from my_package.module1 import display as dis
dis("http://c.biancheng.net/shell/")
该程序的运行结果和上面相同。
from my_package.module1 import *
display("http://c.biancheng.net/python")
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有