Python函数用def定义,调用时写函数名加括号;核心是参数传递与返回值获取:支持位置参数、默认参数、args、*kwargs;返回值可多值解包,函数内修改可变对象会影响原对象。

Python函数用def关键字定义,调用时直接写函数名加括号。核心在于理解参数怎么传、返回值怎么取,不写清楚这两点,函数就容易用错或效果不对。
怎么定义一个函数
基本语法是:def 函数名(参数列表):,然后缩进写函数体,可选return语句返回结果。
- 函数名要见名知意,比如
calculate_total比func1好懂 - 参数列表可以为空,比如
def say_hello():;也可以有多个,用逗号隔开 - 函数体里不写
return,默认返回None
参数的几种常见写法
Python支持灵活的参数机制,实际开发中主要遇到这四类:
-
位置参数:调用时按顺序传,必须提供,比如
def add(a, b): return a + b→add(3, 5) -
默认参数:定义时给参数赋初值,调用时可省略,如
def greet(name, msg="你好"):→greet("小明")输出“小明,你好” -
*args:接收任意多个位置参数,内部是元组,适合不确定参数个数的场景,比如
def sum_all(*nums): return sum(nums) -
**kwargs:接收任意多个关键字参数,内部是字典,常用于配置类函数,如
def config(**options): print(options)→config(host="localhost", port=8080)
返回值不是只能返一个
Python函数天然支持“多返回值”,其实是返回了一个元组,只是语法上省略了括号。
立即学习“Python免费学习笔记(深入)”;
- 写
return x, y, z,调用后可以直接解包:a, b, c = my_func() - 如果只想要其中某一个,可以用下划线占位,比如
_, b, _ = my_func() - 函数中途遇到
return就立刻结束,后面代码不执行,这点和print不同
调用函数要注意什么
调用本身很简单,但几个细节容易出错:
- 函数必须先定义再调用,否则报
NameError - 传参个数和类型要匹配,比如定义了两个位置参数,却只传一个,会报错
- 修改可变对象(如列表、字典)作为参数时,函数内改动会影响原对象,这是引用传递的表现
- 想避免意外修改,可以传副本,比如
my_list.copy()或my_dict.copy()









