百科问答小站 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 和 MATLAB 有可比性吗? 
  如何看待 Python 3.9 以上的版本不再支持 Windows 7? 
  如何评价 Python 基础知识难度大吗? 
  如何看待风变编程的 Python 网课? 
  Python为什么需要用import导入模块?直接自动将所有模块都导入不是更好吗? 
  Python 3.10 发布文档的最后一段“黑洞”描写在表达什么? 
  python是用C实现的,Java是用C++实现的,那为什么不直接用C或C++呢? 
  学习python为什么要在linux下?怎么学? 
  在线教育网站(Coursera、网易云课堂、腾讯课堂等)有哪些值得推荐的 Python 课程? 
  如何看待知乎、饿了么后端的招聘纷纷由 Python 渐渐转向 Java? 

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





© 2025-04-02 - tinynew.org. All Rights Reserved.
© 2025-04-02 - tinynew.org. 保留所有权利