#include
работы точно так же, как C #include
.
#import
отслеживает, которых были уже включены заголовки, и проигнорирован, если заголовок импортируется несколько раз в единице компиляции. Это делает ненужным использовать защиту заголовка.
нижняя строка является просто использованием #import
в Objective C, и не волнуйтесь, завершают ли Ваши заголовки импорт чего-то несколько раз.
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.
Чтобы проверить, является ли объект 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 .