我对python很新,我需要一些建议。
这是我如何组织和编写我的脚本的:
#!/usr/bin/python
import ...
exitCode = 1
def sendmail(mess,type):
[...]
if ...
exitCode = 9
else
exitCode = 1
[...]
return 0
#=====
#start
[...]
try:
[...]
except:
sendmail(message,"connect")
sys.exit(exitCode)
sys.exit(0)
try/except
和if/else
我想了解一些事情:
我是否以正确的方式构建了脚本?我不明白主要功能是如何定义的,有时使用它,有时候不是......应该最好做什么?
在" main"在某个点调用sendmail
函数,如果出现问题,将变量exitCode
设置为9.比进一步处理完成并返回0.现在exitCode
定义为最顶层所以我希望成为一个全局变量。但如果我在其中读取它的值(在sendmail
之后不久)它的值是" 1"虽然我期待一个" 9"。如果我在sendmail
函数中读取它,则值正确" 9"。我究竟做错了什么?我想我可以使用return exitCode
代替return 0
,但我想了解错误。
答案 0 :(得分:1)
代码中有两个不同的exitCode
。全局范围中的一个,您在import
之后分配;和sendmail
内的那个。修改一个对另一个没有影响。如果要从函数中修改全局exitCode
,请使用global
语句。
def sendmail(mess,type):
global exitCode
[...]
答案 1 :(得分:1)
最好的事情是使用
if __name__ == "__main__":
作为代码的主要入口点(请参阅解释here)。
要解决全局范围内的变量,应在其前面加上:
global exitCode
但是,通常不鼓励使用全局变量。在您的情况下,最好将sendmail()
函数的返回值设置为退出代码,因此它将如下所示:
#!/usr/bin/python
import ...
def sendmail(mess,type):
[...]
if ...
exitCode = 9
else
exitCode = 1
[...]
return exitCode
#=====
#start
[...]
try:
[...]
except:
exitCode = sendmail(message,"connect")
sys.exit(exitCode)
sys.exit(0)