包,模块和功能的问题

时间:2016-04-14 09:16:43

标签: python

我正在导入一个我在包中创建的模块。

这是我的代码:

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'未定义

2 个答案:

答案 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对此感到困惑。请避免它。