学不会Python函数?看完这篇直接开窍 (二)
目录
很多小白学 Python 的时候,最容易卡住的就是“函数”。
看起来好像很复杂,其实函数本质就一句话:
函数就是把一段代码封装起来,需要的时候直接用。
你不用每次都重写一遍代码,只需要“调用”它。
1. 什么是函数?
你可以把函数理解成一个“工具箱里的工具”。
比如你要算两个数的和:
print(1 + 2)
print(3 + 5)
print(10 + 20)
如果一直这样写,会很麻烦。
用函数可以这样写:
def add():
print(1 + 2)
add()
add()
函数的作用就是:
把重复的代码打包起来,随时调用。
2. 函数的定义(重点)
Python定义函数的格式是:
def 函数名():
函数体
比如:
def say_hello():
print("你好,欢迎学习Python")
解释一下:
- def:表示“我要定义函数”
- 函数名:你自己起名字
- 函数体:函数具体做什么
3. 函数的调用
定义完函数以后,不会自动执行。
必须“调用”才会运行:
def say_hello():
print("你好")
say_hello()
say_hello()
输出:
你好
你好
记住一句话:
定义只是“准备”,调用才是“执行”
4. 函数的参数(重点)
如果函数只能做固定事情,那就太傻了。
参数的作用就是:
让函数可以接收不同的输入
def add(a, b):
print(a + b)
add(3, 5)
add(10, 20)
输出:
8
30
解释:
- a 和 b 就是“输入”
- 不同输入会得到不同结果
5. return(返回值)
很多小白会混淆 print 和 return。
简单说:
- print:只是打印
- return:把结果“带出去”
def add(a, b):
return a + b
result = add(3, 5)
print(result)
输出:
8
重点理解:
如果你只 print,没有 return,那么结果不能被“保存”。
6. 默认参数(偷懒神器)
def greet(name="小白"):
print("你好", name)
greet()
greet("张三")
输出:
你好 小白
你好 张三
不传参数就用默认值
7. 可变参数(*args 和 **kwargs)
有时候函数会遇到一个问题:
我不知道用户会传几个参数进来。
比如你要做一个“求和函数”,可能有人传2个数,也可能传5个数,甚至10个数。
如果你一个个写参数,会变成这样:
def add(a, b, c, d, e):
...
这种写法很快就会崩溃(而且很丑)。
1)*args:接收不确定数量的位置参数
def add(*args):
print(args)
add(1, 2, 3)
add(10, 20, 30, 40)
输出:
(1, 2, 3)
(10, 20, 30, 40)
本质理解:
-
*args会把所有传进来的参数 -
打包成一个元组(tuple)
实战:用 *args 做求和
def add(*args):
total = 0
for i in args:
total += i
return total
print(add(1, 2, 3))
print(add(10, 20, 30, 40))
输出:
6
100
2)**kwargs:接收“带名字”的参数
有时候你传的参数不是单纯的数字,而是这种:
name="张三", age=18
这时候就要用 **kwargs
def show(**kwargs):
print(kwargs)
show(name="张三", age=18)
输出:
{'name': '张三', 'age': 18}
本质理解:
-
**kwargs会把参数 -
打包成字典(dict)
8. 函数的递归(重点+难点)
递归就是:
函数自己调用自己
听起来很吓人,但本质就一句话:
“重复做同一件事,直到结束”
示例:计算阶乘
def factorial(n):
if n == 1:
return 1
return n * factorial(n - 1)
print(factorial(5))
此代码即表示 5 * 4 * 3 * 2 * 1
输出:
120
递归要记住两个条件:
- 结束条件(必须有)
- 自己调用自己
如果没有结束条件:
👉 程序会无限调用,直接崩溃
9. 总结
函数的核心就三点:
- 定义函数:
def - 调用函数:函数名()
- 参数 + return:让函数更灵活
递归只是函数的进阶玩法,本质还是“自己调用自己”。
更多推荐

所有评论(0)