【摘要】在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注python的问题,今天环球网校就来和大家讲讲Python包的导入方法。

再次强调,包的本质就是模块,因此导入包和导入模块的语法非常类似。无论导入我们自定义的包,还是导入从他处下载的第三方包,导入方法可归结为以下 3 种。

import 包名[.模块名 [as 别名]]from 包名 import 模块名 [as 别名]from 包名.模块名 import 成员名 [as 别名]用 [] 括起来的部分,是可选部分,即在使用时可以忽略。

与模块类似,包被导入之后,会在包目录下生成一个 __pycache__ 文件夹,并在该文件夹内为包生成一个 __init__.cpython-36.pyc 文件。

1、Python包的导入方法——import 包名[.模块名 [as 别名]]

以前面创建好的 first_package 包为例,导入 module1 模块并使用该模块中成员可以使用如下代码:

import first_package.module1first_package.module1.display(20)

运行结果为:

this is first_package

20

可以看到,通过此语法格式导入包中的指定模块后,在使用该模块中的成员(变量、函数、类)时,需添加“包名.模块名”为前缀。当然,如果使用 as 给包名.模块名”起一个别名的话,就使用直接使用这个别名作为前缀使用该模块中的方法了,例如:

import first_package.module1 as modulemodule.display(20)

运行该程序会发现,其结果和上面完全一样。

另外,从以上输出结果可以看出,当导入指定包时,程序会自动执行该包所对应文件夹下的 __init__.py 文件中的代码。需要注意的是,当使用此语法格式仅导入包名时,例如:

import first_packagefirst_package.module1.display(20)

直接导入包名,并不会将包中所有模块全部导入到程序中,它的作用仅仅是导入并执行包下的 __init__.py 文件,因此,运行该程序,在执行 __init__.py 文件中代码的同时,还会抛出 AttributeError 异常(访问的对象不存在):

this is first_package
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\demo.py", line 2, in
first_package.module1.display(20)
AttributeError: module 'first_package' has no attribute 'module1'

我们知道,包的本质就是模块,导入模块时,当前程序中会包含一个和模块名同名且类型为 module 的变量,导入包也是如此:

# 导入first_package包(模块)
import first_package
print('==========')
print(first_package.__doc__)
print(type(first_package))
print(first_package)