我有两个函数,我把其中一个函数放在一个单独的.py中,这样我就可以导入它,但当我试图运行脚本时,我遇到了一个错误。
我放在separate.py中的函数是:
def output_messaging(message):
global myEmailText
myLogFile.write(message)
myEmailText = myEmailText + message
print message
我运行的脚本有以下代码:
def finish_process(errors):
global myLogFile
myLogFile.close()
if errors == 0:
myEmailHeader = "Subject: **"
elif errors == 1:
myEmailHeader = "Subject: **"
else:
myEmailDestination.append("**")
#myEmailHeader = "Subject: **"
server = smtplib.SMTP(myServer) #email data log to nominated individuals
server.sendmail(myEmailSender, myEmailDestination, myEmailHeader + "n" + myEmailText)
server.quit()
当我运行脚本时,我得到以下错误。
NameError: global name 'myLogFile' is not defined
myLogFile是在代码的下面声明的(这是日志文件的位置),但我有点困惑。
感谢
错误很明显。myLogFile
未在output_messaging
函数中的任何位置定义。您需要在该函数中定义它,或者将它作为参数传入。
无论如何,你不应该使用全局变量,它们几乎总是一个坏主意。显式传递参数。
在output_messaging
中,您没有global myLogFile
来指示myLogFile
是在文件中的其他地方定义的。当Python运行该函数时,它现在无法识别该变量。
请注意,全局变量通常不受欢迎,但这是一个不同的讨论。