一定有你不知道的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)

你用过这些技巧么?没有的话就赶紧去试试吧!


如需转载,请注明出处,本文地址:https://www.perfcode.com/p/1136.html