728x90
반응형
질문 : 파이썬 변수가 함수인지 어떻게 감지합니까?
변수 x
가 있고 그것이 함수를 가리키는 지 여부를 알고 싶습니다.
다음과 같이 할 수 있기를 바랐습니다.
>>> isinstance(x, function)
그러나 그것은 나에게 준다.
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'function' is not defined
내가 선택한 이유는
>>> type(x)
<type 'function'>
답변
Python 2.x 또는 Python 3.2 이상인 경우 callable()
사용할 수 있습니다. 이전에는 더 이상 사용되지 않았지만 이제는 더 이상 사용되지 않으므로 다시 사용할 수 있습니다. 여기에서 토론을 읽을 수 있습니다 : http://bugs.python.org/issue10518 . 다음과 같이 할 수 있습니다.
callable(obj)
이것이 Python 3.x이지만 3.2 이전 인 경우 객체에 __call__
속성이 있는지 확인하십시오. 다음과 같이 할 수 있습니다.
hasattr(obj, '__call__')
자주 제안 types.FunctionTypes
또는 inspect.isfunction
접근 방식 (모두가 할 똑같은 일을 )주의의 번호와 함께 제공됩니다. 비 Python 함수에 대해 False
를 반환합니다. 예를 들어 대부분의 내장 함수 는 Python이 아닌 C로 구현되므로 False
를 반환합니다.
>>> isinstance(open, types.FunctionType)
False
>>> callable(open)
True
따라서 types.FunctionType
은 놀라운 결과를 제공 할 수 있습니다. 오리 유형 개체의 속성을 확인하는 올바른 방법은 오리 크기의 컨테이너에 맞는지 확인하는 것이 아니라 돌팔이인지 묻는 것입니다.
출처 : https://stackoverflow.com/questions/624926/how-do-i-detect-whether-a-python-variable-is-a-function
728x90
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python에서 문자열 Reverse (0) | 2021.08.25 |
---|---|
Windows에 pip를 설치하는 방법 (0) | 2021.08.23 |
조건식을 기반으로 pandas DataFrame에서 행을 삭제하는 방법 (0) | 2021.08.20 |
Python 3.x에서 목록을 반환할 map() 가져오기 (0) | 2021.08.20 |
Python에서 날짜를 datetime으로 변환 (0) | 2021.08.20 |