Python.03.函数使用

目录

函数与方法的区别

函数的定义

传参的情况

常见传参

其他传参

 函数的返回值

函数嵌套

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))

 

Lambda表达式

相当于匿名函数,可以简化目前的函数,在 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函数

# 将一个元素中所有的值翻倍 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)

你可能感兴趣的:(python,python,开发语言)