不得不说,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}
'''