百科问答小站 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(或 Ruby、Perl 等)没有取代 Bash 成为系统 Shell? 
  Python 有哪些好的学习资料或者博客? 
  为什么有些编程语言的数组要从零开始算? 
  为什么不同的死循环占用资源不同? 
  python这个按分类转换列表如何写? 
  Python 有哪些黑魔法? 
  python怎么跳出with...as? 
  为什么不使用 scrapy,而是从头编写爬虫系统? 
  如何看待 Python 3.9 以上的版本不再支持 Windows 7? 

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





© 2025-05-06 - tinynew.org. All Rights Reserved.
© 2025-05-06 - tinynew.org. 保留所有权利