将ax or plt.gca()赋值给ax是为了确保ax的值对于函数作用域的其余部分不是None。如果使用ax参数的非None值调用函数,则该行没有任何效果,因为对右侧表达式的求值将在or处停止,因为左侧操作数不是None已经满足了这一要求。
如果没有ax参数被传递给函数,或者如果它被显式设置为None,则对ax or plt.gca()的求值会导致后者的返回值,因为ax,即None,不满足表达式,因此or后面的余数必须覆盖它。^{}'s documentation表示在本例中第29行调用的方法将确保返回none-null对象。你知道吗
如果第一个操作数的计算结果为
True
,则表达式的计算结果为第一个操作数:如果第一个操作数的计算结果为
False
,则表达式的计算结果为第二个操作数:以下是一些计算结果与
False
相同的值:所以,在这一行:
如果
ax
是None
,则表达式的计算结果是第二个操作数plt.gca()
。你知道吗ax
将假定ax
和plt.gca()
的结果之间的
or
运算的结果 详见Wikipedia。你知道吗解释
您可以将第29行理解为向
ax
提供回退值的一种方法,如果
ax
作为函数参数传递(因此它不是None
),传递的值将分配给ax
,否则(
ax
为无)plt.gca()
将分配给ax
因为
None OR plt.gca()
的结果是plt.gca()
它将返回的任何东西。你知道吗第29行是:
ax = ax if ax is not None else plt.gca()
在所引用代码的line 29范围内,
ax
是默认为None
的函数参数。你知道吗将}'s documentation 表示在本例中第29行调用的方法将确保返回none-null对象。你知道吗
ax or plt.gca()
赋值给ax
是为了确保ax
的值对于函数作用域的其余部分不是None
。如果使用ax
参数的非None
值调用函数,则该行没有任何效果,因为对右侧表达式的求值将在or
处停止,因为左侧操作数不是None
已经满足了这一要求。 如果没有ax
参数被传递给函数,或者如果它被显式设置为None
,则对ax or plt.gca()
的求值会导致后者的返回值,因为ax
,即None
,不满足表达式,因此or
后面的余数必须覆盖它。^{长话短说,
or
运算符不仅适用于布尔操作数,而且适用于None
和非None
值,就像它适用于False
和True
一样。你知道吗相关问题 更多 >
编程相关推荐