1 字符串驻留
In [1]: a = 'something' ...: b = 'some'+'thing' ...: id(a)==id(b)Out[1]: True
如果上面例子返回True,但是下面例子为什么是False:
In [1]: a = '@zglg.com'In [2]: b = '@zglg'+'.com'In [3]: id(a)==id(b)Out[3]: False
这与Cpython 编译优化相关,行为称为字符串驻留,但驻留的字符串中只包含字母,数字或下划线。
2 相同值的不可变对象
In [5]: d = {} ...: d[1] = 'java' ...: d[1.0] = 'python'In [6]: dOut[6]: {1: 'python'}### key=1,value=java的键值对神器消失了In [7]: d[1]Out[7]: 'python'In [8]: d[1.0]Out[8]: 'python'
这是因为具有相同值的不可变对象在Python中始终具有相同的哈希值
由于存在哈希冲突,不同值的对象也可能具有相同的哈希值。
3 对象销毁顺序
创建一个类SE:
class SE(object): def __init__(self): print('init') def __del__(self): print('del')
创建两个SE实例,使用is判断:
In [63]: SE() is SE()initinitdeldelOut[63]: False
创建两个SE实例,使用id判断:
In [64]: id(SE()) == id(SE())initdelinitdelOut[64]: True
调用id函数, Python 创建一个 SE 类的实例,并使用id函数获得内存地址后,销毁内存丢弃这个对象。
当连续两次进行此操作, Python会将相同的内存地址分配给第二个对象,所以两个对象的id值是相同的.
但是is行为却与之不同,通过打印顺序就可以看到。
4 充分认识for
In [65]: for i in range(5): ...: print(i) ...: i = 1001234
为什么不是执行一次就退出?
按照for在Python中的工作方式, i = 10 并不会影响循环。range(5)生成的下一个元素就被解包,并赋值给目标列表的变量i.
5 认识执行时机
array = [1, 3, 5]g = (x for x in array if array.count(x) > 0)
g为生成器,list(g)后返回[1,3,5],因为每个元素肯定至少都出现一次。所以这个结果这不足为奇。但是,请看下例:
array = [1, 3, 5]g = (x for x in array if array.count(x) > 0)array = [5, 7, 9]
请问,list(g)等于多少?这不是和上面那个例子结果一样吗,结果也是[1,3,5],但是:
In [74]: list(g)Out[74]: [5]
这有些不可思议~~ 原因在于:
生成器表达式中, in 子句在声明时执行, 而条件子句则是在运行时执行。
所以代码:
array = [1, 3, 5]g = (x for x in array if array.count(x) > 0)array = [5, 7, 9]
等价于:
g = (x for x in [1,3,5] if [5,7,9].count(x) > 0)
看明白吗?
以上就是五个Python小特性,都很有意思,结果确实出乎意料。
相信了解这些好玩的特性后,大家对Python的认识更近一步了,恭喜大家。
写在最后
文章可能写的有点水,但是我只是想给大家一个坚持下去的理由,不能坚持的小伙伴看看上面的话吧~相信能够帮助大家!
最后!只要你转发文章+私信小编(学习)即可免费获得一套python爬虫全套资料以及2020年最新的Python学习七大阶段路线和400集python学习教程!
阶段一:Python基础知识和高级特性
1、Python语法基础
2、Python字符串解析
3、Python时间和日历
4、Python文件操作
5、Python面向对象
6、并发编程
7、函数式编程
8、正则表达式
9、设计模式
10、排序算法
11、异常
12、模块
阶段二:Linux基础
1、shell操作
2、系统管理
3、常用Linux命令
4、常见Linux系统
5、HDFS搭建
阶段三:数据库原理和sql优化
1、Linux下MySQL数据库
2、数据库设计和SQL标准
3、Python数据库操作的库
4、Linux下MongoDB非关系型数据库
5、SQL优化和数据库优化
6、ORM对象关系映射基本思想
阶段四:前端web开发
1、Html
2、CSS
3、PC端页面开发实战流程
4、Bootstrap
5、html5和css3
6、JQuery
阶段五:Python Web后端开发
1、Django 框架开发
2、Nginx配置和uWSGI部署
3、RESTful接口开发
4、Flask框架开发
5、电商平台项目
6、BBS论坛系统
阶段六:爬虫和数据分析
1、第一个Python网络爬虫
2、专业HTTP分析工具Fiddler的使用
3、实际爬虫Python编码问题
4、urllib2 的使用TesseractOCR语言模型爬取使用带验证码登录的网站
5、Beautiful Soup
6、XPath & CSS选择器
7、PhantomJS
8、SeleniumWebdriver
9、Scrapy大型框架使用代理服务器爬取
10、Scrapy分布式集群多代理爬虫Redis
11、分布式集群Redis MongoDB在爬虫里的应用
12、数据分析工具与模块
阶段七:Python人工智能
1、机器学习
3、深度学习
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/267725.html