从模块中获取单个变量和单个函数而不执行该模块?

2024-04-25 08:48:47 发布

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

我是新来Python,所以请原谅我。你知道吗

我有一个模块:哔哔声,其中包含变量:p(包含字符串)和函数:ps。我需要从一个模块中访问这两个模块:boop,并在那里使用它们。你知道吗

我的问题是,如果我尝试在boop中编写import beep,那么beep将运行它的所有代码。有什么办法可以解决这个问题吗?你知道吗


Tags: 模块函数字符串代码importbeepps办法
2条回答

Python总是对您导入的文件求值,因此如果您在函数或类之外有一些代码,它将被执行。正如tdelaney所说,您可以使用

if __name__ == '__main__':

我在这里创建了完整的示例:https://gist.github.com/carlosvin/d9a1eb978fac226dbbe9

Python在导入模块时执行所有顶层指令。可导入的行为良好的模块应该限制它们对顶级代码的处理。-它们可以在导入时运行代码,但不应有副作用。通常使用if __name__ == '__main__'习惯用法使python模块可以作为脚本和导入模块运行(参见示例)。你知道吗

如果import beep导致了问题,那么要么它不是为导入而设计的,要么它写得不好,需要修复。你知道吗

print 'i always run'

def fctn():
    print 'i run when called'

if __name__ == '__main__':
    print 'i run if called as a script but not if imported as a module'

相关问题 更多 >