我对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)
- 进口部件
- 变量定义
- 函数sendmail
- start(应该是我的main(,它包含一些
try/except
和if/else
的集合
我想了解几件事:
我的剧本结构正确吗?我不明白主函数是如何定义的,有时它被使用,有时不。。。最好做什么?
在"main"中,在某个点调用
sendmail
函数,如果出现问题,则将变量exitCode
设置为9。然后进行进一步处理并返回0。现在exitCode
是在最上面定义的,所以我希望它是一个全局变量。但是,如果我在except中读取它的值(在sendmail
之后不久(,它的值是"1",而我期望的是"9"。如果我在sendmail
函数中读取它,则值正确地为"9"。我做错了什么?我想我可以用return exitCode
代替return 0
,但我想理解这个错误。
-
最好的方法是使用
if __name__ == "__main__":
作为代码的主要入口点(请参阅此处的解释(。
-
要处理全局范围内的变量,您应该在其前面加上:
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)
您的代码中有两个不同的exitCode
。全局范围中的一个,您在import
之后分配它;以及CCD_ 13内部的一个。修改其中一个对另一个没有影响。如果要从函数中修改全局exitCode
,请使用global
语句。
def sendmail(mess,type):
global exitCode
[...]