Python 了解结构和全局变量
Python understanding structure and global variables
我是 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)
- 导入部分
- 变量定义
- 函数发送邮件
- start(应该是我的主)里面有几组
try/except
和if/else
我想了解一些事情:
我的脚本结构是否正确?没看懂main函数是怎么定义的,有时用,有时不用。。。应该怎么办才好?
在"main"的某个点调用了sendmail
函数,如果出错,设置变量exitCode
为9。比进一步处理完成,它 returns 0。现在 exitCode
定义在最顶部,所以我希望它是一个全局变量。但是,如果我在 except 中读取它的值(在 sendmail
之后不久),它的值是“1”,而我期望是“9”。如果我在 sendmail
函数中读取它,则该值正确为“9”。我究竟做错了什么?我想我可以使用 return exitCode
而不是 return 0
,但我想了解这个错误。
您的代码中有两个不同的 exitCode
。全局范围内的一个,您在 import
之后分配;和 sendmail
里面的那个。修改一个不会影响另一个。如果要在函数内修改全局 exitCode
,请使用 global
语句。
def sendmail(mess,type):
global exitCode
[...]
最好用
if __name__ == "__main__":
作为代码的主要入口点(参见说明 here)。
要在全局范围内寻址变量,您应该在其前面加上:
global exitCode
但是,通常不鼓励使用全局变量。在您的情况下,最好将 sendmail()
函数的 return 值设置为退出代码,因此它看起来像这样:
#!/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)
我是 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)
- 导入部分
- 变量定义
- 函数发送邮件
- start(应该是我的主)里面有几组
try/except
和if/else
我想了解一些事情:
我的脚本结构是否正确?没看懂main函数是怎么定义的,有时用,有时不用。。。应该怎么办才好?
在"main"的某个点调用了
sendmail
函数,如果出错,设置变量exitCode
为9。比进一步处理完成,它 returns 0。现在exitCode
定义在最顶部,所以我希望它是一个全局变量。但是,如果我在 except 中读取它的值(在sendmail
之后不久),它的值是“1”,而我期望是“9”。如果我在sendmail
函数中读取它,则该值正确为“9”。我究竟做错了什么?我想我可以使用return exitCode
而不是return 0
,但我想了解这个错误。
您的代码中有两个不同的 exitCode
。全局范围内的一个,您在 import
之后分配;和 sendmail
里面的那个。修改一个不会影响另一个。如果要在函数内修改全局 exitCode
,请使用 global
语句。
def sendmail(mess,type):
global exitCode
[...]
最好用
if __name__ == "__main__":
作为代码的主要入口点(参见说明 here)。
要在全局范围内寻址变量,您应该在其前面加上:
global exitCode
但是,通常不鼓励使用全局变量。在您的情况下,最好将 sendmail()
函数的 return 值设置为退出代码,因此它看起来像这样:
#!/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)