我的控制声明如下:
if x < 0 or x >= ht or y < 0 or y >= wdt:
im_warped[i][j] = 0
else:
im_warped[i][j] = im[x][y]
结果如下:
if 0 < x < ht and 0 < y < wdt:
im_warped[i][j] = im[x][y]
我没有为第二个控制语句指定else case,即使我确信这样的值(超出了界限)确实存在。那么这里到底发生了什么?它们是否自动被赋值为零/空值(我认为这不太可能)
Tags:
if
语句有块,而不是值。你好像把这和ternary operator搞混了。例如,在表中,如果你写当
condition
为true时,整个语句的值将被计算为x
。如果你写信然后每当
condition
为真时,表达式if condition then x else y
将被计算为x
,因此x
将被分配给z
。你知道吗但是,在Python中
Python期望
x
不是值,而是指令。在第一个示例中,您有im_warped[i][j]=0
。这是一条指令:它告诉Python将0
赋值给im_warped[i][j]
。如果你要写这将在Python中返回一个错误,因为在Python中,如果then else不是三元运算符,它是一个控制语句。它不返回任何条件值或默认值。相反,它运行代码。默认情况下,不运行任何代码。编写
if x < 0 or x >= ht or y < 0 or y >= wdt: im_warped[i][j] = 0
时,返回值的不是if-then-else
语句;而是将0
的值放在它运行的代码中。你知道吗Python中有一个三元运算符,但其语法略有不同:它是
conditional_result if condition else default
。所以你的第一个例子可以写成如果你要写
如果没有
else
,则返回一个错误。你知道吗如果没有else块,那么数据将不会发生任何其他变化。您的
im_warped
数组将只根据if语句修改一个条目那么,您的问题的答案取决于在到达if语句之前对该数据所做的处理。如果它是用
np.zeros
创建的numpy
数组,那么默认情况下它的所有条目都是0。如果是从其他地方获取的数据,那么这些默认值可以是任意值,并且取决于输入数据的外观。你知道吗相关问题 更多 >
编程相关推荐