不幸的是 我们还不能高兴得太早
Sebastian 告诉我 我还需要几年时间才能拥有一辆自己的无人驾驶汽车
但更大的问题是我们还没谈到
即如何实际地使用这个过程
我们所做的一切只是写出过程 在我们能够实际地使用它们之前
我们还不能高兴得太早
下面我们会学习如何使用它们 然后我们就高枕无忧了
现在我们将要学习如何使用一个过程
要使用一个过程 我们需要过程名称
后面加上一个左括号 再加上一系列输入
输入的数量不是固定的 但是它必须匹配
该过程所预期的输入数量
这些输入有时被称为操作对象
它们有时又被称为参数
我们不会在这个上面多作讨论
我们就叫它们输入
其实你已经做过一些类似的事情了
在第一单元中 你学了如何对于 “string”(字符串)使用 “find”(查找)的功能
通过 “find” 你能够传入一个或两个输入
第一个输入是个字符串
那正是你在查找的字符串
那是第一个输入 第二个输入可能是个数字
也就是你从何处开始查找那个字符串
在第一单元 我们用不同的方法来使用 “find”
你在第一单元的作业中也使用过了
“Find” 与你自己定义的过程还有细微的差别
首先 它是内置的
另外一个差别是 我们并非只有 “find”
我们还有另外一个输入
我们有使用 “find” 功能的字符串(在变量 “page” 当中)
那才是我们要查找的另一个输入
我们会在今后的课程中谈到为什么会有这些差别
但这与调用程序很相似
在此过程中 一个输入在那里 另外两个在这里
两者间有细微的差别 我们在本课程中不会谈到这一点
但在今后的课程中 你会学到其真正的意义
对于所有你自己定义的过程
我们不会调用它们
我们需要的只是有程序可供调用 以及有参数 或者操作对象或者输入
(不论你喜欢怎么称呼它们)可供传入
让我们用一个简单的过程来看一看它如何工作
我将会定义 "rest_of_string" 这个过程
给它一个名为 “s” 的参数 这意味着该过程需要一个输入
并且我们会用 “s” 这个名称来指代这个输入的值
我们将会用从第一个字符到最后一个字符来让它返回字符串
我们会用字符串索引操作符 "return s [1:]"
这将是首字母被除去的字符串
所以 所有得出的字符串从1这个位置一直到字符串结尾处连成一排
这就是返回的结果
所以 "rest_of_string" 的输出
是从输入的字符串的第二个字母开始的新字符串
这里有个例子 显示如何使用这个过程
我们可以直接调用
我们可以写 "print rest_of_string"
这就是我们的过程
现在我们将用括弧 并传入一个输入
"rest_of_string" 有一个参数
所以我们需要传入这个参数 且它应该是个字符串
我们会传入 audacity 这个字符串
当我们调用这样一个程序时
其执行会跳转到过程的主体
我们能够想到现在解释程序在做什么
它不会运行这里的代码 而会移动
当我们调用一个程序时 它会跳转到过程内部运行代码
它会给我们传入的输入赋值
我们可以把它视作一个赋值
即现在 “s” 的值就是我们所传入的输入的值
现在我们将执行过程的主体
在这种情况下 只有一个语句 就是返回语句
我们将找到这个值 也就是 s [1:]
得出的结果将是字符串 udacity
接着我们要返回
返回的意思是我们会跳转
跳转至我们调用程序的地方
但是现在实际上我们已有了一个结果
当我们跳转时
得出的值正是我们所返回的值
在这种情况下 就是字符串 udacity
让我们在 Python 的解释器里尝试一下
我们将定义 "rest_of_string" 这个过程 使用 “s” 这个输入
我们会返回 s[1:]
我们在今后课程中所要做的任何事
以及任何人在计算机编程中所做的事情都是关于
定义和使用过程
现在我们可以高枕无忧了
我们可以将过程视作把输入映射到输出中
我们也可以将人类视作把输入映射到输出中
我们通过眼睛和嘴巴来输入
甚至可能会用到鼻子
我不会画任何人类过程的输出
但既然过程是如此重要的一个概念
那么现在我们会有几个小测验 来检测你是否理解它们