在 Python 的 main() 中调用参数是不好的做法吗

函数名称是否应该main()始终为空并在函数本身内调用参数,或者将它们作为函数的输入是否可以接受,例如main(arg1, arg2, arg3)

我知道它有效,但我想知道这是否是糟糕的编程实践。抱歉,如果这是重复的,但我看不到专门针对 Python 回答的问题。


MM们
浏览 190回答 3
3回答

斯蒂芬大帝

在大多数其他编程语言中,您要么有零个参数,要么有两个参数:int main(char *argv[], int argc)表示传递给参数的参数。但是,在 Python 中,这些是通过sys模块访问的:import sysdef main():    print(sys.argv, len(sys.argv))但是你可以扩展它,这样你就可以将 argv 和 argc 传递到你的 python 函数中,类似于其他语言是的:import sysdef 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全局变量吗?好的做法是假设这些位于文件的顶部(以及多个其他属性 - 它们是常量等),并且您不需要将它们作为参数传递。

Helenr

我绝对更喜欢看到main参数而不是sys.argv直接访问。这使得其他 Python 模块更容易重用 main 函数。import sysdef main(arg):    ...if __name__ == "__main__":    main(sys.argv[1])现在,如果我想将此模块作为另一个模块的脚本执行,我可以编写(在我的另一个模块中)。from main_script import mainmain("use this argument")如果main使用,sys.argv这将更加困难。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python