在我的代码中,我正在测试用户是否具有AWS访问密钥:
undefined
稍后在我的代码中,我测试key1是否存在:
for response in paginator.paginate(UserName=user_name):
if len(response['AccessKeyMetadata']) and 'AccessKeyId' in response['AccessKeyMetadata'][0].keys():
key1 = response['AccessKeyMetadata'][0]['AccessKeyId']
如果用户根本没有按键,则该功能将失败,并显示以下错误:
if key1:
print("\nAccess Key 1: ", key1)
else:
print("The user does not have any keys.")
我是否正在测试key1是否正确存在?为什么应该在else子句中打印出语句时出现未绑定的本地错误?
答案 0 :(得分:2)
您只需要在key1
条件之前初始化if
,即
key1 = None # <- You need this line
for response in paginator.paginate(UserName=user_name):
if len(response['AccessKeyMetadata']) and 'AccessKeyId' in response['AccessKeyMetadata'][0].keys():
key1 = response['AccessKeyMetadata'][0]['AccessKeyId']
这是因为,如果不满足if
条件,将不会在原始代码中创建key1
。
答案 1 :(得分:1)
if key1:
不测试key1
是否存在;它会测试它是否包含“真实的”值,并假定它确实存在。
答案 2 :(得分:1)
您正在遇到None
和null
或undefined
之间的差异。考虑三个卫生纸架。一个有很多,一个在内部硬纸板管子里,另一个甚至没有管子。或者换种说法,一个人有int
个论文,一个人有None
个论文,一个人是null
或undefined
。
如另一个答案中所述,在key1
语句之前将None
初始化为if
。
key1 = None
要检查变量是否存在:
if 'key1' in globals():
print(key1) # Or whatever