Python Task06:函数与Lambda表达式
-
怎么给函数编写⽂档?
添加注释(以 # 开头的内容):
添加独⽴的文档字符串 -
怎么给函数参数和返回值注解?
参数注解:在定义函数的时候,在参数列表内部的参数后面加上冒号和要传入的类型
def accumlate(x:int, y:int): return x*y 12
返回值注解:在参数列表后面,冒号前面,增加一个 -> 符号,后面写返回值的类型。
def accumlate(x:int, y:int) -> int: return x*y 12
这些注解都会以字典的形式存在函数的 .annotations 属性中。
accumlate.__annotations__ {'x': int, 'y': int, 'return': int} print(accumlate.__annotations__) {'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>} 12345 123456
输出字典中的value存的是数据的type,即类型。
-
闭包中,怎么对数字、字符串、元组等不可变元素更新。
如果要修改闭包作用域中的变量则需要 nonlocal 关键字
-
分别根据每一行的首元素和尾元素大小对二维列表 a = [[6, 5], [3, 7], [2, 8]] 排序。(利用lambda表达式)
a = [[6, 5], [3, 7], [2, 8]] a.sort( key=lambda a:a[0]) print(a) a.sort( key=lambda a:a[1]) print(a) 12345
-
利用python解决汉诺塔问题?
有a、b、c三根柱子,在a柱子上从下往上按照大小顺序摞着64片圆盘,把圆盘从下面开始按大小顺序重新摆放在c柱子上,尝试用函数来模拟解决的过程。(提示:将问题简化为已经成功地将a柱上面的63个盘子移到了b柱)
def f(a):
new=list(reversed(a))
return new
a=list(range(64))
c=f(f(a))
print(c)