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

分类: 计算机技术
推荐阅读:
Matlab中如何表示无穷大 在MATLAB中,您可以使用关键字inf(不区分大小写)来表示正无穷大,-inf表示负无穷大。
Linux显示使用内存最多的十个进程 在Linux系统下,你可以使用一条命令显示当前系统使用内存最多的十个进程:
Golang中关键字fallthrough在switch语句里的用法 和C语言不同,在Go语言里的 switch 语句中,是不需要使用 break 来退出一个case的。也就是说,case执行完成后,是不会继续向下匹配的。
Go语言的多返回值 Go语言革命性地在静态开发语言阵营中率先提供了多返回值功能。这个特性让开发者可以从原来用各种比较别扭的方式返回多个值的痛苦中解脱出来,既不用再区分参数列表中哪几个用于输入,哪几个用于输出,也不用再只为了返回多个值而专门定义一个数据结构。
Python getattr()函数 getattr() 函数是 Python 内置函数之一,用于获取一个对象的指定属性值。
Golang在Windows环境下编译出Linux环境下运行的可执行程序 我们可以使用这种方法在Windows系统下编译出其它平台的可执行程序,相反,也可以在Linux系统下编译出Windows平台的可执行程序。