python函数基本讲解
- 2025-03-26 09:10:00
- admin 原创
- 11
问题描述:
我有一个基本问题,希望能够帮助我理解 Python 中的函数(遵循大学准备阶段的 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`
解决方案 1:
旁边括号中的 arg1, arg2 有什么用途?
在这种情况下,arg1
和arg2
被称为参数。参数允许函数接收执行任务所需的输入。输入由调用者提供。
例如,在学校数学课上,你可能已经见过类似这样的内容:z = f(x, y)
函数f被定义为f(x, y) = x + y
。这是编程语言中的相同概念。
它还允许您编写更通用、更灵活、更可重用的代码。例如,您不必编写许多不同版本的函数来完成相同的任务,而结果略有不同,从而避免出现诸如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
并开始执行其中的代码。
部分("Steve","testing")
是作为输入发送给函数的参数。这些是位置参数,这基本上意味着它们会“映射”到名称arg1
,并arg2
根据调用函数时提供它们的顺序进行映射。
例如,考虑函数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
生成以下文档:
模块内置函数中内置函数打印的帮助:
打印(...)打印(值,...,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 文档会略有不同。
你在学校数学课程中学到的函数理解和编程语言中的函数理解之间存在直接联系。这是因为数学是计算机科学和编程语言等学科的底层基础(例如算法分析)。
解决方案 2:
旁边括号中的 arg1, arg2 有什么用途?
arg1和arg2是输入的名称,函数可以从那里使用这些输入。就你的情况而言,你的函数所做的就是打印它们。其他函数可以用这些参数做其他事情。但让我们一步一步来。
def print_two_again(arg1, arg2):
print "arg1: %r, arg2: %r" % (arg1, arg2)
在以 开头的前两行中def
,您定义了一个函数。它执行某些操作。在您的例子中,打印了它所接受的两个参数。
print_two_again("Steve","Testing")
在第三行,您实际上要做的是调用该函数。调用该函数时,您告诉函数将参数传递"Steve"
给"Testing"
函数定义。
上面这行字面意思就是函数调用。假设你有一个程序,你想让它打印两个单词。你需要定义它是如何完成的。这叫做函数定义,你在其中定义事物如何运作。这没问题,但还不够。你希望让它发生。所以你要做的就是执行那个函数。这叫做函数调用。
print_two_again("First","Call")
print_two_again("Second","Call")
在上面的几行中,我们所做的是调用之前定义的函数两次,但使用不同的参数。
现在让我们看一下第二行,这可能会让您感到困惑。
print "arg1: %r, arg2: %r" % (arg1, arg2)
print
是 Python 中的内置函数。上面这行代码的作用是传递arg1和arg2参数,并以以下格式打印它们"arg1: %r, arg2: %r"
解决方案 3:
括号内有 arg1、arg2 的用途是什么?
这里 defprint_two_again(arg1, arg2):
是一个函数,arg1, arg2
被称为参数,在函数中,有两个变量,print_two_again
函数需要两个参数。
令我困惑的是print_two_again(“Steve”,“testing”)?
当您print_two_again("Steve","Testing")
这样称呼时arg1 receive Steve and arg2 receive Testing
。
当您需要时print
,可以将任何文本内部(ie. in between ".....")
放置为简单文本,并%r
用于捕获相应的变量值。
如果你愿意,你可以重写如下:
print "Argument 1: %r, Argument 2: %r" % (arg1, arg2)
您可以更改平面文本,但变量列表将遵循您首先指定的名称。
解决方案 4:
简而言之,“参数 = 传递给函数的数据”。使用这些数据我们可以进行计算或者简单地打印它。
在函数内部,我们打印 arg1 和 arg2。传递给函数的“steve”和“Testing”将被打印。