내가 호출 할 수있는이 일순서에서 "튜플과리스트"와 같은 시퀀스 객체를 구별하는 pythonics의 방법이 다음과 같이
def print_stuff(items):
if isinstance(items, (str, bytes)):
items = (items,)
for item in items:
print (item)
같은 기능을 가지고 "바이트 및 STR"와 같은 객체 :
In [37]: print_stuff(('a', 'b'))
a
b
In [38]: print_stuff('a')
a
나는 MAGIC 다른 시퀀스 산부인과를 포함 할 수있는 모든 시퀀스 객체의 ABC이다 isinstance(item, (collections.abc.MAGIC))
을하는 것을 선호 isinstance (items, (str, bytes))
일을 좋아하지 않는다 jects 같은
- 튜플
- 로 numpy.array
- 일부 사용자 정의 벡터 클래스 등
아니라 :
- STR
- 바이트
- UTF-16에 대한 몇 가지 사용자 정의 STR 클래스 등
내가 tuple
과 str
이 같은 7 상식 :(
In [49]: [v for k, v in vars(collections.abc).items()
...: if inspect.isclass(v) and issubclass(tuple, v) ]
Out[49]:
[collections.abc.Hashable,
collections.abc.Iterable,
collections.abc.Reversible,
collections.abc.Sized,
collections.abc.Container,
collections.abc.Collection,
collections.abc.Sequence]
In [50]: [v for k, v in vars(collections.abc).items()
...: if inspect.isclass(v) and issubclass(list, v) ]
Out[50]:
[collections.abc.Iterable,
collections.abc.Reversible,
collections.abc.Sized,
collections.abc.Container,
collections.abc.Collection,
collections.abc.Sequence,
collections.abc.MutableSequence]
In [51]: [v for k, v in vars(collections.abc).items()
...: if inspect.isclass(v) and issubclass(str, v) ]
Out[51]:
[collections.abc.Hashable,
collections.abc.Iterable,
collections.abc.Reversible,
collections.abc.Sized,
collections.abc.Container,
collections.abc.Collection,
collections.abc.Sequence]
사용 예제가 분명하지 않습니다. * print_stuff ("ab") *에서 예상되는 결과는 무엇입니까? – guidot
대문자로 질문을 시작하지 않은 이유는 무엇입니까? –
[변수의 유형이 문자열인지 확인하는 방법]의 가능한 복제본 (http://stackoverflow.com/questions/4843173/how-to-check-if-type-of-a-variable-is-string) –