欢迎大家收看分享12个python使用技巧,助你轻松掌握Python高效开发!部分代码用图片的方式呈现出来,方便各位观看与收藏,要是喜欢的话,记得一定不要忘记点赞关注嗷!
内容如下:
- 隐藏特性 1,函数unpack
def foo(x, y):
print x, y
alist = [1, 2]
adict = {'x': 1, 'y': 2}
foo(*alist) # 1, 2foo(**adict) # 1, 2
- 隐藏特性 2, 链式比较操作符
x = 3>>> 1 < x < 5True>>> 4 > x >=3True
- 隐藏特性 3,函数的默认参数 分享12个python使用技巧,助你轻松掌握Python高效开发
更安全的做法是:
def foo(x=None):... if x is None:... x = []... x.append(1)... print x
...>>> foo()
[1]>>> foo()
[1]
- 隐藏特性 5,带关键字的格式化
print "Hello %(name)s !" % {'name': 'James'}
Hello James !>>> print "I am years %(age)i years old" % {'age': 18}
I am years 18 years old
更新些的格式化:
print "Hello {name} !".format(name="James")
Hello James !
- 隐藏特性 6,切片操作的步长参数
可以用步长 -1 来反转链表:>>> a = [1, 2, 3, 4, 5]>>> a[::2]
[1, 3, 5]>>> a[::-1]
[5, 4, 3, 2, 1]>>>
- 隐藏特性 7,嵌套列表推导式
[(i, j) for i in range(3) for j in range(i)]
[(1, 0), (2, 0), (2, 1)]
列表推导构造permutation:可以用 itertools.permutations 来实现。
In[47]: a = 'abcd'In[48]: [i+j+k for i in a for j in a.replace(i,'') for k in a.replace(i,'').replace(j,'')]Out[48]:
['abc', 'abd', 'acb', 'acd', 'adb', 'adc', 'bac', 'bad', 'bca', 'bcd', 'bda', 'bdc', 'cab', 'cad', 'cba', 'cbd', 'cda', 'cdb', 'dab', 'dac', 'dba', 'dbc', 'dca', 'dcb']
- 隐藏特性 8,print 重定向输出到文件
注意打开的模式: “w+” 而不能 “w” , 当然 “a” 是可以的
print >> open("somefile", "w+"), "Hello World"
-
隐藏特性 9, Python3中的元组unpack 分享12个python使用技巧,助你轻松掌握Python高效开发
-
隐藏特性 10,pow的第三个参数
其实第三个参数是来求模的: pow(x, y, z) == (x ** y) % z,注意,内置的 pow 和 math.pow 并不是一个函数,后者只接受2个参数。
pow(4, 2, 2)0>>> pow(4, 2, 3)1
- 隐藏特性 11,enumerate还有第二个参数
enumerate 很赞,可以给我们索引和序列值的对, 但是它还有第二个参数,这个参数用来: 指明索引的起始值。
lst = ["a", "b", "c"]>>> list(enumerate(lst, 1))
[(1, 'a'), (2, 'b'), (3, 'c')]
- 优化循环
每种编程语言都会强调需要优化循环。当使用Python的时候,你可以依靠大量的技巧使得循环运行得更快。然而,开发者经常漏掉的一个方法是:避免在一个循环中使用点操作。
例如,考虑下面的代码: 分享12个python使用技巧,助你轻松掌握Python高效开发
- Zipping and unzipping lists and iterables
a = [1, 2, 3]>>> b = ['a', 'b', 'c']>>> z = zip(a, b)>>> z
[(1, 'a'), (2, 'b'), (3, 'c')]>>> zip(*z)
[(1, 2, 3), ('a', 'b', 'c')]