# 函数:
# 组织好的, 可复用的, 提升代码的模块性, 可维护性
# def func1()
def func1(x, y):
l = x + y #None
#没有 return 的时候 返回值是None
例如:
s = func1(10, 20)
print(s) #None
# 参数是对应的。
def func2(x, y):
print(x,y)
func2(5,6)
func2(6, 5)
# 默认参数
# def func3(a, c,b=10): #b为默认参数
# return a + b +c
# print(func3(1,2)) #13
# def func3(a, c, b):
# return a + b +c
# print(func3(1,2)) # TypeError: func3() missing 1 required positional argument: 'b'
#关键字参数 # 可以不按照顺序
def func4(x, y, z):
return x*y*z
print(func4(y=2, x=3, z=5))
# 不定长参数(*args)
# def sum(x,y):
# return x + y
# def sum(x,y,z):
# return x + y + z
上述 sum(x,y)和 sum(x,y,z)中,参数都是固定的,例如sum(x,y),只能输入x,y两个参数
def sum3(*args):
return sum(args)
# print(args)
print(sum3(1,2,32,45,5,1,23,12,312,41,1))
sum3(*args):传入*args不定长参数,此时函数sum3(*args)可以接收任意长度参数
# **kwargs (接收键值对参数)
例如:
# def func5(**kwargs):
# print(kwargs)
# func5(b=5, c=6, d=7)
# 函数的递归
# 自己调用自己
例如:阶乘
# 1! = 1
# 2! = 2*1!
# 3! = 3*2!
# .....
#
函数代码如下:
def factorial(n):
if n == 1:
return 1
return n * factorial(n-1) #自己调用自己
# factorial(4) => 4 * factorial(3) =>4 * 3 * factorial(2) => 4 * 3 * 2 * factorial(1) =>4 * 3 * 2 * 1
# factorial(n-1) => return (n-1)*factorial(n-2)
# factorial(n-2) => return (n-2)*factorial(n-3)
print(factorial(4))
斐波那契数列:
# 1 2 3 5 8 13 21 34..... 后一个数等于前两个数之和 斐波那契数列
def fibonacci(n):
if n == 1:
return 1
if n == 2:
return 2
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(35))
# 1 3 4 7 11 18 f-lucas数列
函数中return的作用
def func6(x,y):
print(x,y)
return #见到 return 这个函数就执行完毕了,结束了。 这里没有 return值。 返回的是默认的NONE
print(y,z)
func6(1,2)
# s = sum([1,2,32,23])
# print(s)
# 函数起名的时候一定要注意,不要覆盖掉Python里默认的函数
def sum(x, y):
return x + y
# s = sum([1,2,32,23]) #TypeError: sum() missing 1 required positional argument: 'y'
# print(s)
# 函数里定义的变量,在函数外是无法被访问的
def func7():
x = 1
# print(x) # NameError: name 'x' is not defined
def func8(x:str, y:list): #(x:str, y:list)告诉 python 参数的类型。
pass
# lamda函数,匿名函数,一般和key= lamda e:e一起使用
lambda x,y: x + y
lam = lambda x,y: x + y
def lam2(x,y):
return x + y
def myFunc(e):
return e['year']
cars = [
{
'car': 'Ford',
'year': 2005
},
{
'car': 'VW',
'year': 2009
},
{
'car': 'FT',
'year': 2015
},
{
'car': 'BYD',
'year': 2025
},
]
cars.sort(key= lambda e: e['year'])#key= lambda e: e['year'] 直接返回函数,不需要上述先定义myFunc(e)函数,再调用myFunc(e)
print(cars)