python的小技巧 让你的代码更美观
持续更新..
1,活用lambda表达式
匿名函数 lambda 可以提供很多便利.下面是举例.
dic = {1:lambda a,b : a+b} print(dic[1](1,3)) #4
2,代码一行化.
当逻辑语句后只有一行代码的时候,可以写在一行.没什么具体作用,可以用来装逼.
while 1: if a>0:break for i in range(1,10) :print (i)
3,while 死循环
我们的while死循环一直都是 用while True 来规定,这样就可以延伸出来,只有是布尔类型为True就可以表示为死循环,那么根据这个特性就可以得出一下两个编写方法.
while 1: #死循环 print(123) flag = 1 #flag可以写成任何表示为真的数据类型 while flag: print(1) if 1: flag = False #相当于break,这里的False可以换成任意的表示假的数据类型,如空字符串,空元组,None
4,列表,字典,集合 推导式.
列表推导式 [元素 循环 判断]
集合推导式 {元素 循环 判断}
字典推导式{key:value 循环 循环}
注 : 没有元组推导式,用()的叫做生成器表达式
lst = [i for i in range(0,5) if i%2==0] #[0, 2, 4] print(lst) set_ = {i for i in range(0,5) if i%2==1} #{1, 3} print(set_) dic = {i:j for i in lst for j in len(lst)} #{0: 2, 2: 2, 4: 2} print(dic)
5,按位置赋值.(解构)
这里需要注意的是等号两边的元素个数要相等 , 并且等号后面 不一定是元组,只要是能够表示位置的都可以 .比如列表 , 当然 这里也可以使 a 和 b的值进行互换.a,b = b,a
a , b = (2 , 3) print (a) #2 print (b) #3
6,解构的应用 (进阶)
解构是一种非常好用的赋值方法.注意灵活运用.
#轻松提取字典的键值对 dic = {1:"小明",2:"小李",3:"小王"} for i,j in dic.items(): print(i,j) #1 小明 2 小李 3 小王
def func() return 1,2,3 x,y,z = func() print(x) #1 print(y) #2 print(z) #3
7,修改递归默认最大次数
我们都知道递归的默认最大执行次数是998,通过 sys.getrecursionlimit()可以进行修改, 详情参见这一条博客https://www.cnblogs.com/cuiyuanzhang/p/9483002.html
print(sys.getrecursionlimit()) #1000 sys.getrecursionlimit(2000) print(sys.getrecursionlimit()) #2000
8,枚举
通过枚举可以轻易的得到到索引和元素,也可以规定索引从哪开始.返回的是元素和索引组成的列表.
lst = ["小明","小李","小王"] for i in enumerate(lst): print(i) #(0,"小明") (1,"小李") (2,"小王") for i in encumerate(lst,1): print(i) #(1,"小明") (2,"小李") (3,"小王")
9,字符串的多行表示
使用三引号时 , 字符串就是以多行形式存在的 使用\ 时, 字符串还是以一行存在的.
print("我有点\ 小帅") #我有点小帅 print("""我有点 小帅""") #我有点 #小帅
10,链状比较
n = 2 print (1<n>7) #False print(1<n<=2) #True
11,三元运算
[如果为真 执行这条语句] if [条件] else [如果为假 执行这条语句]
a,b = 2,3 #解构赋值print (a) if a > b else print(b) #3
12,print 打印 模块的绝对路径
import random print(random)
13,map 内置函数
传入两个参数,参数1是即将运行的函数,参数2是一个迭代器.
a = map(lambda x :x+1,[1,2,3]) print(a) #<map object at 0x000001F86C278860 for j in a: print(j) # 2 3 4
14,property和setter
__变量使其变为私有,然后通过两个同名方法在外对其赋值和查看。
class Foo: def __init__(self,x): self.__x=x @property def func(self): return self.__x @x.setter def func(self): self.__x=x