向函数传递参数-从Python开始

向函数传递参数-从Python开始,python,Python,从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_do

从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()

我不知道函数
show\u double
后面的
(number)
与主函数有什么关系,或者与任何东西有什么关系。我也不明白为什么它在主函数中被列为
show\u double(value)
。我不明白为什么
show\u double()
的两个实例都不使用传递给它的相同参数

因此,当您使用
()
调用函数时,您的意思是我希望此函数运行。在底部,您正在调用
main
函数,该函数依次调用
show\u double
函数,参数为
5

main函数调用
show\u double()
传递参数值


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

简而言之,发生了什么:

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
show\u double(value)
是一个函数调用,参数是
value
。基本上,您可以通过这种方式从主函数调用show_double

def show\u double(数字):
这基本上是该特定功能的函数定义开始的地方。您可以从其他地方调用它,比如从main函数调用

number
参数使您可以使用任何具体值调用此函数,因此它不是硬编码的,也不使用全局变量。在这种特殊情况下,您将把值
5
传递给它以进行打印,但通过另一个函数调用,这可能类似于6、7、10左右。基本上,这种方式可以使您的打印灵活

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


main
->
show\u double
(这将打印您的值)->返回到
main
基本上
show\u double(value)
将主函数中定义的
值传递到
show\u 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()

因此,您可以看到在代码的底部如何调用
main()
?这就是主函数的运行方式,或者让编译器/解释器知道要运行哪个函数。在main函数中,它执行相同的操作,只是现在它调用的函数是
show\u double(number)
。括号中是一个“参数”,一个必须在调用中发送的值。因此,为了满足这个要求,主方法调用
show\u double(value)
,这与
show\u double(5)
相同。现在我们进入了show\u double
功能。这里它接受参数
5
,并将其设置为名为
number
的变量。它将其加倍,然后将其返回到函数“按索引而不是名称获取参数”。这就是为什么数字和值是不相关的,但它只是工作

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

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

hello
world
python

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

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

为了执行
main
,Python执行
value=5
行,这将创建局部变量
value
。该变量仅在
main
调用中可用。然后执行
show\u double(value)
,这是一个函数调用,因此要执行的下一行将是
show\u number
正文的第一行。但在此之前,Python创建名为
number
(因为它在
defshow\u number(…)
)的局部变量,并使用
value
(即
5
)的值对其进行初始化,因为
value
是在
show\u number(…)
调用中指定的。函数调用中括号内的项称为参数。它们用于指定被调用函数的输入。在调用站点(
show_number(value)
value
被指定为输入,其值(
5
)作为本地变量
number

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


您也可以调用show_double(5),然后它会在show_double函数中将5赋值给number变量。

在main中,您使用
值调用
show_double
def show\u double(number)
是定义
show\u double
的地方。从某种意义上说,这意味着当您调用
show\u double
时,您将用括号中的值替换
number
。非常感谢,我想我现在明白了!我想我很难理解的是为什么它需要(number)@user