Как узнать, является ли объект Python строкой?

#include работы точно так же, как C #include.

#import отслеживает, которых были уже включены заголовки, и проигнорирован, если заголовок импортируется несколько раз в единице компиляции. Это делает ненужным использовать защиту заголовка.

нижняя строка является просто использованием #import в Objective C, и не волнуйтесь, завершают ли Ваши заголовки импорт чего-то несколько раз.

377
задан dreftymac 1 October 2016 в 11:01
поделиться

3 ответа

Python 2

Используйте isinstance (obj, basestring) для объект-тест объект .

Документы .

297
ответ дан 22 November 2019 в 23:57
поделиться

I might deal with this in the duck-typing style, like others mention. How do I know a string is really a string? well, obviously by converting it to a string!

def myfunc(word):
    word = unicode(word)
    ...

If the arg is already a string or unicode type, real_word will hold its value unmodified. If the object passed implements a __unicode__ method, that is used to get its unicode representation. If the object passed cannot be used as a string, the unicode builtin raises an exception.

5
ответ дан 22 November 2019 в 23:57
поделиться

Чтобы проверить, является ли объект o строковым типом подкласса строкового типа:

isinstance(o, basestring)

, потому что и str , и unicode являются подклассами basestring .

Чтобы проверить, является ли тип o точно str :

type(o) is str

Чтобы проверить, что o является экземпляром str или любого подкласса str :

isinstance(o, str)

Вышеупомянутое также работает для строк Unicode, если вы замените str с unicode .

Однако вам может вообще не понадобиться выполнять явную проверку типов. "Утиный ввод" может соответствовать вашим потребностям. См. http://docs.python.org/glossary.html#term-duck-typing .

См. Также Каков канонический способ проверки типа в python?

171
ответ дан 22 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: