未定义Python自定义模块名称

2024-05-29 04:06:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为“package”的自定义包和一个名为“module”的自定义模块,该模块在调用时有一个返回“test”的函数。当我导入我的包时,如果我这样做:

from package import module

一切都很好,但如果我做了:

^{pr2}$

或者

import package

然后,当尝试使用“module”模块时,会出现一个错误名称“module”未定义。为什么在我使用import*或导入包时不导入模块?在

我尝试调用的模块中的代码是:

def printTest():
    return("Test")

调用模块的文件中的代码如下:

import package

print(module.printTest())

Tags: 模块函数代码fromtestimport名称package
1条回答
网友
1楼 · 发布于 2024-05-29 04:06:17

这是一个令人惊讶的普遍问题,这个问题仍然没有一个恰当的答案,所以我们开始吧。在

假设我们有一个只包含函数的模块,比如:

  • 文件应用程序/食品

    def a():
        print('Hello from foo.a')
    
    def b():
        print('Hello from foo.b')
    

我真的希望这能奏效(但这并不是):

  • 文件应用程序/棒.py

    import app.foo
    
    # These will not work!
    foo.a()
    foo.b()
    

结果是您必须显式导入每个元素或给app.foo一个名称:

  • 导入所有内容(通常被认为是不好的做法):

    ^{3美元
  • 只导入您想要的:

    from app.foo import b
    
    # This will work
    b()
    
    # But this will not
    a()
    
  • app.foo一个(好的)名字:

    import app.foo as baz
    
    # Both will work as expected
    baz.a()
    baz.b()
    

即使上面的例子只使用函数,它对于在模块的最顶端声明的所有东西都是一样的,比如类或变量。在

希望有帮助!在

相关问题 更多 >

    热门问题