欢迎关注微信公众号“Python小灶,和我一起每天学习Python新知识”

文章目录

  • 一篇twitter引发的大讨论
  • 背后到底发生了什么
  • 编程的尽头是玄学?

一篇twitter引发的大讨论

首先声明,本人是坚定的唯物主义者,事情要从前两天Python之父的一篇twitter说起。

从理论上来说,结果应该是1, 1对不对,但是聪明的你肯定想到事情没那么简单。
以下是实际运行情况,各位可以自己尝试下。

x = 0
y = 0def f():x = 1y = 1class C:print(x, y)x = 2f()# ------------------------------------------
# result
0 1

我们都知道,代码是逐行执行的,此段代码比较简单,理论结果就应该是1 1,事实上,如果你把x = 2注释掉,结果是符合预期的。

与此同时我们也应该明白,此结果的出现不单单是x = 2的影响,而应该是x = 2class C的共同作用。

x = 0
y = 0def f():x = 1y = 1class C:print(x, y)# x = 2f()# ------------------------------------------
# result
1 1

背后到底发生了什么

为什么加了x = 2,结果就出现了不同?严格意义上来讲这是错误的不应该发生。按照Python之父的说法,这个现象在Python3.9上依然存在(我运行的环境是Python3.7).

这涉及到作用域和命名空间的概念:
简单来说,x = 0, y = 0属于全局变量,
f()函数里的x, y属于局部变量,
class C中的x属于局部变量,
如果没有x = 2, x将继承f()函数里的x, y属于局部变量值,有了x = 2后,在代码运行到class C的地方,
发现类里面有x的值,但是在打印前没有定义,所以它会去找全局变量替代。
所以最终的打印结果是0, 1.
如果你再加个y = 2
最终的打印结果是0, 0.

编程的尽头是玄学?

正所谓:遇事不决,量子力学;解释不通,穿梭时空。

但是真的有玄学吗?

是不是可以这么理解,玄学只是还未被解释的科学,科学是已经被证伪或者证实的玄学。

比如天狗食日,这一无比普通的天文现象,在古代可是了不得的大事。

所以说科学的尽头是玄学未尝不可,因为还有很多科学无法解释的事情。比如外星文明,科学尚无定论,但是玄学可以一通乱扯走在科学前面,等到科学可以证明的时候,再来分辨对错。

总结一句话:玄学是因为我们对事物的了解还不够深刻而为了让自己满足于某种答案的一种自我心理安慰。
顺便一提,这样写代码是不规范和不推荐的,容易让人产生困惑,仅供交流学习参考。

【趣谈】| 编程的尽头是玄学?相关推荐

  1. 雷学委趣谈编程 大型鞋厂与开发工程化

    朋友们,小白奶奶上次听雷学委趣味故事学会了类和对象. 回去狂写代码,写了很多代码,面向对象,继承,多态,入门,初级的统统都写了. 雷学委既想表扬,又不能! 毕竟,老人这样猛敲代码,对身体不好! 不过老 ...

  2. 趣谈 JOIN 操作

    作者 | 趣谈编程 责编 | Elle 在开发中我们有时需要跨表查询某些东西 此时,我们就会使用数据库表的连接 双十二的战争 一天,慧能看着一尘愁眉苦脸的,便上前去问发生了什么事情. 慧能 一尘 慧能 ...

  3. 趣谈GC技术,解密垃圾回收的玄学理

    趣谈GC技术,解密垃圾回收的玄学理论 GC的由来 一个例子引发的问题 GC的意义 GC算法 Reference Counting 循环引用 破环之道 作者介绍 开源项目介绍 大多数程序员在日常开发中常 ...

  4. 趣谈网络协议笔记-二(第十三讲)

    趣谈网络协议笔记-二(第十三讲) 套接字Socket:Talk is cheap, show me the code 前言 这只是笔记,是为了整理刘超大神的极客时间专栏的只是而存在的! 经常会在网络上 ...

  5. 华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解)

    华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解) 程序员高级码农II 2020-09-25 07:23:00 前言 虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ...

  6. 【华为内部狂转的想象力惊人的好文】趣谈大数据

    趣谈大数据 一.大数据的初步理解 似乎一夜之间,大数据(Big Data)变成一个IT行业中最时髦的词汇. 首先,大数据不是什么完完全全的新生事物,Google的搜索服务就是一个典型的大数据运用,根据 ...

  7. 面试华为必备:华为18级大牛呕心沥血三年整理的 趣谈网络协议

    前言 华为是一个热门的互联网大厂,华为每年都要进很多新人,对于新人来说,那些高大上的技术是用不到的,反倒是非常需要这些基础的文档,有这些新手进步会快很多,搞清楚TCP IP协议栈,其他的学起来也就容易 ...

  8. 9-《电子入门趣谈》第一章_一切从单片机开始-1.3.6串口通信

    好消息:请在手机淘宝或闲鱼上搜索"电子入门趣谈",有惊喜哦 :) 我把全本电子入门趣谈的电子版(包括科技提升和理论升华部分,共计50余万字)放到上面开始兜售啦,如果您真的喜欢这本书 ...

  9. Java趣谈——如何构建一个高效且可伸缩的缓存

    Java趣谈--如何构建一个高效且可伸缩的缓存 本集概要: 怎样构建一个线程安全而又高效.可伸缩的缓存? 怎样利用设计模式,把缓存做成通用的工具? 除了synchronize和volatile,我们还 ...

最新文章

  1. SQLServer学习笔记系列6
  2. Ubuntu侧边任务栏自动隐藏
  3. mysql远程连接设置_MySQL远程连接设置
  4. 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED
  5. 【Python学习系列十七】基于scikit-learn库逻辑回归训练模型(delta比赛代码2)
  6. linux task进程跟踪,如何对Hadoop作业的某个task进行debug单步跟踪
  7. jQuery复制节点
  8. 大润发优鲜app之paramsMD5参数分析
  9. [原创]同一个Tomcat,配置多个context、多个Host
  10. windows无法检索有关这台计算机上的磁盘信息_磁盘镜像软件OO DiskImage Pro 15.5介绍及安装教程...
  11. 餐饮外卖平台小程序 v1.0.1
  12. rstudio python_Rstudio支持可视化的Markdown编辑了?
  13. Bootstrap简洁、直观、强悍的前端开发框架
  14. 如何提升企业的数据挖掘能力
  15. Git(11)-- Git 别名(alias)
  16. MyBatis 动态SQL与SQL片段
  17. Python 使用Selenium 爬取Linkedin领英数据
  18. 如何制作媲美memz的炫酷特效恶搞程序
  19. win10计算机属性快捷键,win 10 电脑常用快捷键汇总
  20. 第13课:JSP动作 Indude动作和指令的区别(JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)

热门文章

  1. 8051单片机内部结构
  2. matlab lc滤波,基于MATLAB的LC二阶低通滤波网络频域分析
  3. Javaweb + MVC 实现企业人员管理系统全过程记录(配项目所有代码及数据库文件)
  4. SRAM和DRAM存储原理
  5. OpenWrt网络配置
  6. 我的世界天空之城服务器位置,我的世界1.7.2服务器天空之城
  7. multisim仿真 74LS148D级联芯片
  8. 我的世界Java版怎么做tnt,我的世界全自动刷TNT机教程
  9. 适合自学单片机c语言教材,单片机编程入门看什么书 盘点单片机初学者适合看的书...
  10. php.ini 详解