Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Python允许使用';和';在存储变量时?_Python_Variables - Fatal编程技术网

为什么Python允许使用';和';在存储变量时?

为什么Python允许使用';和';在存储变量时?,python,variables,Python,Variables,我看到某个地方存储了一个变量,两个变量之间有一个和。你知道这样做的目的吗?它似乎只将第二个值存储为变量,即使第二个值是None y = 5 and 7 print(y) 7 h = None y = 5 and h None 这有什么目的吗?我想知道为什么它不只是抛出一个错误,因为第一个值似乎总是被忽略。 这不是一个重复的问题,因为没有关于以这种方式存储变量的问题,我的措辞与假设的重复完全不同。Stack Overflow的创始人说,即使问题是重复的,如果措辞不同,也不是重复的,因

我看到某个地方存储了一个变量,两个变量之间有一个
。你知道这样做的目的吗?它似乎只将第二个值存储为变量,即使第二个值是
None

y = 5 and 7
print(y)

7


h = None
y = 5 and h

None  
这有什么目的吗?我想知道为什么它不只是抛出一个错误,因为第一个值似乎总是被忽略。 这不是一个重复的问题,因为没有关于以这种方式存储变量的问题,我的措辞与假设的重复完全不同。Stack Overflow的创始人说,即使问题是重复的,如果措辞不同,也不是重复的,因为有些问题的措辞必须不同,以便更多的人找到他们正在搜索的答案。假设的副本根本不会问或回答我的问题

它似乎只将第二个值存储为变量,即使第二个值是
None

y = 5 and 7
print(y)

7


h = None
y = 5 and h

None  
尝试将
False
作为第一个操作数:

False and True
# False
a和b
是执行的。它在布尔上下文(如上所述)中非常有用,但Python没有理由不允许在布尔类型以外的类型的赋值中使用它:

a = None and 'hello'
# a is None.

赋值的右边和右边是一个表达式。它可以是任何法律表达

5和7
在Python中到处都是合法表达式,为什么它不在赋值的右侧是合法表达式呢?这将是一个奇怪的规则例外,而规则例外是不好的,因为它们使语言更难学习

换言之:

这是合法的:

打印(5和7)
因此,从逻辑上讲,这也应该是合法的:

y=5和7
打印(y)

其他一切都会让人困惑。

试试
None和5
为什么会抛出错误,
x和y
是一个有效的表达式<代码>和
如果抛出一个错误,将是非常无用的,为什么不呢?这是一个有效的表达,你可以在赋值语句中使用这个结果。有人把这个标记为重复的,但这个问题被称为重复的,几乎和我的问题相似,我想我没有追索权了?这对Q上回答问题的任何人以及将来寻找答案的任何人来说都是一种伤害。我的首席执行官在采访中说,重新措辞的问题不是重复的,我的问题不仅仅是重新措辞,因为它是关于变量的。我甚至看不出是谁对我的问题做的。好吧,那么第一个值的存在或不存在是一个布尔?有道理。@grissler“所以第一个值的存在或不存在是一个布尔”不,不是@juanpa.arrivillaga医生说
x和y:如果x为假,那么x,否则y
我不明白如果x为假,变量如何等于x。我理解
通常是如何工作的,只是在定义变量的情况下不理解。@grissler定义变量是不相关的。它的工作原理与x和y的工作原理相同。x不是假的。在真值测试中,所有对象都有一个“真值”,即“真实性”。它们的行为是真或假,但它们不是
true
false
@juanpa.arrivillaga在这个用法中,当它存储为变量时,除了最后的元素外,所有元素都是布尔以外的其他元素吗?