使用unicode_literals
时使用pygame.Color名称的正确方法是什么?
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
>>> pygame.ver
'1.9.2pre'
>>> pygame.Color('red')
(255, 0, 0, 255)
>>> from __future__ import unicode_literals
>>> pygame.Color('red')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid argument
答案 0 :(得分:1)
>>> type('red')
str
>>> from __future__ import unicode_literals
>>> type('red')
unicode
>>> type(str('red'))
str
>>> import pygame
>>> pygame.ver
'1.9.1release'
>>> pygame.Color(str('red'))
(255, 0, 0, 255)
答案 1 :(得分:1)
当启用unicode_literals
时,Python 2以与Python 3相同的方式解释字符串文字。也就是说,'red'
是一个Unicode字符串(在Python 2中称为unicode
,{{1在3)中,str
是一个字节串(在Python 2中称为b'red'
或str
,在Python 3中称为bytes
。
由于bytes
只接受字节字符串,因此将其传递给pygame.Color
:
>>> from __future__ import unicode_literals >>> pygame.Color('red') Traceback (most recent call last): File "", line 1, in ValueError: invalid argument >>> pygame.Color(b'red') (255, 0, 0, 255)