赋值前引用的局部变量 X
local variable X referenced before assignment
我已尝试使用以下功能连接到 jira,但身份验证错误 401 除外:
def jira_connect(User, Passwd):
try:
jira = JIRA(basic_auth=(User, Passwd), options={'server': 'https://jira-server-address'})
except JIRAError as e:
if e.status_code == 401:
print "Login to JIRA failed. Please check your username and password and try again !"
exit()
return jira
def main(Thisuser, Thispasswd):
User = Thisuser
Passwd = Thispasswd
jira = jira_connect(User, Passwd)
if __name__== "__main__":
Getuser = getpass.getuser()
Getpasswd = getpass.getpass()
main(Getuser, Getpasswd)
但之后我得到:
UnboundLocalError:赋值前引用的局部变量'jira'
那是因为除了 JIRAError 之外,我还应该给 jira 变量赋值吗?因为如果我移动 try 和 except jut put as blow,它工作正常:
def jira_connect(User, Passwd):
jira = JIRA(basic_auth=(User, Passwd), options={'server': 'https://jira-server-address'})
return jira
您可以通过在 try 块中包含 return 来实现所需的行为:
def jira_connect(User, Passwd):
try:
jira = JIRA(basic_auth=(User, Passwd), options={'server': 'https://jira-server-address'})
return jira
except JIRAError as e:
if e.status_code == 401:
print "Login to JIRA failed. Please check your username and password and try again !"
exit()
否则如果遇到异常,局部变量jira
不会在return处赋值。
否则,您可以在 except 块中分配,例如,jira = None
:
def jira_connect(User, Passwd):
try:
jira = JIRA(basic_auth=(User, Passwd), options={'server': 'https://jira-server-address'})
except JIRAError as e:
if e.status_code == 401:
print "Login to JIRA failed. Please check your username and password and try again !"
exit()
jira = None
return jira
但我会对此保持警惕,以防状态代码不同于 401 的 JIRAError
导致 None
return,并且稍后脚本中的代码依赖于在有效的连接上。根据这一点,您可能希望将 exit()
调用放在 if 语句之外的 except 块中。
我已尝试使用以下功能连接到 jira,但身份验证错误 401 除外:
def jira_connect(User, Passwd):
try:
jira = JIRA(basic_auth=(User, Passwd), options={'server': 'https://jira-server-address'})
except JIRAError as e:
if e.status_code == 401:
print "Login to JIRA failed. Please check your username and password and try again !"
exit()
return jira
def main(Thisuser, Thispasswd):
User = Thisuser
Passwd = Thispasswd
jira = jira_connect(User, Passwd)
if __name__== "__main__":
Getuser = getpass.getuser()
Getpasswd = getpass.getpass()
main(Getuser, Getpasswd)
但之后我得到: UnboundLocalError:赋值前引用的局部变量'jira' 那是因为除了 JIRAError 之外,我还应该给 jira 变量赋值吗?因为如果我移动 try 和 except jut put as blow,它工作正常:
def jira_connect(User, Passwd):
jira = JIRA(basic_auth=(User, Passwd), options={'server': 'https://jira-server-address'})
return jira
您可以通过在 try 块中包含 return 来实现所需的行为:
def jira_connect(User, Passwd):
try:
jira = JIRA(basic_auth=(User, Passwd), options={'server': 'https://jira-server-address'})
return jira
except JIRAError as e:
if e.status_code == 401:
print "Login to JIRA failed. Please check your username and password and try again !"
exit()
否则如果遇到异常,局部变量jira
不会在return处赋值。
否则,您可以在 except 块中分配,例如,jira = None
:
def jira_connect(User, Passwd):
try:
jira = JIRA(basic_auth=(User, Passwd), options={'server': 'https://jira-server-address'})
except JIRAError as e:
if e.status_code == 401:
print "Login to JIRA failed. Please check your username and password and try again !"
exit()
jira = None
return jira
但我会对此保持警惕,以防状态代码不同于 401 的 JIRAError
导致 None
return,并且稍后脚本中的代码依赖于在有效的连接上。根据这一点,您可能希望将 exit()
调用放在 if 语句之外的 except 块中。