温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python模块中怎么引用包

发布时间:2021-11-25 11:47:51 来源:亿速云 阅读:130 作者:iii 栏目:互联网科技

这篇文章主要讲解了“Python模块中怎么引用包”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python模块中怎么引用包”吧!

包的定义

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

包的示例

文件夹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*b


def yuanx(r):
    return 3.14159*r*r


def sanjx(a, b):
    return a*b/2

tiji.py

'''
计算体积
'''


def changft(a, b, c):
    return a*b*c


def zhengft(a):
    return a**3

引用包的不同方式

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:
15
4.0
78.53975
24
27

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

import jihe

print(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:
15
4.0
78.53975
24
27

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:
15
4.0
78.53975
24
27

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

感谢各位的阅读,以上就是“Python模块中怎么引用包”的内容了,经过本文的学习后,相信大家对Python模块中怎么引用包这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI