show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 对于程序员来说
- 函数就是封装好的一个套路
- 这封装好的套路也可以接收参数
- 就像洗衣机、电饭煲一样可以设定一些模式
- 我们试一下
- 电压力锅的模式
- 这样我们用户自定义的函数就可以加上参数了
- 调用的时候也要传递给函数参数
- 就像
print("hello")
def cook(mode):
print("------烹饪过程开始-------------")
if mode == "rice":
print("========rice mode starts =========")
print("加热到100度")
print("正常放气降压")
print("保持100度持续25分钟")
print("之后进入保温模式")
print("保持温度在40度")
print("========rice mode ends =========")
elif mode == "bone":
print("=======bone mode ends =========")
print("加热到100度")
print("不放气继续加压加温")
print("保持温度115度")
print("内部压力加到70kpa")
print("保持115度,70pa 20分钟")
print("慢慢降压")
print("=======bone mode ends =========")
else:
print("==========\33[41m[error]\33[0mmode is not valid!===")
print("------烹饪过程结束-------------")
cook("nothing")
cook("bone")
cook("rice")
- 这是怎么个流程呢?
- 三次调用函数
- 先走了一个错误的使用流程
- 括号里面给的模式是"nothing"
- 然后走一个熬汤的流程
- 括号里面给的模式是"bone"
- 最后走了一个蒸饭的流程
- 括号里面给的模式是"rice"
- 我们这个参数调用的时候
- 不但要有函数名
- 而且还要有参数列表
- 什么是参数列表呢?
- 我们先看函数定义
- 函数cook后面的括号里面有个参数
- 参数的名字叫做mode
- mode具体是什么我们在定义的时候还不知道
- mode只是一个形式上的参数
- 也叫形参parameter
- 函数的形参只是形式上的
- 具体是用什么模式
- 根据的事调用的时候
- 给到函数的实实在在的参数
- 也叫实参(argument)
- 这个单词我们见过
- 一个水果销售的程序
- 命令行中告诉我 参数
- 水果
- 数量
python3 shopping.py apple 3
python3 shopping.py banana 5
- 原理是一样的
- 原来是从命令行 传递参数
- 现在 在程序内部 传递参数
- 我们来调试一下
- 从第一次调用开始
- 一路n下去
- 就直接结束了
- 没有进入到函数里面
- 如何debug进入到函数里面呢?
- 我们不但可以明确断点放在第几行
- 还可以明确断点放在函数的入口么?
- 再n下去
- 这次n了之后
- 确实可以跳转到函数里面的断点了
- 那我可以看看给过来的参数么?
- 确实可以看到mode的值是
- "nothing"
- 还有什么更快的方法么?
- 查询帮助
- 形参mode
- 目前获得了具体的实参值是"nothing"
- 跳过了第一个分支(2-9)
- 跳过了第二个分支(9-18)
- 进入了第三个分支(19-20)
- 这就是第一次函数调用
- 后两次其实也类似
- 根据不同的实际参数,决定出:
- 蒸饭
- 煲汤
- 什么也不做
- 这种参数调用我们以前也经常用
- print函数
- 接受一个字符串参数
- 这是hello world时候就知道的
- 类似的参数很常见
- 就像原料
- 比如要做一个瓶瓶罐罐
- 有个流程套路之外
- 你得有原料吧?
- 这里要的原料就是黏土
- 不管什么样的黏土
- 反正你得给我黏土
- 白色的黏土
- 返回的是一个白陶罐
- 黄色的黏土
- 返回的是一个红陶罐
- 但是实际给我的参数(原料)必须得是黏土
- 就如同电饭锅需要知道自己的模式
- 蒸饭
- 熬粥
- 蹄髈
- 如果你告诉电饭锅你的模式是牛仔服...
- 这个放不进去
- 也没法闷煮
- 给了正确参数之后
- 流程都是那么一个流程
- 白黏土出白管子
- 黄黏土出黄罐子
- 或者说沏茶
- 沏的是红茶 砌出来 喝到的就是红茶
- 里面放的是绿茶 喝到的就是绿茶
- 里面放的是黑茶 喝到的就是黑茶
- 里面 放的是咖啡 喝到的就是咖啡
- 流程套路一样
- 咖啡可以冲一泡
- 作为参数可以接受
- 至少比牛仔服好多了
- 其实我们用过很多函数
-
f = open("oeasy.txt")
-
open函数就接受一个函数名
-
并且返回一个文件类型的对象
- 可以s(tep into) 到函数open里面
- 看看他的实现细节
- 我们去总结一下
- 对于程序员来说
- 函数就是封装好的一个套路
- 这封装好的套路也可以接收参数
- 就像洗衣机、电饭煲一样可以设定一些模式
- 传递的参数有两部分两种
- 函数定义的时候,给出的是一个形式上的样子,是形参(parameter)
- 函数调用的时候,给出的是具体的实际参数的值,是实参(argument)
- 调用的时候完成一个赋值的过程
- 把实参的值赋给形参
- 这次传递了字符串类的模式作为实参
- 还可以传递具体的整型数字数值作为实参么?🤔
- 我们下次再说!👋