百科问答小站 logo
百科问答小站 font logo



Python 不区分变量定义和赋值,是否是设计上的缺陷? 第1页

  

user avatar   laiyonghao 网友的相关建议: 
      

首先,不要求完全精确的情况下,Python 其实可以说是“没有变量”,有的只是“名字绑定”,每一个名字可以视为一个实例(instance)的引用,变量只是大家沿用了更熟悉的概念而已。也就是说,`a = 20` 这句代码里,`a` 只是一个名字(引用)。

然后,回到题主的代码,这是一个 Python 的名字搜索机制的问题,因为 Python2.x 的实现是本地范围找不到的话就去全局范围找,那么就会出现题主说的“在foo2中没有办法改变foo中a的值”的问题,这个问题后来在 Python3.x 中通过引入 `nonlocal` 解决了。

最后,“python不区分变量定义和赋值,是否是一个设计上的缺陷?”,这是一个伪问题,开篇说过了 Python 其实可以说是“没有变量”,所以何来“定义”之说,说到“缺陷”就更是强加的罪名了。




  

相关话题

  掌握很多门计算机语言的人不会记串吗? 
  python适合什么年龄自学? 
  大一学生想换 Linux 怎么样? 
  如何看待 Python 之父关于帮助中国程序员应对 996 工作制的讨论? 
  如何看待 Python 3.9 以上的版本不再支持 Windows 7? 
  python适合什么年龄自学? 
  怎么自学python,大概要多久? 
  在编程语言中,循环语句为何选择 while 而不是 when 作为关键词? 
  如何生成多个互不重叠的不同半径圆? 
  你是如何开始能写 Python 爬虫? 

前一个讨论
对于如何看待二战时美国原子弹轰炸日本对普通民众的伤害?
下一个讨论
刘邦「从亭长做到汉高祖」的能力是如何锻炼的?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利