1、前言
写python的同学会经常听到pythonic这个词,但对于这个词语具体的语义,python社区每个人都有自己的独到的见解,因为pythonic自身就是人为造的单词。结合社区的观点可以知道:pythonic是python编程中的惯用方法,也就是写出简洁,优雅的代码,写出具有python独特风格的代码。
尝试运行下面这行代码,显示的结果便是python编程之禅
1 | >>> import this |
2、举个列子
大部分同学的入门语言都是c语言,这导致在写python的过程中,会不自觉地借用c语言的思想,写出类c语言风格的代码,比如在对一个数组遍历操作时, 我们使用c语言会经常这么写
1 | int arr[4]={1, 2, 3, 4}; |
于是,在使用python编写程序的时候,习惯性的会按照下面的方法写:
1 | arr = [1, 2, 3, 4] |
python以简洁优雅著称,上面的写法并没有很好的体现这一点,在python里面,任何可迭代的对象都能用for in来进行处理,更加优雅的实现方式是:
1 | arr = [1, 2, 3, 4] |
编写更加pythonic的代码,不仅能让程序更加简洁优雅,还能提高程序的运行效率。下面介绍一些常用的更加pythonic的写法。
3、一些常见替代写法
- (1)、 数字交换
1 | a = 1 |
- (2)、使用字符串切片,对字符串快速操作
1 | s = 'hello' |
- (3)、字符串拼接
1 | str_arr = ['hello', 'world'] |
- (4)、列表生成式(快速生成有规律的列表)
1 | for x in range(1, 5): |
(5)、真值判断
在python中,每种数据类型在空与非空的时候都有对应的真值与其匹配,掌握默认的真值能减 少冗余的代码:
True | False | |
---|---|---|
True | False | |
非空字符串 | 空字符串 | |
非0数字 | 数字0 | |
非空容器 | 空的容器如[]{} | |
其它非False | None |
1 | x = 'hello, world' |
- (6)、使用for else语句快速跳出循环
1 | for x in range(1,5): |
- (7)、zip(izip)迭代多个list
1 | names = ['tom', 'alice', 'amy'] |
- (8)、排序使用默认方法,不要自己造轮子
1 | nums = [2, 1, 3, 0] |
- (9)、字典默认值
在访问字典的时候,访问不存在的键值程序会报KeyError的操作。解决方式可以使用字典的get()方法,当然也可以使用默认字典
1 | d = defautdict(int) |
- (10)、解构list
1 | l = [1, 2, 3] |
- (11)、同时迭代对象的值和索引
1 | for x in range(1, 5): |
- (12)、最后:掌握PEP8(python增强建议)的建议写法,了解python的编程风格,这是最重要的。