python 3 基础之包
2021-04-23 00:28
标签:package 调用 nbsp 其他 入行 文件 定义 func 表示 包 包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。 简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包 1、包中的__init__.py __init__.py控制着包的导入行为 创建包后,包里自动生成一个__init__.py在python3中没有意义,删掉也没问题 在python2 中是有作用的,若在python2中不定义一个__init__.py会导致其他模块不能使用该包中的模块 1.1、可以在__init__.py文件里添加内容,当导入此包中的模块时,__init__.py文件代码就会执行 1.2、若包里没有__init__.py文件,则其他模块导入此包(说的是只导入包,不是模块,即在其他包的模块文件中只导入包名(不导模块名也可以使用模块))时: python2导入失败;python3可以成功导入,但是使用包中模块时会报错 接下来可以在包里创建一个__init__.py文件,创建后:python2导入成功,但模块不能使用;python3可以成功导入,但模块不能使用(__init__.py在python3中没有意义,删掉也没问题) 第三步,若要使用包中的模块,python2中需要在__init__.py文件里写入导入的模块名:import 模块名;python3中用python2的方式不能解决问题,需要这样:from . import 模块名(.点表示的是当前路径) 2、使用包里的模块 包里的模块导入:import 包名.模块名 as 别名 包名:package_test,包里文件:__init__.py(空) 、test_1.py test_1.py内容 在另外的包有个test.py模块,在此模块调用package_test/test_1.py 3、__all__ 在 __all__也属于模块中的变量,如果一个模块用了__all__ = [‘变量1‘,‘变量2‘.....],且另外一个模块导入该模块的方式是:from 包名 import * 例: test.py ceshi.py python 3 基础之包 标签:package 调用 nbsp 其他 入行 文件 定义 func 表示 原文地址:https://www.cnblogs.com/will-wu/p/13272686.htmldef func():
print(‘测试包 test_1‘)
import package_test.test_1 as test
test.func()
==============================================
运行结果:
测试包 test_1
__init__.py
文件中,定义一个__all__
变量,它控制着 from 包名 import *时导入的模块
那么只有在__all__的列表中的字符串(变量)才可以在其他模块使用# 条件 其他模块必须是通过from 模块名 import * 方式导入的模块
__all__ = ["name",‘add2num‘]
name = "加法运算"
def add2num(a, b):
return a + b
def delnum(a,b):
return a - b
from test import *
# 可以正常调用
print(name)
print(add2num(33,8))
# 调用delnum函数失败
f = delnum(33,2)
print(f)
======================================
报错信息:NameError: name ‘test‘ is not defined
上一篇:arguments.@@iterator (Function) – JavaScript 中文开发手册
下一篇:python通过grpc调用tfserving报错has no attribute 'beta_create_PredictionService_stub'