python函数的基本解释

NZS*_*eve 6 python function

我有一个基本的问题,以帮助尝试在python中解决函数(遵循prep for uni中的LPTHW教程).有人可以解释下面的语法,我的假设是否正确?

def print_two_again(arg1, arg2):
    print "arg1: %r, arg2: %r" % (arg1, arg2)

print_two_again("Steve","Testing")
Run Code Online (Sandbox Code Playgroud)

据我所知,print_two_again是函数的名称,但什么是具有目的arg1,arg2括号旁边?是否要调用"steve" "testing"下面的打印命令?或者这些字符串是否指向print命令?

cod*_*edd 16

将arg1,arg2放在旁边的括号中的目的是什么?

在这种情况下,arg1并被arg2称为参数.参数允许函数接收输入它的预期,为了执行任务使用.输入由呼叫者提供.

例如,在学校数学中,您可能已经看到z = f(x, y)了将名为f的函数定义为的位置f(x, y) = x + y.这与编程语言中的概念相同.

它还允许您编写更通用,灵活且可重用的代码.例如,您不必编写许多不同版本的函数来完成相同的任务,结果略有不同,避免出现像add2(x, y) = x + yadd3(x, y, z) = x + y + z等情况.您可以简单地执行以下操作:

def sum(values):  # values is of type 'list'
    result = 0
    for value in values:
        result += value
    return result
Run Code Online (Sandbox Code Playgroud)

并称之为:

total = sum([1, 2, 3, 4, 5, 6, 7]) # a list of any length with numbers

或者像这样:

total = sum([1, 2])

函数需要多少个参数取决于它需要做什么以及其他因素.

更新

令我困惑的是print_two_again("史蒂夫","测试"),这叫做什么及其目的?

该行print_two_again("Steve","testing")是函数的调用(即函数调用).这会导致程序"跳转"到名为的函数print_two_again并开始执行其中的代码.

("Steve","testing")部分是作为输入发送到函数的参数.这些是位置参数,这基本上意味着它们被"映射"到名称arg1arg2基于您在调用函数时提供它们的顺序.

例如,考虑一下这个功能f(x, y) = x - y.如果调用此函数,z = f(3, 4)那么名称的参数x将接收值3,y并将4返回-1.如果颠倒的参数在通话,那么你就必须x=4y=3它会返回1来代替.您提供的函数中的参数也是如此.

这意味着函数调用中参数顺序很重要.

与许多其他语言一样,Python语言已经具有一组内置功能.名为的函数print就是一个例子.您可以使用该pydoc命令获取大量信息(pydoc3如果您使用Python3,我建议使用).例如,该命令pydoc3 print生成以下文档:

有关内置模块内置函数打印的帮助:

print(...)print(value,...,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.
Run Code Online (Sandbox Code Playgroud)

请注意,这是Python3的文档.Python2文档会略有不同.

您在学校的数学课程中看到的功能理解与编程语言中的功能之间存在直接关联.这是因为数学是计算机科学和编程语言等基础的一部分(例如算法分析).


Sem*_*glu 5

将 arg1、arg2 放在它旁边的括号中的目的是什么?

arg1arg2是输入的名称,从那里函数可以使用这些输入。在您的情况下,您的功能是打印它们。其他函数可以使用这些参数做其他事情。但是让我们一步一步来。

def print_two_again(arg1, arg2):
    print "arg1: %r, arg2: %r" % (arg1, arg2) 
Run Code Online (Sandbox Code Playgroud)

在以 开头的前两行中def,您定义了一个函数。它做了一些事情。在你的情况下打印它需要的两个参数。

print_two_again("Steve","Testing")
Run Code Online (Sandbox Code Playgroud)

在第三行,您实际做的是调用该函数。当你调用该函数你告诉传递函数"Steve""Testing"函数的自变量的定义。

上面这行字面意思是函数调用。假设您有一个程序,并且希望它打印两个单词。您需要定义您希望它如何完成。这称为函数定义,您可以在其中定义事物的工作方式。没关系,但还不够。你会想要让它发生。所以你要做的是执行那个函数。这称为函数调用

print_two_again("First","Call")
print_two_again("Second","Call")
Run Code Online (Sandbox Code Playgroud)

在上面几行中,我们所做的是两次调用先前定义的函数,但使用不同的参数。

现在让我们看看第二行,它可能会让你感到困惑。

print "arg1: %r, arg2: %r" % (arg1, arg2) 
Run Code Online (Sandbox Code Playgroud)

print是 Python 中的内置函数。上面这行的作用是传递arg1arg2参数并以以下格式打印它们"arg1: %r, arg2: %r"