我尝试使用以下函数连接到 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 变量赋予值吗?因为如果我移动尝试并只是将其作为打击,它就可以正常工作:
def jira_connect(User, Passwd):
jira = JIRA(basic_auth=(User, Passwd), options={'server': 'https://jira-server-address'})
return jira
最佳答案
您可以通过在 try block 中包含 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
在返回时不会被赋值。
否则,您可以在 except block 中分配,例如 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
返回,并且脚本中稍后的代码依赖于在有效的连接上。根据这一点,您可能需要将 exit()
调用放在 if 语句外部的 except block 中。
关于python - 赋值前引用的局部变量 X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50554492/