Python returns 字符串既是str又是unicode类型
Python returns string is both str and unicode type
我们有一个可以通过 IronPython(版本 2.7.5)自定义的 .NET 应用程序
脚本代码如下:
stringToPlay = # get it from our .NET app interface toward python here. The method returns .NET string
Log.Write("isinstance(stringToPlay, unicode): ", str(isinstance(stringToPlay, unicode)))
Log.Write("isinstance(stringToPlay, str): ", str(isinstance(stringToPlay, str)))
两条日志行都会 return True ??
stringToPlay 值为“Ћирилица”。
当 str 和 unicode 应该是两个独立的 类 都继承自 basestring 时,这怎么可能?
谢谢
在IronPython中,str
类型和unicode
类型是同一个对象。 .NET 字符串类型为 unicode。
IronPython 在 str
和 unicode
之间没有区别,如果您习惯了 CPython 2 语义,这可能会非常混乱。事实上,basestring
和 unicode
都是 str
.
的别名
IronPython 2.7.4 (2.7.0.40) on .NET 4.0.30319.42000 (32-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>> unicode
<type 'str'>
>>> basestring
<type 'str'>
关于字符串,IronPython (2.X) 的行为更像 Python 3,有点烦人的事实是您无法区分 unicode
和 str
如果你想根据类型解码/编码(而且由于它仍然是 Python 2,所以也没有 bytes
)。
我们有一个可以通过 IronPython(版本 2.7.5)自定义的 .NET 应用程序
脚本代码如下:
stringToPlay = # get it from our .NET app interface toward python here. The method returns .NET string
Log.Write("isinstance(stringToPlay, unicode): ", str(isinstance(stringToPlay, unicode)))
Log.Write("isinstance(stringToPlay, str): ", str(isinstance(stringToPlay, str)))
两条日志行都会 return True ??
stringToPlay 值为“Ћирилица”。
当 str 和 unicode 应该是两个独立的 类 都继承自 basestring 时,这怎么可能?
谢谢
在IronPython中,str
类型和unicode
类型是同一个对象。 .NET 字符串类型为 unicode。
IronPython 在 str
和 unicode
之间没有区别,如果您习惯了 CPython 2 语义,这可能会非常混乱。事实上,basestring
和 unicode
都是 str
.
IronPython 2.7.4 (2.7.0.40) on .NET 4.0.30319.42000 (32-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>> unicode
<type 'str'>
>>> basestring
<type 'str'>
关于字符串,IronPython (2.X) 的行为更像 Python 3,有点烦人的事实是您无法区分 unicode
和 str
如果你想根据类型解码/编码(而且由于它仍然是 Python 2,所以也没有 bytes
)。