Python有哪些有趣的代码呢,这些代码让你大呼&am…
2018-08-03 07:36:18来源:博客园 阅读 ()
Python是一门清晰易学的语言,可是这不代表我们Python没有黑暗料理,下面我就挑选了几个能让你大呼"卧槽,怎么会这样"的程序,这些例子不光有趣,也能够加深我们对于Python细节的理解,看看你自己能不能解释吧。
以下代码如果不信请手动尝试,测试环境:Python 3.6
20跟21有什么区别
第一次看到这个例子的时候我的心里面充满了wtf,20跟21有什么区别为什么结果不一样?
原因是:python在进行内部优化的时候会做常量替换的操作,也就是把 'a' * 20这种语句替换成'aaaaaaaaaaaaaaaaaaaa',这样运行的时候节省时间,而刚好,小于等于20的时候会做这个优化,而大于20就不做这个优化了。
让一个函数Return两次
一般的Python教程会告诉你,当函数执行到第一个return的时候会退出,剩下的语句不再执行。
然而如果是这样的话上面的代码中我们的somefunc()应该返回的是'from_try'。
结果却不是。这个现象的原因是finally后面的语句永远会执行,而函数的返回值由最后一个return语句决定,所以函数的返回值是finally语句中的返回值。
循环几次?
你猜下面的代码会循环几次
正确输出:
0
1
2
3
循环了4次,所以i=10这个语句完全没用了吗?
是的,这跟Python的for循环的机制有关,每次在循环体之前,下一个需要的值先会产生好然后赋值给循环变量,这里的i。
虽然循环体中有一个i = 10,但下次循环前for又会做一个i=2或者i=3的操作,把i=10覆盖了。
一石三鸟
现在我们赋个值给第一个元素,再看看结果
为什么有三个元素都变成了X,我们明明值赋了一个值啊?
这是因为[row] * 3这个操作实际上没有复制row,而只是创建了三个object reference,也就是board[0] board[1] board[2]这三个元素其实指向了同一个列表row,那么改变board[0][0]其实就是改变row[0],也同时改变了board[1][0] board[2][0]。
256和257有什么区别?
这又是怎么回事?你知道么
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:python学习day1
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash