python中的包

119 阅读1分钟
package包
  • 从物理上看python就是一个文件夹
  • 文件夹下包含一个__init__.py文件
  • 该文件可用于包含多个模块文件
  • 也可以说只要有__init__.py文件,那么它就是一个python包
  1. 创建package包,选择文件夹->新建->python软件包。

a05caaae4d033273a6bb0bd6512799f.png

  1. 然后在包中创建my_package1.py和my_package2.py文件。分别写入以下内容:

my_package1.py:

def sum(x, y):
    print(f"我是模块1中的sum函数,结果是:{x+y}")
    return x + y

my_package2.py:

def sum(x, y):
    print(f"我是模块2中的sum函数,结果是:{x + y}")
    return x + y

导入并使用package包中的模块。

  1. 使用import导入使用
import package.my_package1
import package.my_package2

package.my_package1.sum(1, 2) # 我是模块1中的sum函数,结果是:3
package.my_package2.sum(1, 2) # 我是模块2中的sum函数,结果是:3
  1. 使用 from 包名 import 模块 使用:
from package import my_package1
from package import my_package2

my_package1.sum(1, 2)    # 我是模块1中的sum函数,结果是:3
my_package2.sum(1, 2)    # 我是模块2中的sum函数,结果是:3
  1. 还可以直接导入包中某个模块的某个函数:
from package.my_package1 import sum

sum(1, 2)
  1. 使用__all__控制包导出模块,与在模块中使用__all__的用法一致,在__init__.py配置希望使用 * 导入的时候,导出的部分模块。同理,这种方式方式只有在使用 * 导入的时候会限制,如果使用其他方式导入指定的模块依然是可以的。
__all__ = ["my_package1"] # 这样的话在外部使用*导入就只会导入my_package1模块

使用 * 导入,使用__all__未导出的模块会报错

93856f437552611226539e9612b799c.png

下载第三方包

  • 在控制台使用pip install 包名 ,安装需要用到的包
  • 在python内部,通过右下角->解释器设置,点击加号,搜索要下载的包名也可以下载。

64dac2bbd47b38ddfb4bf2e3d6cfc79.png