Python 如何区分两个模块中同名但在一个文件中使用的两个方法

Python 如何区分两个模块中同名但在一个文件中使用的两个方法,python,django,Python,Django,我在两个地方有一个名为“添加成员地址”的功能,但功能不同。 下面给出了在视图中定义的第一种方法 @login_required(login_url='/accounts/login/') def add_member_address(request, member_id): if request.method == "GET": pass else: data = request.POST add_member_address(da

我在两个地方有一个名为“添加成员地址”的功能,但功能不同。
下面给出了在视图中定义的第一种方法

@login_required(login_url='/accounts/login/')
def add_member_address(request, member_id):
    if request.method == "GET":
        pass
    else:
        data = request.POST
        add_member_address(data, member_id) #<-this method is defined in another file.
其中租户是已在设置文件中注册的我的应用程序的名称。但是现在抛出了这个错误

name 'tenant' is not defined
文件夹结构:

project
  ->tenant
    ->services
      -> __init__.py
      -> address_services.py
        -> here is this add_member_address(data, member_id) method
      -> other_services.py
    ->views
      ->members.py
         ->here is this add_member_address(request, member_id) method
service/\uuuuu init\uuuuu.py
文件中,所有服务都按如下方式导入

from .address_services import *
from .tag_services import *
请推荐我
1.在同一个文件中使用时,如何区分两个同名但位于两个不同模块中的方法。

2.如何使用具有完整路径的方法,而不是在文件顶部导入。

只需重命名一个,或者只导入模块,然后将函数作为该模块的属性进行查找

您可以在
import
语句中重命名导入的名称:

from .address_services import add_member_address as add_address

# use add_address(data, member_id)
改为使用模块名称:

from . import address_services

# use address_services.add_member_address(data, member_id)
如果您发现后者过于冗长,请记住您也可以重命名模块引用:

from . import address_services as as_

# use as_.add_member_address(data, member_id)

无论如何,导入所有内容都不是一个好做法

from .address_services import add_member_address as add_member_address_address_services
from .tag_services import add_member_address as add_member_address_tag_services

或者类似的东西。

简单地说:不要使用模块导入中的
*
。我不认为来自。导入地址服务,如所示
as
是一个关键字。小的打字错误-而不是
as
应该是类似
as
as
的,正确,请更正
from .address_services import add_member_address as add_member_address_address_services
from .tag_services import add_member_address as add_member_address_tag_services