스택큐힙리스트

파이썬 변수의 유형을 확인하는 가장 좋은 (관용적인) 방법은 무엇인가요? [중복] 본문

카테고리 없음

파이썬 변수의 유형을 확인하는 가장 좋은 (관용적인) 방법은 무엇인가요? [중복]

스택큐힙리스트 2023. 4. 25. 05:02
반응형

이 질문은 이미 답변이 있습니다 :

What are the differences between type() and isinstance()?

1. Hello - 안녕하세요

2. Goodbye - 안녕히 가세요

3. Thank you - 감사합니다

4. Please - 부탁합니다

5. Yes - 예

6. No - 아니요

7. I love you - 사랑해요

8. Sorry - 죄송합니다

10년 전에 닫혔습니다.

파이썬에서 변수가 문자열인지 딕셔너리인지 알아내야 합니다. 다음 코드에 문제가 있는지 알려주세요.

if type(x) == type(str()):

do_something_with_a_string(x)

elif type(x) == type(dict()):

do_somethting_with_a_dict(x)

else:

raise ValueError

업데이트: 저는 avisser의 답변을 받아 들였습니다. (하지만 누군가가 왜 isinstance 보다 type(x) is이 좋은지 설명한다면 제 생각을 바꿀 수도 있습니다.)

그러나 nakedfanatic님이 일련의 if/elif/else문 대신 dict(사례문으로)를 사용하는 것이 종종 더 깨끗하다는 것을 상기시켜 주신 덕분에 감사합니다.

제 사용 사례에 대해 더 자세히 설명하겠습니다. 변수가 문자열이면 리스트에 넣어야합니다. 딕셔너리인 경우 고유한 값의 리스트가 필요합니다. 다음은 제가 생각한 것입니다.

def value_list(x):

cases = {str: lambda t: [t],

dict: lambda t: list(set(t.values()))}

try:

return cases[type(x)](x)

except KeyError:

return None

만약 #$ @ #! @ & @$ &가 선호되면 이 #$! ^ & * $! $ & 함수를 어떻게 작성하시겠습니까?

답변 1

당신의 함수에 누군가가 유니코드 문자열을 전달하거나 dict에서 파생된 클래스를 전달하거나 dict와 유사한 인터페이스를 구현하는 클래스를 전달하면 어떻게 될까요? 아래의 코드는 첫 번째와 두 번째 경우를 다룹니다. 만약 Python 2.6을 사용한다면 ABC PEP을 대신해서 collections.Mapping를 사용할 수도 있습니다.

def value_list(x):

if isinstance(x, dict):

return list(set(x.values()))

elif isinstance(x, basestring):

return [x]

else:

return None

답변 2

파이썬에서 변수의 유형을 확인하는 데 어떤 방법이 가장 좋을까요? 혹자는 isinstance() 함수를 사용하여 변수의 유형을 확인하는 것이 권장되고 있지만, 이 방법은 종종 다른 오류를 일으킬 수 있습니다. 때로는 좀 더 명확하고 신뢰성 높은 방법이 필요할 수 있습니다.

그렇다면 어떤 방법이 가장 좋을까요? 파이썬에서 변수의 유형을 확인하는 가장 좋은 방법은 type() 함수를 사용하는 것입니다. 이 함수는 변수의 타입을 돌려주는 기능을 합니다. 다음은 type() 함수를 사용한 예제입니다.

```

x = 5

print(type(x)) #

y = Hello, World!

print(type(y)) #

```

위의 예제에서, type() 함수는 각 변수 x와 y의 유형을 알려주었습니다. 결과 값에서 class 뒤에 있는 문자열이 변수의 유형을 나타내는 것을 볼 수 있습니다. 이를 통해, 변수의 유형을 더욱 명확하게 알 수 있습니다.

따라서, 변수의 유형을 파이썬에서 확인하는 가장 좋은 방법은 type() 함수를 사용하는 것입니다. 이 함수를 사용하여, 변수의 유형을 정확하게 확인할 수 있습니다. 이를 통해, 프로그래머들은 보다 높은 신뢰성과 안정성을 가진 프로그램을 만들 수 있습니다.

반응형
Comments