python语法糖(持续更新)

2024-04-27

不得不说,python是一门很随便的语言,当然也是因为随便,所以熟悉了后写起来很爽,哇,原来还可以这样写!

以下介绍一些python的语法糖,让你的python写起来很爽!

“|” 操作,最优雅的合并字典方式(3.9以后)

a = {'aa':11}
b = {'bb':22}
c = {'cc':33}

# 合并字典
all = a | b | c
print(all)

# {'aa': 11, 'bb': 22, 'cc': 33}

字符串模板

# 格式 f'{变量}'
name = '小可爱'
print(f'你就是一个{name}')

# 你就是一个小可爱

列举函数enumerate,同时返回下标和值

取元素值,要么for-each迭代但是只有值,没有下标。enumerate就解决了即要又要的问题。

arr = ['Java','Python','JavaScript','Html','Css']

for index,value in enumerate(arr):
  print(f'{index}->{value}')

'''
0->Java
1->Python
2->JavaScript
3->Html
4->Css
'''

list分割

格式是[start:stop:step],即起始下标(包含,省略为0),结束下标(不包含,省略为-1),步长(默认1)

函数,类空实现

python中并没有接口(interface)来强制子类必须实现某些方法

但是函数或父类也可以不做实现,留空,除了用pass之外,还可以用...

def fun1():...

def fun2():pass

class Person():pass

class Bird():...

装饰器(Decorator ),对函数或类做一些增强功能

类似Java里的注解

# fun代表被增强的函数,形参
def my_decorator(fun):
  # wapper 可以随意命名,约定为wrapper,*args, **kwarg为原函数的参数
  def wrapper(*args, **kwargs):
    print("我在函数前执行")
    fun(*args, **kwargs)
    print("我在函数后执行")

    print("位置参数,元组(通过索引访问):", args)
    print("关键字参数,字典(通过key访问):", kwargs)

  # 必须要返回wapper
  return wrapper


@my_decorator
def example_function(a, b, c=0):
  print("被增强的函数运行")


example_function(1, 2, c=3)

'''
输出

我在函数前执行
被增强的函数运行
我在函数后执行
位置参数,元组(通过索引访问): (1, 2)
关键字参数,字典(通过key访问): {'c': 3}
'''

*args为位置参数,是一个元组,通过索引访问,

**kwargs为关键字参数,是一个字典,通过key访问

补充

位置参数和关键字参数

def fun(a,b,c=0): # 注意 c已被赋值0,在函数调用时就可不写,a,b则必须写
  print(a,b,c)

# 位置参数,与形参定义的位置关联
fun(1,2)

# 关键字参数,与形参的名称相关联
fun(c=1,b=2,a=3)

# 输出 
1 2 0
3 2 1

同时做>和<比较

# python中
x = 6
if 5 < x < 10:
  print(x)


# 其他语言,需要与逻辑连接
if( x > 5 && x < 10){
	
}

展开列表和字典

可以用于列表和字典的合并

arr1 = [1,2,3]
arr2 = (4,5,6) # 元组是特殊的列表,也可以展开
dict1 = {'a':1,'b':2,'c':3}
dict2= {'d':4,'e':5,'f':6}

# * 用于展开一个列表
arr = [*arr1,*arr2]

# ** 用于展开一个字典
dict = {**dict1,**dict2}

print(f'合并后的列表-->{arr}')
print(f'合并后的字典-->{dict}')

'''
输出

合并后的列表-->[1, 2, 3, 4, 5, 6]
合并后的字典-->{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
'''

PREV
css定义变量
NEXT
vscode使用Remote-SSH远程开发使用秘钥登录