Python理解结构和全局变量



我对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)
  1. 进口部件
  2. 变量定义
  3. 函数sendmail
  4. start(应该是我的main(,它包含一些try/exceptif/else的集合

我想了解几件事:

  1. 我的剧本结构正确吗?我不明白主函数是如何定义的,有时它被使用,有时不。。。最好做什么?

  2. 在"main"中,在某个点调用sendmail函数,如果出现问题,则将变量exitCode设置为9。然后进行进一步处理并返回0。现在exitCode是在最上面定义的,所以我希望它是一个全局变量。但是,如果我在except中读取它的值(在sendmail之后不久(,它的值是"1",而我期望的是"9"。如果我在sendmail函数中读取它,则值正确地为"9"。我做错了什么?我想我可以用return exitCode代替return 0,但我想理解这个错误。

  1. 最好的方法是使用

    if __name__ == "__main__":
    

作为代码的主要入口点(请参阅此处的解释(。

  1. 要处理全局范围内的变量,您应该在其前面加上:

    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
    [...]

相关内容

  • 没有找到相关文章

最新更新