2024-10-06 11:18:15 发布
网友
我在python中遇到了类似这样的东西,不知道如何理解这些代码:
somedict['some_key'] = some_val = form.some_field.data
对于某些语义上下文,赋值语句包含一个值,即分配给等号左侧变量的值。在这个比喻中,你可以认为这是
x = (y = z)
z的值被赋值给y;这也是赋值的值。将作为括号中表达式的值返回,然后将其赋值给x。你知道吗
z
y
x
实际上,编译器只是将值留在寄存器中,然后执行第二个“存储”操作。你知道吗
这与:
some_val = form.some_field.data somedict['some_key'] = some_val
顺序通常并不重要,因为只有右边的一个可以是不可赋值的,比如方法调用、lambda调用、关键字等等。。。你知道吗
我在实践中看到的一些地方是这样的:
new, assigned, complete = all_modes = "new assigned complete".split()
x = y = z等价于x = z; y = z(是的,按顺序),只是z只计算一次。你知道吗
x = y = z
x = z; y = z
或者,在Python“编译”代码方面:
>>> compiled_code = compile("x = y = z", filename='con', mode='single') >>> import dis >>> dis.dis(compiled_code) 1 0 LOAD_NAME 0 (z) 2 DUP_TOP 4 STORE_NAME 1 (x) 6 STORE_NAME 2 (y) 8 LOAD_CONST 0 (None) 10 RETURN_VALUE
对于某些语义上下文,赋值语句包含一个值,即分配给等号左侧变量的值。在这个比喻中,你可以认为这是
z
的值被赋值给y
;这也是赋值的值。将作为括号中表达式的值返回,然后将其赋值给x
。你知道吗实际上,编译器只是将值留在寄存器中,然后执行第二个“存储”操作。你知道吗
somedict['some_key'] = some_val = form.some_field.data
这与:
顺序通常并不重要,因为只有右边的一个可以是不可赋值的,比如方法调用、lambda调用、关键字等等。。。你知道吗
我在实践中看到的一些地方是这样的:
new, assigned, complete = all_modes = "new assigned complete".split()
x = y = z
等价于x = z; y = z
(是的,按顺序),只是z
只计算一次。你知道吗或者,在Python“编译”代码方面:
相关问题 更多 >
编程相关推荐