show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上一章我们学习了循环
- 循环语句有两种
- while
- for
- for可以遍历各种可迭代对象
- 容器类(list,tuple,set)
- 循环可以嵌套
- 二重
- 多重
- 容器可以有各种推导式
- 列表推导式
- 集合推导式
- 字典推导式
- 我们这次来研究什么呢?
- 什么是函数呢?
- 我们直接来看一个生活中的例子
- 一般吵架后
- 道歉是一个流程
- 总共两句话
- 老婆我错了
- 都是我不好
- 每次都要执行
- 可以为这个套路定义一个函数
- 叫做sorry
- 反复执行
- 以后想用的时候
- 装上就走
- 这是最高效
- 也不用走心的法门
- def的意思是
- define 定义
- 这里定义了一个函数
- sorry
- 是函数的名字
- sorry后面有小括号()说明sorry是一个函数
- 小括号后面有冒号
- 冒号确认函数体的开始
- 函数体
- 总共两句话
- 老婆我错了
- 都是我不好
- 都是缩进在函数范围里面的
- 总共两句话
- 这是一个很好用的套路
- 大家一定熟练调用
- 但是运行起来没有效果啊?!
- 定义函数是定义好一套表情配合话术
- def fun():
- 真正需要使用的时候需要调用!!!
- call sorry()
- 每次调用都走一个流程
- 前三行定义了一个函数
- 第5行调用了这个函数
- 具体执行之后什么结果呢?
- 注意sorry函数后面要跟着小括号
- 这个东西怎么理解呢?
- 我们生活中有大量事情是流程化的
- 比如菜谱步骤
- 我们就是按照菜谱一步步执行
- 只要我们执行一次
- 就会得到一盘醋溜白菜
- 还有什么流程么?
- 比如乐谱
- 唱歌或者演奏
- 一个一个音符地执行
- 就像八音盒一样
- 把流程固定下来
- 反复执行
- 就会形成一个套路
- 就像练拳
- 一般都有套路
- 都是前人经验的总结
- 有很多招式按照固定序列来打
- 不光拳谱
- 剑谱、枪谱、棍谱
- 下棋有棋谱
- 其实都是一些前任总结的基本套路
- 不懂这些套路就不靠谱
- 就没有入门
- 不过真打起来对方可能不按照套路出招
- 各行各业都有自己的谱子
- 有了谱子
- 也就有了业力
- 不能只以古人为师
- 也不能只以造化为师
- 两者得结合
- 继承中创新
- 发展中有传承
- 否则就是离谱
- 有可能被开除家谱
- 有了人工智能之后
- 他也不看棋谱
- 直接就自己跟自己下
- 不属于任何家谱流派
- 但是却能妙手频出
- 人类棋手反而需要拜他为师
- 确实到了高手地步
- 不能依赖套路
- 也需要实践创造新的套路
- 说远了
- 我们如果要把当前套路执行3遍
- 应该怎么做呢?
- 把第五句执行函数的语句
- 复制出三行来
- 可以么?
- 试试
- 好像确实可以
- 就像我们调用print或者input函数一样
- 可以调用我们自定义的函数
- 目前函数可以分成两类
- 一类是内建的函数(built-in)
- input
- 系统已经有的函数
- 比如input
- 就不用重新发明一遍了
- 不用重新发明轮子
- 直接调用(call)就完事了
- 另一类是没有现成的
- 另一类没有现成的的套路
- 没有听说有统一的哄老婆话术培训的
- 我相信没有任何人愿意接受标准化流程的道歉
- 调用的时候要
- 是用户自己建立的函数(user-defined)
- sorry
- 这都是自己定制的
- 没有系统版本
- 那就自己造个轮子
- 以后就直接调用
- 写清函数名
- 加上小括号
- 这次我们定义了函数
- 函数就是一个套路、流程、惯用方法
- 我们可以把他定义出来
- 然后再调用
- 调用函数
- 定义函数就是把相关的代码封装到一个函数里面
- 以后只要调用函数
- 相关的代码
- 就从头到尾地执行了
- 这个函数可以调试么?🤔
- 下次再说!👋