python的动态特性
我是编程MG和python的新手。 当我这样做时:python的动态特性,python,Python,我是编程MG和python的新手。 当我这样做时: j = 100 k = 200 l = j + k l 300 现在,如果我改变J的值,我希望l的输出会不同。为什么输出是相同的,我如何才能使它改变 j = 250 l 300 排队的时候 l = j + k 如果超出此范围,Python大致执行以下操作: 加载当前绑定到名称j和k的对象。这里,这将是整数100和200 执行添加。这将创建一个新的int对象,其值为300 将名称l绑定到结果对象 正如您所看到的,l只是绑定到
j = 100
k = 200
l = j + k
l
300
现在,如果我改变J的值,我希望l的输出会不同。为什么输出是相同的,我如何才能使它改变
j = 250
l
300
排队的时候
l = j + k
如果超出此范围,Python大致执行以下操作:
j
和k
的对象。这里,这将是整数100
和200
int
对象,其值为300
l
绑定到结果对象l
只是绑定到一个整数,这个整数不再“知道”它来自何处。这不是“动态”的意思。将值分配给变量后,该变量将保留该值,直到为其分配不同的值
动态语言是那些其变量在运行时可以采用任何类型的语言,通常甚至可以在其生命周期内保存多个不同类型的值:
a = 1
print a
a = "hello"
print a
也就是说,您可以实现与预期类似的目标:
>>> j = 100
>>> k = 200
>>> l = lambda: j + k
>>> l()
300
>>> j = 250
>>> l()
450
在您的代码中,
l=j+k
只计算j+k
,结果是整数值300
。然后名称l
绑定到值300
的int
对象
加法计算一次且仅计算一次。如果希望执行新的添加,那么必须以某种方式显式调用它
j = 100
k = 200
l = j + k
- j是指向存储100的内存的指针
- k是指向存储200的内存的指针
- l是指向存储300的内存的指针
-内森·拉肯迈尔(Nathan Lachenmyer)“我希望‘l’的输出会有所不同。”。真正地为什么?请解释您的期望和原因。Python不是电子表格:-)但是,如果您确实想要这种行为,可以查看符号数学的sympy(外部)模块。