这个 function
是一个被命名的代码块,可以用这个名称反复调用。函数非常有用,可以为重复性任务创建代码,并将此代码与单个函数调用一起使用。作为流行且完整的编程和脚本语言,Python提供了函数。有不同类型的函数,其中有些接受参数,有些不需要参数,有些返回一些数据,有些不返回任何数据,等等。在本教程中,我们将研究如何在Python中创建或定义不同类型的函数。
定义函数
def关键字用于定义函数并设置其名称。函数定义语法如下所示。
def FUNCTION_NAME(PARAMETERS): CODE return RETURN_VALUE
- 函数名称 函数的名称,用于稍后从代码的其他部分调用此函数。
- 参数 是可以在每次调用中传递到函数中的单个或多个值。这是可选的。
- 代码 每次调用函数时执行的函数或函数体的代码块。
- 返回u值 用于将值或对象返回给函数调用方。此参数是可选的。
为了理解Python函数定义的基础知识,让我们创建一个非常简单的函数。我们将创建名为 打招呼() 没有参数。正如我们所看到的,函数名可以是单个字母,也可以是不能使用空格的多个单词。我们用下划线表示多个单词。在函数名之后,参数在内部定义 括号 但是由于我们没有在这个create中使用,括号将是空的。最后一个字符是 双冒号 这意味着函数名定义的结尾和下一行将是 功能体 . 函数体以空格开始,空格由开发人员决定,但对于其他Python代码应该是相同的。一般来说,3个空格就足够了,这叫做缩进。我们可以把一行或多行函数体全部缩进。
def say_hello(): print("Hello World")
调用函数
现在调用函数比定义函数容易得多。我们将只提供函数的名称和函数参数(如果需要)。在本例中,sayu hello()函数不需要任何参数。
def say_hello(): print("Hello World")say_hello()
函数参数/参数
通过调整函数以适应不同的值和情况,参数使函数非常强大。参数也以可互换的方式称为参数。提供的参数在函数体内部使用并相应地执行。函数参数是可选的。可以为函数定义一个或多个参数。参数是根据开发人员命名的,但是使用相关的名称将使代码更可读和更易懂。在下面的示例中,我们将定义一个名为multiply的函数,它接受两个要相乘的参数。
def say_hello(name,surname): print("Hello",name,surname)say_hello("ismail","baydan")
如果调用函数时未正确提供reuqired参数,则会发生以下错误。
TypeError: say_hello() missing 2 required positional arguments: 'name' and 'surname'
函数返回值
通常,函数可以返回值,也可以不返回值。它是可选的,但通常情况下,函数用于在函数体代码执行后返回值。下面我们将创建一个名为multiply的函数,将提供的参数相乘并返回结果。返回的值可以用作赋值或打印输出。
def multiply(a,b): return a*bresult = multiply(2,3)print(result)print(multiply(3,3))
函数关键字参数
默认情况下,函数参数按顺序分配。例如,def multiply(a,b)定义可以称为multiply(2,3),参数a将被指定为2,参数b将被指定为3。我们可以通过使用关键字参数和提供关键字参数值来更改参数的顺序。
def multiply(a,b): return a*bresult = multiply(b=5,a=12)
默认参数值
函数可以包含参数,其中值通常用作相同的值。一次又一次地将此参数值设置为相同的值是一项琐碎的任务。可以使用默认参数值,以便提供在未提供给定参数时将使用的默认值。在下面的示例中,我们将值设置为1作为默认参数值。我们只在调用multiply()函数时提供b参数。
def multiply(a=1,b): return a*bresult = multiply(b=5)
匿名函数
匿名函数与所有其他函数类型和实现有点不同。顾名思义,匿名函数不使用赋值名命名。这意味着匿名函数不使用关键字定义 def
. 取而代之的是关键字 lambda
用于定义匿名函数。匿名函数或lambda函数有一些要求和限制。
- Lambda函数可以为函数体使用一个或多个参数。
- Lambda函数只能返回单个值作为函数执行的结果。
- Lambda函数有自己的命名空间,其中只能使用提供的参数。无法从全局命名空间访问其他变量。
- Lambda函数应该在一行中定义和实现。
在下面的示例中,我们创建了一个匿名函数或lambda函数,其中接受两个参数并将其相加,然后返回结果。我们可以看出,没有必要使用这个语句 return
返回一些值。
sum = lambda a, b: a+b;result1 = sum(1,2)result2 = sum(3,5)