Aso*_*son 2 python program-entry-point function conceptual
我目前正在使用Python,并且对于列出函数这一事实感到困惑__main__
.我一直在寻找多个python脚本,试图找到一个共同的主题,关于什么功能保证一个地方__main__
,但无济于事.在这里,我有一个自己的代码示例.firstfunction
并且
anotherfunction
是我的代码中唯一的两个函数.
def main(argv):
firstinput=""
secondinput=""
if len(argv) < 3 or len(argv) > 3:
print """"Please set to:
metisfinal.main(metisfinal.py, firstinput, secondinput)""""
return
else:
firstinput = argv[1]
secondinput = argv[2]
firstfunction(firstinput, dictionary)
anotherfunction(list, secondinput)
if __name__ == "__main__":
main(sys.argv)
Run Code Online (Sandbox Code Playgroud)
(我认为)我知道的参数和__main__
调用是正确的,但 firstfunction
并anotherfunction
总是返回错误(因为他们的观点没有全局定义).我很肯定这是由于对错误的理解而产生的__main__
,因为我所看到的所有其他例子,基本上都是__main__
以相同的方式设置的.
什么构成列出特定功能__main__
?我偶然发现了一些Python代码,其中有超过30个函数,但程序员只列出了其中的2个函数__main__
.同样,有时代码会在main参数中有类,就像这个(Project
早先定义为对象类):
def main(argv):
filename = ""
outputfilename = ""
p = Project(filename, outputfilename, subdomainNames)
p.generateICs()
if __name__ == "__main__":
main(sys.argv)
Run Code Online (Sandbox Code Playgroud)
从概念上讲,我无法理解为什么没有列出所有函数...难道不是所有函数都需要运行或者__main__
只是初始化某些东西吗?
我在看非典型代码吗?__main__
我错过了哪些关键概念?一旦我找到了要投入的功能__main__
,是否有特定的格式化方法?
目前尚不清楚你所说的"上市__main__
" 是什么意思. __main__
不是源文件中的实体.相反,它是模块的名称,如果您直接执行它.当你这样做时if __name__=="__main__"
,你告诉Python执行该块中的代码,当且仅当代码作为主模块执行时 - 也就是说,如果它是正在运行的程序.if __name__=="__main__"
如果从其他模块导入模块,则不会运行块中的代码.
请注意,您不会在if块中"列出"函数.相反,您将常规程序代码放在要运行的块中.通常这段代码只调用一个函数.通常人们称之为功能main()
.但是__main__
和之间并没有特殊的关系main
.你可以随意调用这个函数:
def snicklefritz():
# This function will be run when you run the program
print "You ran the program!"
if __name__ == "__main__":
snicklefritz()
Run Code Online (Sandbox Code Playgroud)
尝试运行此程序(例如,将其保存为"snicklefritz.py",然后python snicklefritz.py
从命令行执行).你会看到"你运行了程序!" 打印.如果您创建一个单独的文件,则import snicklefritz
不会打印该消息.
请注意,"列表功能"没有任何内容.例如,看看这个程序:
print "This will always be printed!"
if __name__ == "__main__":
print "This will only be printed if you run the file as a program!"
Run Code Online (Sandbox Code Playgroud)
这里的if __name__=="__main__"
块没有"列出"任何功能.它只包含当文件作为脚本运行时运行的实际代码.但是,人们通常不会这样做,因为将代码放在一个单独的函数中而不是仅仅在函数外部"暴露"就更加整洁.
对于其他功能,您可以在模块中定义您喜欢的任何其他功能,在该模块中使用,或者由导入模块的其他模块使用.通常,模块中的大多数功能都不会在if __name__=="__main__"
块内使用,因为它们不会成为"主"功能的一部分.相反,它们将是其他代码使用的其他功能.例如:
def otherFunc(x):
# Return x squared
return x**2
def snicklefritz():
# This function will be run when you run the program
print "You ran the program!"
if __name__ == "__main__":
snicklefritz()
Run Code Online (Sandbox Code Playgroud)
otherFunc
在模块中根本没有使用.没关系.可能有人想要导入您的模块并使用otherFunc
自己.并非每个函数都必须在同一个模块中使用,更不用说从if __name__=="__main__"
块中调用了.