谷歌有一个Python教程,他们将样板代码描述为“不幸的”,并提供了以下示例:
#!/usr/bin/python
# import modules used here -- sys is a very standard one
import sys
# Gather our code in a main() function
def main():
print 'Hello there', sys.argv[1]
# Command line args are in sys.argv[1], sys.argv[2] ..
# sys.argv[0] is the script name itself and can be ignored
# Standard boilerplate to call the main() function to begin
# the program.
if __name__ == '__main__':
main()
我听说过模板代码被描述为“看起来重复的代码,一次又一次地出现,以获得某些似乎应该更简单的结果”(例子)。
无论如何,在Python中,上述示例中被认为是“模板”的代码部分是:
if __name__ == '__main__':
main()
现在,我的问题如下:1)Python中的样板代码(如提供的示例)是否与我提供的定义具有相同的定义?如果是这样,为什么?
2)这段代码甚至是否必要?在我看来,无论是否有一个主方法,代码似乎都可以运行。使用这段代码有什么优点?它真的更好吗?
3)为什么我们使用那段代码,它提供了什么服务?
4)在Python中是否经常出现这种情况?还有其他“样板代码”的例子吗?
哦,还有一个题外话:在Python中需要
import sys
来使用命令行参数吗?如果没有,它是如何处理这些参数的?
sys
都存在。如果您不导入它,您就无法在代码中使用它。 - Ignacio Vazquez-Abrams#!/usr/bin/env python
而不是!#/usr/bin/python
,因为前者可以获取用户/环境特定的 Python 版本。这种方式更可取,因为用户可能会将 Python 命名为其他名称或安装在除了 /bin 之外的其他位置,虽然通常情况下都不会如此。但是,作为一个曾经因此遇到过错误的人,我可以告诉你,这些错误非常令人沮丧。这就像硬编码路径和使用相对路径之间的区别。 - guribe94main()
运行的函数和类都会被提升。这在像 nodejs 这样的语言中自然发生,并且如果用户希望main()
坐在脚本顶部调用下面的其他函数时非常有用。 - D.L