目录
函数与方法的区别
函数的定义
传参的情况
常见传参
其他传参
函数的返回值
函数嵌套
Lambda表达式
字典排序
map函数
filter函数
直接调用的是函数 ,通过对象点出来的是方法
print("hello")
a = [2, 1, 3]
a.sort()
print(a)
常规函数定义,有返回值的,跟无返回值的
def hello(name): print(f"{name} say hello") hello("zhangsan") def add(a,b): return a + b print(add(1, 2)) def dele(a,b): print(a - b) print(dele(1, 2))
Python对于参数的传入是没有类型限制的
不过可以通过给参数添加类型,提示调用时应传入的类型
def add(a: int, b: int): return a + b c = add("a", 2) print(c)
1.位置传参 2.关键字传参 3.缺省传参 # 位置传参 res(1, 2) # 关键字传参 res(a=1, b=2) # 缺省参数,给b设置了一个默认值 def res(a, b=3): print(a) print(b) res(1) res(1,2)
1.可变传参-元组 2.可变传参-字典
# 可变传参-元组 ## def aaa(*arr): # print(arr) # print(type(arr)) # # # aaa(1, 2, 3) # aaa({1, 2, 3}, {1, 2, 3}) # aaa({1, 2, 3}) # aaa(1) # 可变传参-字典 # def aaa(**arr): print(arr) print(type(arr)) aaa(a=1, b=2, c=3, d=4) aaa(a={1}, b={2}, c={3}, d={4}) aaa(a={1}) aaa(a=1)
1.返回值不限类型,所以不需要指定返回类型
2.使用 return 关键字
3.可以通过元组的形式返回多个值
编写一个函数,接受多个参数,返回最大值,最小值与总和
def sum(*arr): min = 0 max = 0 total = 0 for i in arr: min = min if min < i else i max = max if max > i else i total += i return min, max, total res = sum(1, 4, 7, 9, 8, 3, 2) print(res)
递归求和1-100的和
def sum(n): if n < 2: return n else: return n + sum(n - 1) print(sum(100))
相当于匿名函数,可以简化目前的函数,在 java 中的流式操作与函数接口有体现。
//常规 Runnable r1=new Runnable() { @Override public void run() { System.out.println("你好"); } }; //lambda表达式 Runnable r2=()->{ System.out.println("你好"); };
但是 python 中的表达式只能存在一行代码,使用 python 中的 lambda 来简化函数
#形式: lamdba 参数 : 执行操作/返回值 aaa = lambda: 10 print(aaa) print(aaa()) bbb = lambda a: a + 10 print(bbb) print(bbb(10)) # 接受两个参数 ccc = lambda a, b: a + b print(ccc(1, 2)) # 编写一个函数,接受两个参数,并返回最大值 ddd = lambda a, b: a if a > b else b print(ddd(2, 1)) print(ddd(2, 3))
# 使用 lambda 对字典数据进行排序 persons = [ {"name": "张三", "age": 20}, {"name": "李四", "age": 17}, {"name": "王麻子", "age": 21} ] persons.sort(key=lambda p: p['age'], reverse=True) print(persons)
# 将一个元素中所有的值翻倍 map nums = [1, 2, 3, 4, 5, 6, 7] m = map(lambda a: a * 2, nums) for i in m: print(i) # # 让集合中的对应位置进行相加 nums1 = [1, 2, 3, 4, 5, 6, 7] nums2 = [2, 3, 4, 5, 6, 7, 8] m = map(lambda a, b: a + b, nums1, nums2) for i in m: print(i)
# 对集合进行筛选 nums = [1, 2, 3, 4, 5, 6, 7] f = filter(lambda a: a > 5, nums) for i in f: print(i)