6 个值得玩味的 Python 代码

Python025

6 个值得玩味的 Python 代码,第1张

先选取了 6 个自己认为值得玩味的 python代码,希望对正在学习 python 的你有所帮助。

1、类有两个方法,一个是 new,一个是 init,有什么区别,哪个会先执行呢?

运行结果如下:

再来看另一个例子

运行结果如下:

这里给出官方的解释: init 作用是类实例进行初始化,第一个参数为 self,代表对象本身,可以没有返回值。 new 则是返回一个新的类的实例,第一个参数是 cls 代表该类本身,必须有返回值。很明显,类先实例化才能产能对象,显然是 new 先执行,然后再 init ,实际上,只要 new 返回的是类本身的实例,它会自动调用 init 进行初始化。但是有例外,如果 new 返回的是其他类的实例,则它不会调用当前类的 init 。下面我们分别输出下对象 a 和对象 b 的类型:

可以看出,a 是 test 类的一个对象,而 b 就是 object 的对象。

2、map 函数返回的对象

map()函数第一个参数是 fun,第二个参数是一般是 list,第三个参数可以写 list,也可以不写,作用就是对列表中 list 的每个元素顺序调用函数 fun 。

有没有发现,第二次输出 b 中的元素时,发现变成空了。原因是 map() 函数返回的是一个迭代器,并用对返回结果使用了 yield,这样做的目的在于节省内存。 举个例子:

执行结果为:

这里如果不用 yield,那么在列表中的元素非常大时,将会全部装入内存,这是非常浪费内存的,同时也会降低效率。

3、正则表达式中 compile 是否多此一举?

比如现在有个需求,对于文本 中国 ,用正则匹配出标签里面的“中国”,其中 class 的类名是不确定的。有两种方法,代码如下:

这里为什么要用 compile 多写两行代码呢? 原因是 compile 将正则表达式编译成一个对象,加快速度,并重复使用。

4、[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]

5、一行代码将字符串 "->" 插入到 "abcdefg"中每个字符的中间

这里也建议多使用 os.path.join() 来拼接操作系统的文件路径。

6、zip 函数

zip() 函数在运算时,会以一个或多个序列(可迭代对象)做为参数,返回一个元组的列表。同时将这些序列中并排的元素配对。zip() 参数可以接受任何类型的序列,同时也可以有两个以上的参数当传入参数的长度不同时,zip 能自动以最短序列长度为准进行截取,获得元组。

1. Python3 实现色情图片识别

2. Python3 图片隐写术

3. 200 行 Python 代码实现 2048

4. Python实现3D建模工具

5. 使用 Python 定制词云

6. Python3 智能裁切图片

7.微信变为聊天机器人

8. 使用 Python 解数学方程

9. 使用 Python 创建照片马赛克

10. Python 基于共现提取《釜山行》人物关系

11. Python 气象数据分析:《Python 数据分析实战》

12. NBA常规赛结果预测:利用Python进行比赛数据分析

13. Python 的循环语句和隐含波动率的计算

14. K-近邻算法实现手写数字识别系统

15. 数独游戏的 Python 实现与破解

16. 基于 Flask 与 MySQL 实现番剧推荐系

17. Python 实现英文新闻摘要自动提取

18. Python 解决哲学家就餐问题

19. Ebay 在线拍卖数据分析

20. 神经网络实现人脸识别任务

21. 使用 Python 解数学方程

22. Python3 实现火车票查询工具

23. Python 实现端口扫描器

24. Python3 实现可控制肉鸡的反向Shell

25. Python 实现 FTP 弱口令扫描器

26. 基于PyQt5 实现地图中定位相片拍摄位置

27. Python实现网站模拟登陆

28.Python实现简易局域网视频聊天工具

29. 基于 TCP 的 python 聊天程序

30. Python3基于Scapy实现DDos

31. 高德API + Python 解决租房问题

32. 基于 Flask 与 RethinkDB 实现TODO List