来自某事的引用:
>>> x = y = somefunction()
Run Code Online (Sandbox Code Playgroud)
是相同的
>>> y = somefunction()
>>> x = y
Run Code Online (Sandbox Code Playgroud)
问题:是
x = y = somefunction()
Run Code Online (Sandbox Code Playgroud)
同样的
x = somefunction()
y = somefunction()
Run Code Online (Sandbox Code Playgroud)
?
根据我的理解,它们应该是相同的,因为somefunction只能返回一个值.
我很困惑,连续相等=可以在python中使用:
a = b = c
Run Code Online (Sandbox Code Playgroud)
这个语言功能叫什么?有什么我可以读到的吗?
可以生成4等于?
a = b = c = d
Run Code Online (Sandbox Code Playgroud) 我正在为教育Python库编写一个链表.以下是代码的重要摘要:
class Element(object):
def __init__(self, value, next):
self.value = value
self.next = next
class LinkedList(object):
def __init__(self):
self.head = None
self.tail = None
def insert_back(self, element):
if self.empty():
self.insert_front(element)
else:
self.tail.next = Element(element, None)
self.tail = self.tail.next
# I'd like to replace the above two lines with this
# self.tail = self.tail.next = Element(element, None)
Run Code Online (Sandbox Code Playgroud)
我的问题来自最后一行.根据这个问题的最佳答案,Python对链式赋值的独特实现是罪魁祸首.
在其他语言中,最后一行与其上面的两行具有相同的效果,但Python Element(element, None)首先计算表达式,然后从左到右分配结果,因此self.tail在之前分配self.tail.next.这导致前一个tail元素没有引用新的tail元素,而新的tail元素引用自身.
我的问题是:有没有办法用一个语句执行这两个任务?
我完全满足于使用更明确的两行分配; 这只是为了好奇心.
我正在读一本关于Python的书,关于多目标任务的书中有一个特殊的部分.现在这本书解释如下:

但我没有看到这个的使用.这对我来说毫无意义.为什么要使用更多变量?有理由这样做吗?是什么让这与使用如此不同:a='spam'然后打印a3次?
我只能想到用它来清空一行中的变量.