在python中,可执行语句(while
,print
,static
等)可以放在模块中 - 不包含在函数内。
在 C ++ 中,我将命令包装在一个函数中。只有initialization
变量初始化才能“执行”IIRC。
在 Pascal 中,我使用x = 1 # similar to c++ static variable init
#unwrapped
print(1 if x == 1 else 2)
#wrapped
def initialization():
print(1 if x == 1 else 2)
initialization()
部分。
这是一个python示例,显示了两种执行模块级命令的方式(解包和包装)。
我很想知道是否存在任何情况,即无法修改带有解包命令的现有模块以使用包裹样式(可能与全局/非本地声明有关?)。
{{1}}
答案 0 :(得分:0)
通常在python中,除非模块非常简单,并且只在从命令行运行时才做一件事和一件事,所以模块在底部有一个看起来像这样的块:
if __name__ == '__main__':
# run the main function here
main()
这样,当导入模块时,他们通常不会开始做事,而通常意图是使用他们的函数,变量和类。
我不确定这是否能回答你的问题;我不知道有什么办法来包装模块顶层的语句,除了将与模块应该执行的操作有关的语句分离成相关的函数,并将初始化代码移动到& #34;主"函数,并使用上面的块在模块运行时触发它python yourmodule.py
。