development

변수가 파이썬에 정의되어 있는지 확인

big-blog 2020. 2. 26. 07:56
반응형

변수가 파이썬에 정의되어 있는지 확인


가능한 중복 :
파이썬에서 변수가 정의되어 있는지 확인하는 쉬운 방법은 무엇입니까?
파이썬에 변수가 있는지 어떻게 확인합니까?

런타임에 변수가 코드의 특정 위치에 설정되었는지 어떻게 알 수 있습니까? (1) 변수를 조건부로 설정할 수 있고 (2) 변수를 조건부로 삭제할 수 있기 때문에 항상 분명하지는 않습니다. defined()Perl이나 isset()PHP 또는 defined?Ruby 와 같은 것을 찾고 있습니다.

if condition:
    a = 42

# is "a" defined here?

if other_condition:
    del a

# is "a" defined here?

try:
    thevariable
except NameError:
    print("well, it WASN'T defined after all!")
else:
    print("sure, it was defined.")

'a' in vars() or 'a' in globals()

당신이 pedantic되고 싶다면, 당신은 내장도 확인할 수 있습니다
'a' in vars(__builtins__)


상황을 피하는 것이 낫다고 생각합니다. 작성하는 것이 더 깨끗하고 명확합니다.

a = None
if condition:
    a = 42

try:
    a # does a exist in the current namespace
except NameError:
    a = 10 # nope

이것이 필요할 수있는 한 가지 가능한 상황 :

finally블록을 사용하여 연결을 닫지 만 try블록에서 사용하는 sys.exit()경우 연결이 정의되기 전에 프로그램이 종료 됩니다. 이 경우 finally연결이 작성되지 않아 블록이 호출되고 연결 종료 명령문이 실패합니다.


이 경우에는 a = None대신 대신하는 것이 좋습니다 del a. 이것은 객체 a대한 참조 카운트를 감소시키고 (있는 경우) a정의 되지 않은 경우 실패 하지 않습니다. del문장은 객체의 소멸자를 직접 호출하지 않지만 변수에서 바인딩 해제합니다. 참조 카운트가 0이되면 객체의 소멸자가 호출됩니다.

참고 URL : https://stackoverflow.com/questions/1592565/determine-if-variable-is-defined-in-python



반응형