包(package)

包是一个有层次的文件目录结构, 包含多个模块或子包

目录下有一个 特殊的文件 __init__.py

包名的 命名方式 和变量名一致,由字母、下划线组成

当项目较大,模块较多时,我们就可以把模块放在包中,便于管理。

 

Python包的导入

包本质上还是模块,因此导入模块的语法同样也适用于导入包,导入方法可归结为以下3种:

(1)import 包名[.模块名 [as 别名]]

(2)from 包名 import 模块名 [as 别名]

(3)from 包名.模块名 import 成员名 [as 别名]

用 [] 括起来的,是可选部分

注意,导入包的同时,会在包目录下生成一个含有__init__.cpython-36.pyc文件的 __pycache__ 文件夹。

 

import 包名[.模块名 [as 别名]]

以之前创建好的demoTest包为例,导入demoA模块,并使用该模块中成员

可以看到,通过此语法格式导入包中的指定模块后,在使用该模块中的成员(变量、函数、类)时,需添加"包名.模块名"为前缀。

如果使用as给"包名.模块名"起一个别名的话,可直接用这个别名作为前缀使用该模块中的方法

当直接导入指定包时,程序会自动执行该包所对应文件夹下的__init__.py文件中的代码

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

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

import my_package

print(my_package)

print(type(my_package))

运行结果为:

<module 'demoTest' from 'E:\\testGit\\demoTest\\__init__.py'>

<class 'module'>

 

from 包名 import 模块名 [as 别名]

仍然以导入demoTest 包中的demoA模块为例,使用此语法格式实现,代码如下:

可以看到,使用此语法格式导入包中模块后,在使用其成员时不需要带包名前缀,但需要带模块名作为前缀。

当然,我们也可以使用as为导入的模块定义别名,例如:

既然包也是模块,那么这种语法格式自然也支持 from 包名 import * 这种写法,它和"import 包名"的作用一样,都只是将该包的 __init__.py 文件导入并执行。

 

from 包名.模块名 import 成员名 [as 别名]

用于导入“包.模块”中指定的成员(变量、函数或类),通过该方式导入的成员,可直接使用变量名调用

当然,也可以使用 as 为导入的成员起一个别名

另外,可以使用 * 代替成员名,表示导入该模块下的所有成员

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值