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

分类: 计算机技术
推荐阅读:
Python all()函数详细教程 all()函数只接受一个可迭代的类型参数;如果该迭代器的所有元素为True或该迭代器为空,则返回True,否则返回False;
将Kali安装到VirtualBox虚拟机 本文将详细介绍如何将Kali系统安装到VirtualBox虚拟机中;首先,你需要安装好 VirtualBox;VirtualBox 是一款优秀的开源虚拟机软件;VirtualBox的官方下载地址为:
MySQL AES_ENCRYPT()、AES_DECRYPT()函数 AES_ENCRYPT()和AES_DECRYPT()使用官方AES算法实现数据的加密和解密;其密钥默认长度为128位,默认块加密模式为ECB;
使用pip安装Python PIL库的正确方法 正确使用pip工具安装Python中PIL库的方法如下:
pyside6将信号与槽函数进行连接 在本文中,你将了解信号与槽的概念,掌握在Qt Designer中添加槽函数,以及在PySide6中的应用。
PySide6:No module named 'QWebEngineView' 解决方法 如果你在使用PySide6时碰到No module named 'QWebEngineView' 或 No module named 'PySide6.QtWebEngineWidgets' 的错误提示,请将PySide6更新到最新版本,因为该组件在某些比较老的版本还未得到支持;