参数就是你给函数"递进去"的东西,让同一个函数每次都能处理不同的内容!
就像榨汁机——放苹果出苹果汁,放橙子出橙汁!
给函数递进去的"食材",让函数知道要处理什么
让同一个函数能灵活处理不同的内容,不再"一刀切"
形参是"空位",实参是"真正塞进去的值"
你之前学过,函数就像一台自动售货机——你按一下按钮,它就出一瓶饮料。但是,如果你想要它有时候出可乐,有时候出雪碧呢?这时候你就需要"告诉"售货机你想要什么。
再想想厨师:没有参数的函数,就像一个只会做蛋炒饭的厨师——每次来都是蛋炒饭,不能变。有了参数,你就可以跟厨师说"我要牛肉炒饭"或者"我要海鲜炒饭",厨师根据你的要求做出不同的菜!
函数每次只能做同一件事,像只会做蛋炒饭的厨师
函数能根据不同输入做不同的事,像大厨一样灵活!
想象你有一台榨汁机(这就是函数),上面有个投料口(这就是参数的位置)。你往里放什么水果(参数),就出什么果汁!
在 Python 里,参数写在函数名后面的括号里面。来看两个例子:
# ===== 一个参数的函数 ===== # 定义函数,括号里的 name 就是"参数" # 它就像一个空位,等你来填 def say_hello(name): print("你好," + name + "!欢迎来上学!") # 调用函数时,往括号里"塞"不同的值 say_hello("小明") # 输出:你好,小明!欢迎来上学! say_hello("小红") # 输出:你好,小红!欢迎来上学! # ===== 多个参数的函数 ===== # 这个函数有 2 个参数:水果种类 和 糖的勺数 def make_juice(fruit, sugar): print("正在用" + fruit + "榨汁,加了" + str(sugar) + "勺糖") make_juice("苹果", 2) # 输出:正在用苹果榨汁,加了2勺糖 make_juice("西瓜", 0) # 输出:正在用西瓜榨汁,加了0勺糖
say_hello 函数只写了一次,但因为有了参数 name,你跟谁说"你好"都可以——只需要换掉括号里的名字就行!
参数有两个名字,就像你有"大名"和"小名"一样:
定义函数时写的参数名
就像榨汁机上的"投料口"
只是个空位,还不知道放什么
调用函数时塞进去的真正值
就是你真的放进去的苹果或橙子
是实实在在的东西!
# 定义函数时 → fruit 是"形参"(空位) def make_juice(fruit): # ← fruit 是形参 print(fruit + "汁做好了!") # 调用函数时 → "苹果" 是"实参"(真正放进去的) make_juice("苹果") # ← "苹果" 是实参
老师让你帮忙算全班同学的总分。没有参数的话,你只能算固定一个人的分数;有了参数,你想算谁的就传谁的名字!
# 定义一个"算总分"的函数 def calc_total(name, chinese, math, english): total = chinese + math + english print(name + "同学的总分是:" + str(total) + "分") # 传入不同的同学(实参),算不同的总分 calc_total("小明", 90, 85, 92) # 输出:小明同学的总分是:267分 calc_total("小红", 95, 88, 96) # 输出:小红同学的总分是:279分 # 这个函数有 4 个参数:名字、语文分、数学分、英语分
calc_total 函数,传入不同的同学信息,就能算出每个人的总分。这就是参数的魔力——写一次代码,到处使用!
make_juice("苹果", 2) 和 make_juice(2, "苹果") 结果完全不同——就像你先放水果还是先放糖,搞反了就不对了。
fruit 比用 x 好,就像盒子的标签写"水果"比写"东西"清楚多了。
name 变量,出了函数就不认识了,就像你在教室里叫的绰号,出了教室就不用了。
| 概念 | 意思 | 比喻 |
|---|---|---|
| 参数 | 传给函数的信息 | 🧃 放进榨汁机的水果 |
| 形参 | 定义函数时写的参数名 | 🕳️ 榨汁机的投料口(空位) |
| 实参 | 调用函数时传入的真正值 | 🍎 真正放进去的苹果 |
| 多个参数 | 函数可以接收多个参数 | 🥤 做奶昔要水果+糖 |