我正在导入一个我在包中创建的模块。
这是我的代码:
import test.addition._addition
import test.subtraction._subtraction
import test.multiplication._multiplication
class calcul:
def addition(self, a, b):
self.c = _addition(a,b)
print self.c
def subtraction (self, a,b):
self.c = _subtraction(a, b)
print self.c
def multiplication (self, a, b):
self.c =_multiplication (a, b)
print self.c
正如您从代码的前3行注意到的那样,
我已将模块_addition
存储在名为addition的文件夹中,并再次将添加文件夹存储在名为test的文件夹中。
减法和乘法也是一样的。
在每个文件夹中,我创建了一个模块__init__
,以确保它被声明为包。
为了更清楚,下面是模块_addition
def _sous_addition(a,b):
return float(a) + float(b)
问题是python告诉我:
全局名称'_addition'未定义
答案 0 :(得分:1)
撰写import test.addition._addition
时,您本地范围内的名称为test
,您可以使用_addition
访问test.addition._addition
功能。您需要使用其全名。
如果要将名称为_addition
的函数导入本地范围,则需要编写以下任一项:
from test.addition import _addition
import test.addition._addition as _addition
答案 1 :(得分:1)
您应该使用test.addition._addition._addition
来调用该功能。
更重要的是:
永远不要使用同名的模块和功能!!
编码风格非常糟糕,迟早会咬你的。似乎deceze对此感到困惑。请避免它。