如何使用unicode_literals引用pygame颜色?

时间:2012-06-30 22:11:12

标签: python unicode pygame

使用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

2 个答案:

答案 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)