我在下面有一个基本问题,可以帮助您理解python中的函数(紧接着uni的LPTHW教程)。有人可以解释以下语法,以及我的假设是否正确?
def print_two_again(arg1, arg2): print "arg1: %r, arg2: %r" % (arg1, arg2) print_two_again("Steve","Testing")
据我所知,print_two_again是函数的名称,但什么是具有目的arg1,arg2括号旁边?是调用"steve" "testing"下面的print命令吗?还是这些字符串直接进入print命令?
print_two_again
arg1
arg2
"steve"
"testing"
print
将arg1,arg2放在括号中的目的是什么?
在这种情况下,arg1和arg2称为 arguments 。参数允许函数接收 输入 它的预期,为了执行任务使用。输入由呼叫者提供。
例如,在学校数学中,您可能已经看到过类似z = f(x, y)名为 f 的函数定义为的情况f(x, y) = x + y。这是编程语言中的相同概念。
z = f(x, y)
f(x, y) = x + y
它还允许您编写更加通用,灵活和 可重用的 代码。例如,您不必编写函数的许多不同版本来完成相同任务,但结果略有不同,从而避免了诸如add2(x, y) = x + y和add3(x, y, z) = x + y + z等情况。您可以简单地执行以下操作:
add2(x, y) = x + y
add3(x, y, z) = x + y + z
def sum(values): # values is of type 'list' result = 0 for value in values: result += value return result
并这样称呼它:
total = sum([1, 2, 3, 4, 5, 6, 7]) # a list of any length with numbers
或像这样:
total = sum([1, 2])
一个函数需要多少个参数将取决于它需要做什么以及其他因素。
更新资料
让我感到困惑的是print_two_again(“ Steve”,“ testing”),这叫什么及其目的?
该行print_two_again("Steve","testing")是对函数的 调用 (即函数调用)。这将导致程序“跳入”命名函数的 主体print_two_again并开始执行其中的代码。
print_two_again("Steve","testing")
该("Steve","testing")部分是作为输入发送到函数的参数。这些是 位置 参数,基本上意味着它们会被“映射”到名称,arg1并arg2基于您在调用函数时提供它们的顺序。
("Steve","testing")
例如,考虑功能f(x, y) = x - y。如果按那样调用此函数,则名称为z = f(3, 4)的参数x将接收值,3并且y将为4返回-1。如果您在调用中颠倒了参数,那么您将拥有x=4andy=3并返回它1。您提供的函数中的参数也是如此。
f(x, y) = x - y
z = f(3, 4)
x
3
y
4
-1
x=4
y=3
1
这意味着函数调用中 参数 的 顺序 很重要 。
像许多其他语言一样,Python语言已经具有一组内置功能。命名的函数print就是一个例子。您可以使用该pydoc命令获得很多信息(pydoc3如果您使用Python3,我会建议您这样做)。例如,该命令pydoc3 print产生以下文档:
pydoc
pydoc3
pydoc3 print
在模块内置模块中的内置函数打印帮助: print(…)print(值,…,sep =’‘,end =’\ n’,file = sys.stdout,flush = False) Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.
在模块内置模块中的内置函数打印帮助:
print(…)print(值,…,sep =’‘,end =’\ n’,file = sys.stdout,flush = False)
Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline. flush: whether to forcibly flush the stream.
请注意,这是Python3的文档。Python2文档将略有不同。
您在学校的数学课程中对函数的理解与编程语言中的函数之间有着直接的联系。这是因为数学是计算机科学和编程语言等其他基础语言(例如算法分析)的基础。