理解pythonic概念

来源:互联网 发布:系统助手 for mac 编辑:程序博客网 时间:2024/06/05 16:10

pythonic可以定义为:充分体现python自身特色的代码风格。

在语法上,举个常见的例子,在其他语言(如C)中,两个变量的交换:

int a = 1, b = 2;

int tmp = a; a = b; b = tmp;

利用python的packaging/unpackaging机制,pythonic的代码就需一行:

a, b = b, a


另外,遍历一个容器时,类似其他编程语言的代码如下:

length = len(alist)

i = 0

while i < length

do_sth_with(alist[i])

i+=1

而pythonic的代码如下

for i in alist

do_sth_with(i)


故pythonic的一个药酒就是对python语法本身的充分发挥,写出来的代码带着python味儿。


编写python代码时,应该充分利用python的语法,但不应过分的使用奇技淫巧,比如利用python的slice语法,可以写出如下代码

a = [1,2,3,4]

b = 'asdfghjkl'

print a[::-1]

print b[::-1]

对于这样一段代码恐怕不是一眼就可以看出其作用,实际上更好的体现pythonic的代码是充分利用python库里的reversed()函数:

print list(reversed(a))

print list(reversed(b))

写pythonic的代码需要对标准库有充分的理解,特别是内置函数和内置数据类型。

比如对字符串初始化:print 'hello %s!' % ('Tom', )

%s是非常影响可读性的,因为数量多了以后,很难清除哪一个占位符对应哪一个实参

对应的pythonic的代码应该是这样的

print 'Hello %(name)s!' % {'name' : 'Tom'}


针对 value = {'greet': 'Hello world', ''language': 'python'}

print ='%(greet)s from %(language)s.' % value

更pythonic的代码如下:

print ‘{greet} from {language}.' .format(greet = 'Hello world', language: 'python')


str.format()方法非常清晰地表明了语句的意图,事实上,str.format()也成为python最为推荐的字符串格式化方法。


0 0