有人能解释一下这个Python(variable=type,variable=list=list等等)吗?

有人能解释一下这个Python(variable=type,variable=list=list等等)吗?,python,Python,我一直在看一些Python国际象棋模块的代码,看到了我从未见过的语法 Color = bool COLORS = [WHITE, BLACK] = [True, False] COLOR_NAMES = ["black", "white"] PieceType = int PIECE_TYPES = [PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING] = range(1, 7) PIECE_SYMBOLS = [None, "p", "n", "b", "r",

我一直在看一些Python国际象棋模块的代码,看到了我从未见过的语法

Color = bool
COLORS = [WHITE, BLACK] = [True, False]
COLOR_NAMES = ["black", "white"]

PieceType = int
PIECE_TYPES = [PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING] = range(1, 7)
PIECE_SYMBOLS = [None, "p", "n", "b", "r", "q", "k"]
PIECE_NAMES = [None, "pawn", "knight", "bishop", "rook", "queen", "king"]
1)
Color=bool
行的要点是什么

2) 如何将
颜色
分配给两个列表?(与
工件类型相同
?)

完整代码:
相关内容从第41行开始,它只是序列解包和链式分配的组合。相当于

WHITE = True
BLACK = False
COLORS = [WHITE, BLACK]
Color=bool
仅使
Color
引用与名称
bool
相同的值(即内置类型
bool
)。这同样适用于
PieceType
;这两种方法大概都是后来使用的

一个不那么粗俗的实现将使用
enum
模块。差不多

from enum import Enum, IntEnum

class Color(IntEnum):
    BLACK = 0
    WHITE = 1

class Piece(Enum):
    PAWN = ("p", "pawn")
    KNIGHT = ("n", "knight")
    BISHOP = ("b", "bishop")
    ROOK = ("r", "rook")
    QUEEN = ("q", "queen")
    KING = ("k", "king")

Color
是一个保存类型
bool
的变量

第二行最好分为两部分进行解释。我们从右向左评估赋值,因此首先它创建一个包含两个变量的列表,分别为
True
False
赋值。然后将这些存储为
颜色

Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> Color = bool
>>> COLORS = [WHITE, BLACK] = [True, False]
>>> COLOR_NAMES = ["black", "white"]
>>> COLORS
[True, False]
>>> Color
<class 'bool'>
>>> WHITE
True
>>> BLACK
False
>>>
Python 3.5.2(默认,2018年11月12日13:43:14)
[GCC 5.4.0 20160609]在linux上
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>颜色=布尔
>>>颜色=[白色,黑色]=[正确,错误]
>>>颜色名称=[“黑色”、“白色”]
>>>颜色
[对,错]
>>>颜色
>>>白色的
真的
>>>黑色的
假的
>>>

旁注:不喜欢将布尔值用于应该是2个案例的枚举。没有理由阻止你的象棋引擎能够处理4路棋,当必要的修改是如此之小;我计划用一个示例
Enum
实现来更新答案,尽管它不是OP的代码,它只是切点相关的。是的。如果我有时间的话,我想在我的答案上加上这些“切题相关”的花絮。它只是把问题和学习带到下一步如果它在Git上,你能链接到完整的代码吗?主教只能靠他们斜行时开始的颜色生活。也许这是一个确认步骤?更可能是设计棋盘。我认为颜色指的是棋子本身,而不是棋子所在方格的颜色。嗨,查理,欢迎光临。阅读后请考虑标题中的更新。这将有助于保持搜索和获取信息的便捷性。祝你好运@chepner@Jim谢谢-我想我现在明白代码的作用了。但你为什么要这么做?例如,为什么将变量
color
分配给
bool
会有用?它是
bool
的一个特定于使用的别名,尽管在Python中很少需要显式引用类型名称。我能想到的最不做作的例子是,如果你想创建一个默认的单色dict
pieces=defaultdict(颜色)
可能比
pieces=defaultdict(bool)
读得更好。