1. 函数定义与调用

使用 def 关键字定义函数,函数体缩进书写。

def my_print():
    """打印1~5"""
    for i in range(1, 6):
        print(i)

my_print()  # 调用

带参数的函数

def my_print(start, stop, msg):
    for i in range(start, stop):
        print(i, msg)

my_print(1, 6, "好饿呀")

2. 返回值 return

函数通过 return 返回结果,一旦执行 return,函数立即结束

def get_total(a, b):
    total = 0
    for i in range(a, b+1):
        if i % 2:
            total += i
    return total

print(get_total(10, 50))  # 输出 10~50 奇数和

可以返回多个值,本质是返回一个元组:

def test():
    return 100, "hello", [1,2,3]

r = test()
print(r)  # (100, 'hello', [1, 2, 3])

3. 参数类型详解

3.1 位置参数与关键字参数

  • 位置参数:按顺序传递。

  • 关键字参数:通过 形参名=值 传递,顺序可调。

def my_max(a, b):
    return a if a > b else b

print(my_max(1, 2))          # 位置参数
print(my_max(b=1, a=2))      # 关键字参数

3.2 默认参数

给形参设定默认值,调用时可省略。

def my_print(msg, n=1):
    for i in range(n):
        print(msg)

my_print("醒醒啦", 10)   # 打印10次
my_print("下课啦")       # 默认打印1次

注意:默认参数必须放在位置参数之后。

3.3 可变参数 *args 和 **kwargs

  • *args 接收任意多个位置参数,打包为元组。

  • **kwargs 接收任意多个关键字参数,打包为字典。

def show(*args, **kwargs):
    print("args:", args)
    print("kwargs:", kwargs)

show(10, 20, 30, a=1, b=2)
# args: (10, 20, 30)
# kwargs: {'a': 1, 'b': 2}

3.4 解包传参

  • 用 * 解包列表/元组作为位置参数。

  • 用 ** 解包字典作为关键字参数。

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

nums = [10, 20, 30]
print(add(*nums))   # 60

data = {"name": "小明", "age": 20, "addr": "郑州"}
def greet(name, age, addr):
    print(f"{name} {age}岁 {addr}")
greet(**data)       # 小明 20岁 郑州

4. 匿名函数 lambda

lambda 只能写单行表达式,自动返回结果,适合简单场景。

# 无参无返回值
f1 = lambda: print(888)
f1()

# 有参有返回值
f2 = lambda x, y: x + y + 100
print(f2(100, 200))   # 400

# 立即调用
print((lambda x, y, z: x + y + z)(10, 20, 30))  # 60

lambda 常用于 sorted()filter()map() 等高阶函数。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐