Python SyntacticSugar
语法糖
- 
    列表推导式 列表推导式可以使用一行简洁的代码生成列表,格式为: 1 [expression for item in iterable] 其中,expression 是需要生成的元素表达式,item 是可迭代对象中的元素,iterable 是可迭代对象。例如,要生成一个包含 1 到 10 的平方的列表,可以使用以下代码: 1 2 3 squares = [x**2 for x in range(1, 11)] print(squares) # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 
- 
    字典推导式 字典推导式与列表推导式类似,可以使用一行代码生成字典,格式为: 1 {key_expression: value_expression for item in iterable}其中,key_expression 和 value_expression 分别是键和值的表达式,item 是可迭代对象中的元素,iterable 是可迭代对象。例如,要生成一个字典,键为从 1 到 5,值为键的平方的字典,可以使用以下代码: 1 2 3 my_dict = {x: x**2 for x in range(1, 6)} print(my_dict) # 输出:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25} 
- 
    装饰器(Decorator) 装饰器是一种用于装饰函数的语法糖,可以在函数定义前使用 @ 符号,将一个或多个函数“装饰”起来。装饰器本身是一个函数,接受一个函数作为参数并返回一个新的函数。 例如,假设有一个计算函数执行时间的装饰器: 1 2 3 4 5 6 7 8 9 10 import time def time_it(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(f"{func.__name__} took {end - start:.6f} seconds") return result return wrapper 这样,在需要计算函数执行时间的函数前加上 @time_it即可:1 2 3 @time_it def my_function(): # some code here 
- 
    with 语句 使用 with 语句可以让代码更加简洁,同时也可以自动关闭资源。with 语句的格式为: 1 2 with expression [as variable]: with-block 其中,expression 是需要打开的资源对象,with-block 是需要执行的代码块,variable 是可选的变量名,用于存储 expression 返回的对象。例如,要打开一个文件并读取其中的内容,可以使用以下代码: 1 2 3 with open("myfile.txt", "r") as f: contents = f.read() print(contents) 不需要手动调用 f.close() 关闭文件,使用 with 语句后,当代码块执行完毕时,自动关闭文件。 
- 
    Lambda 表达式 Lambda 表达式是一种匿名函数,可以在一行代码中定义一个函数。格式为: 1 lambda arguments: expression 其中,arguments 是函数的参数,expression 是函数的返回值表达式。例如,要定义一个将传入的数字加倍的函数,可以使用以下代码: 1 2 double = lambda x: x * 2 print(double(4)) # 输出:8 
- 
    map 函数 map 函数可以对一个可迭代对象中的所有元素应用一个函数,并返回一个新的可迭代对象,其中每个元素都是原可迭代对象中的元素经过该函数处理的结果。格式为: 1 map(function, iterable) 其中,function 是应用于每个元素的函数,iterable 是可迭代对象。例如,要将一个列表中的所有元素平方并返回一个新的列表,可以使用以下代码: 1 2 3 my_list = [1, 2, 3, 4, 5] squares = list(map(lambda x: x**2, my_list)) print(squares) # 输出:[1, 4, 9, 16, 25] 
- 
    filter 函数 filter 函数可以对一个可迭代对象中的所有元素应用一个布尔函数,并返回一个新的可迭代对象,其中仅包含原可迭代对象中满足该布尔函数的元素。格式为: 1 filter(function, iterable) 其中,function 是应用于每个元素的布尔函数,iterable 是可迭代对象。例如,要从一个列表中筛选出所有的偶数,可以使用以下代码: 1 2 3 my_list = [1, 2, 3, 4, 5] evens = list(filter(lambda x: x % 2 == 0, my_list)) print(evens) # 输出:[2, 4]