pyhton __init__.py

包和模块

在这样一个工程中,pkg包(package)module1.pymodule2.py模块(module),在模块中还有定义的方法、变量等,可以统称为功能
在这里插入图片描述

import可以导入包,也可以导入模块:

import pkg
import pkg.module1
import pkg.mudule2

导入功能则需要使用from:

from pkg.module1 import hello1


__init__.py

概述

在Python中,__init__.py文件是一个特殊的文件,用于指示Python解释器该目录应该被视为一个Python包。这个文件可以为空,也可以包含初始化包的Python代码。

通常__init__.py 文件为空,但是我们还可以为它增加其他的功能。我们在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入:

# pkg
# __init__.py
import re
import urllib
import sys
import os

# main.py
import pkg 
print(pkg.re, pkg.urllib, pkg.sys, pkg.os) # 注意这里访问__init__.py文件中的引用文件,需要加上包名。

__init__.py中还有一个重要的变量,__all__它用来将模块全部导入。

# pkg
# __init__.py
__all__ = ['os', 'sys', 're', 'urllib']

# main.py
from package import *

导入包和使用模块

module1.py

def hello1():
    print('hello, it\'s module1.py')

moudle2.py

def hello2():
    print('hello, it\'s module2.py')

需要使用pkg这个包时,可以在main.py中直接通过import导入:

import pkg
pkg.moudle1.hello1()
pkg.moudle2.hello2()

也可以使用from语句导入:

from pkg import module1, moudle2
moudle1.hello1()
moudle2.hello2()

也可以只导入包中的某个模块或者函数:

from pkg.moudle1 import hello1
from pkg.moudle2 import hello2
hello1()
hello2()

控制导入行为

我们可以在__init__.py文件中定义__all__变量,指定包的公开接口,用来将模块导入。

__init__.py文件可以什么都不写,但如果想使用from pkg import *这种写法的话,需要在__init__.py中加上:

__all__ = ['moudle1', 'moudle2']

如果修改__init__.py

__all__ = ['module1']

这样,在导入包时,只有module1模块会被导入。

main.py

from pkg import *
module1.hello1()
module2.hello2() # 由于module2没有被导入,所以会报错


https://geek-docs.com/python/python-ask-answer/845_python_using___init__py.html
https://www.cnblogs.com/BlueSkyyj/p/9415087.html

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值