前言

开始学 Python 的时候,函数这块给我整懵了。 分不清形参实参,看不懂*args**kwargs,匿名函数 lambda 也一头雾水。 今天用最简单的话来讲,不整难懂术语,代码全都能直接运行。

1. 到底什么是函数?

简单说:把重复要用的代码打包起来,想用的时候直接喊它,不用反复复制粘贴。

分成两种:

自带函数:print()len(),Python 内置好,直接拿来用;

自定义函数:自己用def造。

def 函数名(参数):
    # 这里写代码
    return 结果

2. 形参和实参,最简单区分

def add(a, b):
    return a + b

add(10, 20)

提醒: 如果你的函数里面只有 print,没写 return。调用这个函数的时候,它会偷偷返回一个None。 之前咱们代码打印多出一行 None,就是这个原因!

3. 四种参数类型,挨个看懂

参数顺序不能乱:位置参数 → 默认参数 → *args → **kwargs

① 位置参数

传入的数据按顺序挨个匹配,顺序不能乱。

def info(name, age):
    print(name, age)

info("小王", 19)

② 关键字参数

info(age=19, name="小王")

位置参数必须写在关键字参数前面,不能混着乱写报错。

③ 默认参数

定义函数的时候直接给参数填好值,如果调用不传这个参数,自动用默认值。

def info(name, age=18):
    print(name, age)

info("小李")   # 不写age,自动age=18
info("小李",20) # 传了新数字,覆盖默认值

④ 可变参数 *args 和 **kwargs

def test(a, b=10, *args, **kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)

test(1, 2, 3, 4, name="小明", gender="男")

运行结果: a=1,b=2,args=(3,4),kwargs={"name":"小明","gender":"男"}

4. 匿名函数 lambda

普通函数需要名字,lambda 不用,适合很短的一行逻辑。 语法: lambda 参数:表达式

# 普通函数
def add(x,y):
    return x+y

# 等价lambda
f = lambda x,y:x+y
print(f(1,2))

限制: 只能写一行表达式,不能写循环、多行 if,复杂逻辑老老实实写 def。

5. return 到底干嘛的

把函数内部的数据传到外面;

一旦执行 return,函数直接结束,后面代码不再运行。

没有 return,默认返回None

更多推荐