3

从 Python 开始的第 3.5 节,“将参数传递给函数”有一个我没有关注的示例:

# This program demonstrates an argument being
# passed to a function

def main():
    value = 5
    show_double(value)

# The show_double function accepts an argument
# and displays double its value

def show_double(number):
    result = number * 2
    print result


#call main function
main()

我不明白(number)该功能show_double与主要功能的关系如何,或与任何东西有关。我也不明白为什么它在 main 函数中列为show_double(value). 我不知道为什么两个实例show_double()不使用传递给它的相同参数?

4

9 回答 9

2

因此,当您使用 调用函数时(),您是在说我希望该函数运行。在底部,您正在调用该main函数,该函数又show_double使用5.

于 2013-08-30T20:29:38.763 回答
2

基本上将主函数中show_double(value)的定义传递给函数,该函数期望接收一个数字作为参数valueshow_double(number)

def main():
    value = 5
    show_double(value)  # Function Call

# The show_double function accepts an argument
# and displays double its value

def show_double(number): # Function defination
    result = number * 2
    print result


#call main function
main()
于 2013-08-30T20:32:58.147 回答
1

main 函数调用show_double()传递参数值。

然后值在函数内部加倍并返回

于 2013-08-30T20:30:44.143 回答
1

简而言之,发生了什么:

main 只取 value = 5,并将其放入 show double 函数中

在某种程度上,您可以像这样重写整个代码(因为它相对简单),但它可能有助于理解

def main():
    value = 5 #the main() part

    result = value * 2 #the show_double(number) part (notice how i changed the number varialbe to value, so you can follow what is happening to 'value'
    print result
于 2013-08-30T20:32:34.147 回答
1

所以你看到你的代码底部是如何调用的main()?那就是运行主函数,或者让编译器/解释器知道要运行哪个函数。在 main 函数中它做同样的事情,除了现在它调用的函数是show_double(number). 括号中是一个“参数”,一个必须在调用中发送的值。因此,为了满足这一点,主要方法调用show_double(value)show_double(5). 现在我们在show_double函数中。在这里,它接受参数5并将其设置为一个名为 的变量number。它将它加倍,然后将其返回到main.

于 2013-08-30T20:35:23.820 回答
1

函数通过索引而不是名称获取参数。这就是为什么数字和价值不相关但它只是工作

function test(first, second, third):
    print first
    print second
    print third

param1 = 'hello'
param2 = 'world'
test(param1, param2, 'python')

结果

hello
world
python
于 2013-08-30T20:38:19.147 回答
1

我在下面解释 Python 如何处理你的程序。我制定了一般规则并展示了它们如何应用于您的程序。还有许多其他规则(例如return),所以我在下面写的只是对真正的一般规则的简化。

Python从上到下执行(即处理)程序。因此,首先执行def main ...块(包括以空格开头的行),从而创建main函数。然后执行该def show_double ...块(后面有缩进的行),它创建了show_double函数。然后main()执行该行,调用该main函数。函数调用从上到下执行函数的主体(即以空格开头的行)。处理完整个函数体后,在调用下方的行中继续执行。现在下面没有这样的行main了,所以程序退出了。

要执行main,Python 会执行该value = 5行,这会创建局部变量value。该变量仅在main调用中可用。然后show_double(value)执行,这是一个函数调用,因此要执行的下一行将是show_number. 但在此之前,Python 会创建名为number(因为它在 中)的局部变量,并用(ie )def show_number(...)的值初始化它,因为在调用中已指定。函数调用中括号内的项目称为参数。它们用于指定被调用函数的输入。在调用站点 ( )被指定为输入,其值 (value5valueshow_number(...)show_number(value)value5) 成为局部变量number

于 2013-08-30T20:39:16.070 回答
1

当您调用 show_double(value) 时,它会将“value”传递给“number”参数。def show_double(number) 不是在寻找名为 number 的变量,它只是意味着第一个参数(在本例中为“value”)将被分配给 show_double 函数中的变量“number”。

您也可以调用 show_double(5),然后它将 5 分配给 show_double 函数中的 number 变量。

于 2013-08-30T20:39:20.447 回答
0

show_double(value)是一个函数调用,参数是value. 您基本上可以从 main 函数中以这种方式调用 show_double 。

def show_double(number):这基本上是该特定功能的功能定义开始的地方。您可以从其他地方调用它,例如从 main 函数。

number参数使您可以使用任何具体值调用此函数,因此它不会被硬编码,也不会使用全局变量。在这种特殊情况下,您会将值传递5给它以进行打印,但这可能是 6、7、10 或其他函数调用的任何值。基本上,这种方式可以使您的打印灵活。

在您的代码中,从末尾调用 main 函数,因此链将是:

main-> show_double(这将打印您的值)-> 返回main

于 2013-08-30T20:32:47.977 回答