函数参数(例如在Python中)

时间:2011-08-16 23:34:00

标签: python function arguments language-design argument-passing

什么是[function]参​​数?它们用于什么?
我最近开始学习Python;我是编程的新手,我为这个基本问题道歉。

在每个Python教程中,我都会讨论参数。我已经找到了这个问题的答案,并找到了很多答案,但对我来说,这些答案有点难以理解。我可能只是缺少一些概念背景 所以...当我定义一个函数时,括号中的东西用于什么? 例如:

def hi( This is the part that i dont get):
     print 'hi'

修改
与此相关的两个后续问题后来在这里被关闭和合并,因此部分答案的部分脱离背景特征。
后续问题是:[转述]

8 个答案:

答案 0 :(得分:10)

简而言之,他们的数据被“传递”到函数中,告诉它该做什么。维基百科有详细信息。

http://en.wikipedia.org/wiki/Function_argument

例如,您的hi()函数可能需要知道向谁打招呼:

def hi(person):
    print "Hi there " + person + ", how are you?"

或者数学函数可能需要值来操作:

def square(x):
     return x * x

答案 1 :(得分:5)

答案 2 :(得分:5)

在这种情况下使用参数,它只是一个关于如何使用它们的演示,而不是你演示的最有效的演示。功能非常有用。例如,如果我想添加两个数字:

def add(num1, num2):
  x = num1 + num2
  return x
add(1,3)

函数对于执行重复性任务非常有用,假设您在示例中必须向数百个名称打招呼,而不必执行该raw_input()函数的循环来读取其名称并添加一些文本你可以简单地调用一个函数来执行任务并传递参数(人名为它)。

根据你的第二个问题,参数只是传递给函数的变量,所以你从外部传递给它的变量,例如我将数字1和3传递给函数内部的函数add它们简称为num1 num2

在您传递太多参数的情况下会产生这样的结果:

>>> add(1,2)
3
>>> add(1,2,3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: add() takes exactly 2 arguments (3 given)
>>> 

祝你好运!如果您需要进一步的帮助,请随时给我发电子邮件(sbrichards(at)mit.edu)

答案 3 :(得分:2)

括号中的内容称为参数。基本上这些是您希望函数使用的变量。例如,假设您有一个功能,并且希望它在您调用时打印一个单词。使用参数,您可以定义该单词的内容。这是一个例子:

def hi(word):
    print word

现在,如果我做这样的事情:

hi('Hello!')

它会打印出来:

'Hello!'

hi()作为名为'Hello!'的变量传递word,然后打印出该单词。

答案 4 :(得分:1)

在您的示例中,它们未被使用。

如果你的函数需要根据你给出的参数而行为不同,那么参数是什么。

def hi_name(name):
    print 'Hi ' + name

hi_name("John doe")

打印出“Hi John Doe”。

现在回到关于functions的基础知识。

答案 5 :(得分:1)

参数是一个只存在于该函数中的特殊变量。

在你的例子中,你有一个带有2个参数的函数:

def add(num1,num2):
    x = num1 + num2
    return x

当我使用add()调用此函数时,我必须在括号中添加我想要的num1num2。在您的情况下,您有13,因此您可以将其称为add(1,3)

您所说的是您要调用add(),并且您希望第一个参数num1等于1,第二个参数{{1 },等于num2

答案 6 :(得分:1)

def main(a, b):
    print(a)
    print(b)

main(3, 5)

这是带有参数的函数的基本示例,请查看更多信息here

输出:

3
5

答案 7 :(得分:0)

如果您无法向他们提供他们应该处理的信息,那么功能将毫无用处 争论就是这样的信息。

def GiveMeANumberAndIDuplicateIt(x):
    return x * 2

def DontGiveMeAnythingAtAll():
    return None