3 回答

TA贡献1827条经验 获得超8个赞
在大多数其他编程语言中,您要么有零个参数,要么有两个参数:
int main(char *argv[], int argc)
表示传递给参数的参数。但是,在 Python 中,这些是通过sys模块访问的:
import sys
def main():
print(sys.argv, len(sys.argv))
但是你可以扩展它,这样你就可以将 argv 和 argc 传递到你的 python 函数中,类似于其他语言是的:
import sys
def main(argv, arc):
print(argv, arc)
if __name__ == '__main__':
main(sys.argv, len(sys.argv))
但是让我们暂时忘记 argv/argc -为什么要将某些内容传递给 main。您在 main 之外创建了一些东西,并希望将它传递给 main。这可能发生在两种情况下:
您从其他函数多次调用 main 。
您已经在main要传递的外部创建了变量。
第 1 点绝对是不好的做法。main应该是唯一的,并且只在程序开始时调用一次。如果需要多次调用,那么里面的代码main就不属于 inside main。把它分开。
第 2 点可能看起来有道理,但是您在实践中这样做:
def main(a, b):
print(a, b)
if __name__ == '__main__':
x = 4
y = 5
main(x, y)
但是不是x和y全局变量吗?好的做法是假设这些位于文件的顶部(以及多个其他属性 - 它们是常量等),并且您不需要将它们作为参数传递。

TA贡献1780条经验 获得超4个赞
我绝对更喜欢看到main参数而不是sys.argv直接访问。
这使得其他 Python 模块更容易重用 main 函数。
import sys
def main(arg):
...
if __name__ == "__main__":
main(sys.argv[1])
现在,如果我想将此模块作为另一个模块的脚本执行,我可以编写(在我的另一个模块中)。
from main_script import main
main("use this argument")
如果main使用,sys.argv这将更加困难。
添加回答
举报