吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1398|回复: 2
收起左侧

[Python 转载] 【笔记】__all__、package包以及__init__.py

[复制链接]
cccyyys 发表于 2021-7-3 16:49
__all__
在导入模块时针对from 模块名 import  类/变量/函数这种方法,我们可以使用from 模块名 import *  默认导入该模块中所有功能,作用等同于import 模块名。
但是如果模块中有全局变量__all__,使用“*”就会导入全局变量__all__中的功能,因此如果要以“*”的方式导入该模块所有的功能,通常在全局变量中添加该模块所有的功能。
[Python] 纯文本查看 复制代码
__all__ = ["add","sub","mul","div"]
def add(a,b):
    return a+b
def sub(a,b):
    return a-b
def mul(a,b):
    return a*b
def div(a,b):
    return a/b
if __name__ == '__main__':
    a = 10
    b = 2
    print("和为:%g"%add(a,b))
    print("差为:%g"%sub(a,b))
    print("积为:%g"%mul(a,b))
    print("商为:%g"%div(a,b))

这种就是添加了全局变量的模块。
package包
包是一个分层次的文件目录结构,它定义了一个有模块及子包和子包下的子包等组成的Python的应用环境,包中要包含一个__init__.py模块。可以理解为电脑中的文件夹。
将模块放入包中后,模块的路径会发生变化,因此导入时需要使用import 包名.模块名的方式导入。在使用模块中的方法时使用包名.模块名.方法即可。
__init__.py模块
类中的__init__是一个初始化方法,而包中的__init__.py是一个初始化模块,因为是一个模块,所以可以存放所有模块可以存放的类、函数、变量、可执行代码。
首次导入包中的模块时,会优先执行一次__init__.py中的代码。
在__init__.py 中一般会写一些辅助代码,可以更加方便的使用模块。
[Python] 纯文本查看 复制代码
import MyMath

或者
[Python] 纯文本查看 复制代码
from .MyMath import *

例如在__init__中导入包中的某个模块,可以有两种写法,在导入包名之后相当于导入了该模块。使用模块中的方法同样是包名.模块名.方法。

免费评分

参与人数 1吾爱币 +1 收起 理由
T_Tzzz + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

netspirit 发表于 2021-7-3 16:53
在python里面直接导入另一个py文件会被pycharm提示错误
但是如果在py文件前面添加一个. pycharm不提示错误了 但是又程序执行出错
 楼主| cccyyys 发表于 2021-7-4 12:17
netspirit 发表于 2021-7-3 16:53
在python里面直接导入另一个py文件会被pycharm提示错误
但是如果在py文件前面添加一个. pycharm不提示错误 ...

我是直接复制的,没有提示错误,导入的话怎么导入啊,我不是太清楚,没有试过
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 15:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表