我试图使用全局,但它给我Global NameError Not Defined。 它失败的错误: UnboundLocalError:局部变量“full_url”如果你ENV不是staging
或prod
一个,这将失败,因为full_url
不会当打印执行组分配NameError:全局名称'full_url'未定义
env = sys.argv[1]
class Account:
def __init__(self):
self.stag_url = 'http:url_1'
self.prod_url = 'http://url_2'
self.account_number = 'XXXXXXX'
self.api_url = "ZZZZZZ"
self.headers = { "Client": "ZZZZ", \
"content-type": "application/json", \
"Accept": "application/json;v=2" }
def request_data(self,env):
if env == "staging":
full_url = self.stag_url + self.account_number + self.api_url
if env == "prod":
full_url = self.prod_url + self.account_number + self.api_url
print("URL: " + full_url + '\n')
try:
req = requests.get(full_url,headers=self.headers)
return req.status_code, req.json()
except requests.exceptions.HTTPError as e:
print("Got an HTTPError: ", e.message)
acnt = Account()
if sys.argv[2] == "response_code":
status_code,response_json = acnt.request_data(env)
print("Response Code: " + str(status_code))
print('\n' + "Response JSON Body: " + '\n')
print(json.dumps(response_json, sort_keys=True, indent=4))
if sys.argv[2] == "response_json":
status_code,response_json = acnt.request_data(env)
print(json.dumps(response_json, sort_keys=True, indent=4))
很可能你的变量'env'没有设置。你也应该修改你的缩进以便你的代码可读 – Cfreak
env已经被设置在类本身之上。 –
env的价值是什么?第一个if(“staging”)和第二个(“prod”)匹配是否有可能在打印时没有定义“full_url”? – Francesco