sự khác biệt giữa là gì:Sự khác biệt trong python giữa basestring và types.StringType?
isinstance(foo, types.StringType)
và
isinstance(foo, basestring)
?
sự khác biệt giữa là gì:Sự khác biệt trong python giữa basestring và types.StringType?
isinstance(foo, types.StringType)
và
isinstance(foo, basestring)
?
Đối python2: basestring
là lớp cơ sở cho cả str
và unicode
, trong khi types.StringType
làstr
. Nếu bạn muốn kiểm tra xem có gì đó là chuỗi không, hãy sử dụng basestring
. Nếu bạn muốn kiểm tra xem nội dung nào đó có phải là sự kiện hay không, hãy sử dụng str
và quên khoảng types
.
công cụ này là hoàn toàn khác nhau trong Python3
types
không còn StringType
str
phải lúc nào cũng unicode
basestring
không còn tồn tại
Vì vậy, cố gắng không để rắc thứ mà thông qua mã của bạn quá nhiều nếu bạn có thể cần phải cổng nó
>>> import types
>>> isinstance(u'ciao', types.StringType)
False
>>> isinstance(u'ciao', basestring)
True
>>>
Khá khác biệt quan trọng, có vẻ như với tôi ;-).
Đối với Python 2.x:
try:
basestring # added in Python 2.3
except NameError:
basestring = (str, unicode)
...
if isinstance(foo, basestring):
...
Tất nhiên điều này có thể không làm việc cho Python 3, nhưng tôi khá chắc chắn bộ chuyển đổi 2to3 sẽ chăm sóc của chủ đề.