python - 赋值前引用的局部变量 X
问题描述
我尝试使用以下函数连接到 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: local variable 'jira' referenced before assignment 难道是因为我也应该在除了 JIRAError 下给 jira 变量赋值吗?因为如果我移动尝试并且除了作为打击之外,它工作正常:
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
则不会在返回点分配本地 var。
否则,您可以分配,例如,jira = None
在 except 块:
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
但是我会警惕这一点,以防JIRAError
状态代码与 401 不同的 a 导致None
返回,并且脚本中稍后的代码依赖于有效连接。根据这一点,您可能希望将exit()
调用放在 if 语句之外的 except 块中。
推荐阅读
- c++ - C++ 可变参数函数语法
- python - 如何从 sklearn TfidfVectorizer 中删除所有非英语标记?
- azure - 无法从我的 Webapp 连接到我的 MYSQL Azure - 1045,“用户 'dbadmin'@'xx.xx.xx.x' 的访问被拒绝(使用密码:是)
- java - Jersey 2 - 在过滤器中注入请求范围的服务
- python - 如何识别列中的元素是整数还是字符串?
- python - 标记熊猫数据框中日期范围内的日期时间列表
- javascript - 为什么我的测验无法在触摸屏上开始?
- android-arrayadapter - 在listview android java中使用毕加索设置imageview
- react-native - 布尔数组作为复选框值?
- php - 在 sql 查询中选择具有多个 OR 的 DISTINCT