반응형
변수가 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
반응형
'source' 카테고리의 다른 글
Java: Python의 범위(int, int)와 동등합니까? (0) | 2022.11.25 |
---|---|
Linux 위의 MariaDB | .sql 데이터베이스 접근 (0) | 2022.11.25 |
지정된 행을 삽입할 때 MariaDB는 타임스탬프를 저장합니까? (0) | 2022.11.25 |
Mysql TRIM()이 작동하지 않습니다. (0) | 2022.11.25 |
대소문자를 구분하지 않음 (0) | 2022.11.25 |