在计算及科学中,语法糖是某种特殊的语法,对语言的功能没有影响,但对程序员来说,有更好的易用性,简洁性、可读性、方便性。比如索引切片、列表推导式、字典推导式、生成器推导式等等。
切片操作Python切片操作详细例子
s = '123456' s[:3] # 结果为'123',取索引索引小于3的值,或叫“取前3位” s[3:] # 结果为'456', 取索引大于等于3的值,或叫“从第4位取到最后” s[2:4] # 结果为'34', 取索引大于等2,小于4的值,或叫“取第3位到第4位” s[:] # 结果为'123456', 取索引全部 s[:-1] # 结果为'654321' 取倒序 s[::2] # 结果为'135' 步长为2取值 with打开文件实现的是一个上下文管理器,它主要的特点就是帮助我们自动管理上下文的衔接。即在需要的时候传给我们,不需要的时候自动关闭上下文对象。
with open('test.txt', 'r', encoding='utf-8') as f: for line in f: print(line,end='') else语法糖for-else、while-else 需要和break语句配合使用。
try-else-finally
动态参数: (*args, **kwargs)
匿名函数: lambda x: x * 2
推导表达式
列表推导表达式:[i for i in s if i%2 != 0] 生成器推导表达式: (i for i in s if i%2 != 0) 集合推导表达式:{i for i in s if i%2 != 0} 字典推导表达式:{i:i*2 for i in s if i%2 != 0}
yield表达式yield是Python中实现**协程(coroutine)**的一个重要基础
def my_generator(s): '''生成器''' for i in s: yield i*2 装饰器一种设计模式,本质上也是一种python函数,是一种闭包。装饰器需要返回一个对象,该对象可以是经过处理的原参数对象,一个包装且类似原参数的对象。
def my_decorator(func): '''装饰器''' def inner(): func() return inner mapmap(function, iterable, …) 会根据提供的函数对指定序列做映射。function函数,iterable一个或多个序列,其中py2返回的列表,py3返回的是迭代器。
def square(x): return x ** 2 map(square, [1,2,3,4,5]) map(lambda x: x ** 2, [1,2,3,4,5]) map(lambda x, y: x + y, [1,3,5,7,9], [2,4,6,8,10]) reducereduce(function, iterable[, initializer]) 函数会对参数序列中元素进行累积。function 有两个参数, iterable可迭代对象,initializer可选,初始参数。用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
def add(x, y): return x + y reduce(add, [1,2,3,4,5]) reduce(lambda x, y: x+y, [1,2,3,4,5]) filterfilter(function, iterable) 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。function判断函数,iterable可迭代对象,该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
def odd(n): return n % 2 == 1 newlist = filter(odd, [1,2,3,4,5,6,7,8,9,10]) print(list(newlist))