source

변수가 Python에 정의되어 있는지 확인합니다.

factcode 2022. 11. 25. 20:48
반응형

변수가 Python에 정의되어 있는지 확인합니다.

런타임에 코드의 특정 위치에 변수가 설정되어 있는지 어떻게 알 수 있습니까?(1) 변수를 조건부로 설정할 수 있고 (2) 변수를 조건부로 삭제할 수 있기 때문에 이것이 항상 명확한 것은 아닙니다.저는 이런 걸 찾고 있어요defined()Perl 또는isset()PHP 또는defined?루비로.

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()

현학적이라면 빌트인 체크도 할 수 있습니다.
'a' in vars(__builtins__)

그 상황은 피하는 게 좋을 것 같아요.보다 명확하고 알기 쉬운 기술:

a = None
if condition:
    a = 42
try:
    a # does a exist in the current namespace
except NameError:
    a = 10 # nope

이 경우에는 하는 것이 좋습니다.a = None대신del a. 객체에 대한 참조 수가 감소합니다.a(있는 경우) 에 할당되어 있어, 다음에 실패해도 실패하지 않는다.a정의되어 있지 않습니다.주의:del스테이트먼트는 오브젝트의 소멸자를 직접 호출하지 않지만 변수에서 바인드 해제됩니다.참조 카운트가 0이 되면 오브젝트의 소멸자가 호출됩니다.

이것이 필요할 수 있는 상황 중 하나는 다음과 같습니다.

사용하시는 경우finally접속을 닫으려면 차단하지만try차단, 프로그램이 종료됩니다.sys.exit()접속을 정의하기 전에,이 경우,finally연결이 생성되지 않았기 때문에 블록이 호출되고 연결 닫힘 문이 실패합니다.

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

반응형