有人能解释一下这个Python(variable=type,variable=list=list等等)吗?
我一直在看一些Python国际象棋模块的代码,看到了我从未见过的语法有人能解释一下这个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",
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中很少需要显式引用类型名称。我能想到的最不做作的例子是,如果你想创建一个默认的单色dictpieces=defaultdict(颜色)
可能比pieces=defaultdict(bool)
读得更好。