一定有你不知道的Python技巧
Python一直以代码简洁著称;想写出艺术般的代码,需要你掌握各种Python技巧,这些技巧有些是语言特性,有些则是广大程序员的经验心得;今天作者就给大家网罗了一些Python技巧,一起来看看吧。
你这样用过三元表达式么?
a = 2
content = '正确' if a== 1 else '错误'
print(content)
在Python中,True实际上是1,False 是0,所以我们还能这么写:
content = ['正确','错误'][a==1]
枚举能让代码更简单
import enum
@enum.unique
class sex(enum.Enum):
man = 1
woman = 2
print(sex.man.name)
print(sex.man.value)
print(sex.woman.name)
print(sex.woman.value)
使用遍历的方式:
for item in sex:
print(item.name)
print(item.value)
另一种使用枚举的方式:
import enum
words = enum.Enum(
value='d',
names=('a b c d e f'),
)
for word in words:
print(word.name, word.value)
字典的逻辑运算
字典键支持常见的集合操作,比如并集,交集。
获取两个字典相同的键:
for item in sex:
print(item.name)
print(item.value)
另一种使用枚举的方式:
a = {'x': 1, 'y': 2, 'z': 3}
b = {'w': 2, 'x': 4, 'q': 3, 'z': 3}
c = a.keys() & b.keys()
print(c)
获取两个字典相同的键值对:
d = a.items() & b.items()
print(d)
删除某些键并创建一个新的字典:
e = {k: a[k] for k in a.keys() - {'z', 'x'}}
print(e)
交换变量
这个可能很多人都会了.
a , b = 1 , 2
print(a,b)
a , b = b , a
print(a,b)
for else
你可能用过for遍历过列表,但你知道他其实也能搭配else用么?
a = [1,2,3,4,5]
for el in a:
if el == 0:
break
else:
print('没有使用break跳出循环')
当列表中包含 0 时,会触发break, else语句块将不会被执行。
类型提示
在Python中,你定义变量、函数、类别的时候,并不需要指定数据的类型。
但这是有代价的,当你的项目过于庞大时,你可能会因为类型错误而花费大量时间来排查错误。
在Python 3.5之后,这将不是问题了,你可以为函数指定参数类型以及返回值类型:
def add(a:int,b:int) -> int:
return a + b
参数类型可以是自定义的。
同一行多个语句
分号‘;’允许你将多个语句写在同一行上:
import time;a=1;print(a);print(time.time())
多行字符串
最简单的方法是使用三个引号:
mystr = """xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx"""
上面的方法最大的问题是换行符也会被赋予,如果字符串是一条sql语句的话,那就糟糕了。
还好我们有反斜杠:
sql = "select * from mytable \
where t_count < 10"
print(sql)
又或者是分多行,将字符串包含在括号内:
sql = ("select * from mytable "
"where t_count < 10")
print(sql)
列表元素赋值给变量
我们可以使用列表来初始化变量。
需要注意的是,变量的数量不能超过列表元素的个数:
myargs = [1,2,3]
a,b,c = myargs
获取导入模块的文件路径
如果你想看某个模块的源码,你只需这样做就可获取源码文件路径:
import threading
print(threading)
交互模式下“_”操作符
在Python控制台中,计算结果忘记用变量存储怎么办?
使用下划线 "_" 即可获得丢失的变量

计算任何数的阶乘
import functools
result= (lambda k: functools.reduce(int.__mul__,
range(1,k+1),1))(10)
print(result)
你用过这些技巧么?没有的话就赶紧去试试吧!