나는 변수가 생성 될 때까지과 같이, 실행 파이썬에서 while 루프를 원하는 :변수가 생성 될 때까지 반복 동안 파이썬을 실행하려면 어떻게해야합니까?
while choice doesn't exist:
do stuff involving choice
end while loop
어떻게 할 수 있나요?
나는 변수가 생성 될 때까지과 같이, 실행 파이썬에서 while 루프를 원하는 :변수가 생성 될 때까지 반복 동안 파이썬을 실행하려면 어떻게해야합니까?
while choice doesn't exist:
do stuff involving choice
end while loop
어떻게 할 수 있나요?
while 'choice' not in locals():
# your code here
하지만 잘못된 방식으로 수행하고 있습니다. 당신은 더 나은이 같은 루프 전에 변수를 초기화 : 파이썬에서 exists()
의 개념은 (다른 프로그래밍 언어에서처럼)이 없습니다
choice = None
while choice is None:
# your code
첫 번째 옵션은'choice'가 정의되었지만 함수의 바깥 쪽에서 정의 된 함수 내에서 작동하지 않습니다. – martineau
. 이 경우
found = False
while not found:
found = search()
search()
어떤 시점에서 found
에 바인딩 값을 변경 선택의 방법을 나타냅니다 : 우리는 일반적으로 다음과 같은 접근 방식처럼 falsish 값 문제의 변수를 부울 평가를 사용하여 초기화 참된 사람에게.
음,'hasattr'이 있지만, 모듈 수준의 변수로 사용할 수 있다고는 생각하지 않습니다. –
fanks__________ –
@tobias_k : 물론 항상 해킹이 있습니다. 이 경우에도 명확하게 모듈 수준 이름의 존재 여부를 검사 할 수있는 방법이 있습니다. 왜냐하면 : 파이썬의 모든 이름은 사전에 저장됩니다. –
거의 파이썬 식으로해야 할 일 :
def exists(variable):
try:
eval(variable)
except NameError:
return False
return True
while not exists('choice'):
choice = 42
print(choice)
내가 더 그렇게 될 것이기 때문 "거의"단지 루프 자체에
try/except
을 넣어 말 :
done = False
while not done:
try:
# do stuff with choice
choice = 42
print(choice)
done = True
except NameError:
pass
방법으로 초기화에 대한 'choice = None'? –
거기에 초기화하지 않고있는 방법, 선택 거짓 또는 뭔가? –
아니요 'choice'를 사용하여 while 루프를 시작하면 초기화해야합니다. 그러나 Tobias가 말했듯이, 당신은 단지'None'을 만들고'choice == None while : '을 말하면됩니다. – Gullydwarf