目录
函数与方法的区别
函数的定义
传参的情况
常见传参
其他传参
函数的返回值
函数嵌套
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.可变传参-字典
# 可变传参-元组 # <class 'tuple'> # 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) # 可变传参-字典 # <class 'dict'> 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 = 0max = 0total = 0for i in arr:min = min if min < i else imax = max if max > i else itotal += ireturn min, max, total res = sum(1, 4, 7, 9, 8, 3, 2) print(res)
函数嵌套
递归求和1-100的和
def sum(n):if n < 2:return nelse:return n + sum(n - 1) print(sum(100))
Lambda表达式
相当于匿名函数,可以简化目前的函数,在 java 中的流式操作与函数接口有体现。
//常规 Runnable r1=new Runnable() {@Overridepublic 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函数
# 将一个元素中所有的值翻倍 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)
filter函数
# 对集合进行筛选 nums = [1, 2, 3, 4, 5, 6, 7] f = filter(lambda a: a > 5, nums) for i in f:print(i)