한 가지 방법은 return
의 존재에 의해 수행 한 것처럼 보이는 (함수 내부의 코드를 삽입하는 것입니다 :
def get_passkey(admin_extra, name):
for admin in admin_extra:
if admin['name'] == name:
passkey = admin[passkey]
return passkey
# this will not happen if we have left the function due to returning the passkey
return None # We did not find a passkey
또 다른 방법은 break 문을 사용하는 것입니다.
name = 'nikhil'
passkey = ''
for admin in admin_extra:
if admin['name'] == name:
passkey = admin[passkey]
print passkey
break
else:
print "not found"
기타 (부분적으로 뺨을 때리는 소리) 제안 : classes을 사용하십시오.
예제 코드 :이 그것을 달성하지 않습니다
admins = AdminList(Admin("Nikhil", "nikhilpasskey"), Admin("Mac", "macpasskey"))
pass = admins["Nikhil"].passkey
두 번째 예는 잘못되었습니다. else 블록은 완전히 잘못 배치됩니다. 암호 키가 여전히''''인지 확인하고 싶었던 것 같습니다. –
아니요, 파이썬의'else' 문은'for' 루프에서 작동합니다! 블록의 코드는 if라고 부르며 루프 *가 분리되지 않은 경우에만 호출됩니다. – rlms
놀라운 ... 그것을 몰랐다. 감사. –