13.3 向函数传递参数

    现在来看括号做什么用:它用来传递参数(argument)!

    空标题文档 - 图1

    不,卡特,计算机非常听话,它们永远也不会争论1。在编程中,参数这个词是指你交给函数的一条信息。我们把这称为:你向函数传递参数。

    1argument 也有“争论”的意思,卡特显然是把这里的 argument 理解为“争论”了。——编者注

    空标题文档 - 图2

    假设你希望对你的所有家庭成员使用这个地址打印函数。所有人的地址都是一样的,但是每一次人名会有所不同。不能在函数中把人名硬编码写成 Warren Sande,你可以建立一个变量。调用函数时将这个变量传递到函数。

    要说明这是如何工作的,最容易的方法就是举例子。在代码清单 13-2 中,我修改了地址打印函数,要使用一个对应人名的参数。参数是有名字的,就像其他变量一样。我把这个变量命名为 myName

    函数运行时,变量 myName 会填入调用函数时为它传入的任何参数。调用函数时,我们把参数放在括号里,通过这种方式将参数传入函数。

    因此,在代码清单 13-2 中,参数 myName 赋值为 Carter Sande。

    代码清单 13-2 向函数传递参数

    空标题文档 - 图3

    运行代码,你会得到期望的结果:

    >>> ===================== RESTART =====================
    >>>
    Carter Sande
    123 Main Street
    Ottawa, Ontario, Canada
    K2M 2E9

    这看上去与第一个程序(没有使用参数)得到的输出完全相同。不过,我们每次可以用不同方式打印地址,比如:

    printMyAddress("Carter Sande")
    printMyAddress("Warren Sande")
    printMyAddress("Kyra Sande")
    printMyAddress("Patricia Sande")

    现在每次调用函数时输出都不同。人名会变,因为我们每次都向函数传入了不同的人名。

    >>> ============================ RESTART ============================
    >>>
    Carter Sande
    123 Main Street
    Ottawa, Ontario, Canada
    K2M 2E9

    Warren Sande
    123 Main Street
    Ottawa, Ontario, Canada
    K2M 2E9

    Kyra Sande
    123 Main Street
    Ottawa, Ontario, Canada
    K2M 2E9

    Patricia Sande
    123 Main Street
    Ottawa, Ontario, Canada
    K2M 2E9

    注意,我们向函数传入什么值,函数中就会使用什么值,并作为地址的人名部分打印出来。

    空标题文档 - 图4

    如果每次函数运行时有多个信息不同,就需要多个参数。下面就来讨论这个问题。