python模块离线包替换_Python之模块详细梳理(五),导入包成员像本地成员一样用

包的定义

python包是一种特殊的文件夹,用来存放多个相互关联的模块文件和资源文件,该文件夹下必须有__init__.py文件。Python首次导入包时会自动运行__init__.py文件。若没有这个文件会被视为文件夹,有这个文件才会被视为包。

950fd1bca4c29fed115370e2eab65866.png

python包的定义

包的示例

文件夹jihe下有3个文件,内容如下:

__init__.py文件:

from jihe import mianji  # 导入mianji.py模块from jihe import tiji  # 导入tiji.py模块__all__ = ['mianji', 'tiji']  # 定义from jihe import *可使用的成员名

mianji.py文件:

'''计算面积'''def changfx(a, b):    return a*bdef yuanx(r):    return 3.14159*r*rdef sanjx(a, b):    return a*b/2

tiji.py

'''计算体积'''def changft(a, b, c):    return a*b*cdef zhengft(a):    return a**3
89d10d687899b3abccae7a99b2b05390.png

python包的案例

引用包的不同方式

test1.py文件(使用from jihe import *方式,可使用的成员会受__all__限制):

from jihe import *print(mianji.changfx(3,5))print(mianji.sanjx(2,4))print(mianji.yuanx(5))print(tiji.changft(2,3,4))print(tiji.zhengft(3))out:154.078.539752427

test2.py文件(使用import jihe方式,可使用的成员不受__all__限制):

import jiheprint(jihe.mianji.changfx(3,5))print(jihe.mianji.sanjx(2,4))print(jihe.mianji.yuanx(5))print(jihe.tiji.changft(2,3,4))print(jihe.tiji.zhengft(3))out:154.078.539752427

from XX import *的方式使用包内资源时省略包名写“模块名.成员名”即可,但有命名冲突的风险。

import XX的方式使用包内资源时要写“包名.模块名.成员名”才行,但不会有命名冲突的风险。

定义包的另类方法

以下写一个定义包的另类方法,拓展思路,给大家参考。

还是沿用前面的案例,但__init__.py文件重新定义如下:

from .mianji import *from .tiji import *__all__ = ['changfx', 'yuanx','sanjx','changft','zhengft'

test3.py文件(使用from jihe import *方式,可使用的成员会受__all__限制):

from jihe import *print(changfx(3,5))print(sanjx(2,4))print(yuanx(5))print(changft(2,3,4))print(zhengft(3))out:154.078.539752427

__init__.py文件使用from XX import *方式,test3也使用from XX import *,可以将jihe包内所有成员当成本地成员使用。优点是使用包内资源时只需要写成员名即可,缺点是命名冲突的概率大增。

f573ca2f2408b0bfc0481240f6074ad3.png

拓展调用python包成员方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值