1. 什么是Python自定义函数
Python自定义函数是指由程序员自己定义的能够完成特定任务的函数。与内置函数不同,自定义函数需要程序员自己定义函数名、参数、返回值等等。
在Python中,我们可以使用def语句来定义一个函数,例如下面这个例子:
def greet(name):
print(f'Hello, {name}!')
以上代码定义了一个名为greet的函数,该函数接收一个名为name的参数,并打印出一段问候语,其中name为参数值。现在我们可以调用该函数:
greet('Alice')
输出结果为:
Hello, Alice!
2. 自定义函数的语法
在Python中,自定义函数的基本语法如下:
def function_name(parameters):
"""docstring"""
statement(s)
return expression
2.1 函数名称
函数名称是用来标识函数的唯一标识符。符合标识符命名规则,即只能由字母、数字及下划线组成,不能以数字开头。
2.2 参数列表
函数的参数列表是指在函数定义中需要用到的变量,用逗号分隔。参数可以为空。
2.3 函数体
函数体是由一系列可执行语句组成的代码块,它包含在函数定义中并在函数调用时执行。
2.4 返回值
函数可以返回一个值。使用return语句,并跟上要返回的值。
3. Python自定义函数的实例
下面是一个例子,它定义了一个函数,用于计算两个数的和:
def sum(a, b):
"""返回两个数的和"""
return a + b
result = sum(3, 5)
print(result)
输出结果为:
8
4. 函数参数
函数参数可以分为两种类型:位置参数和关键字参数。
4.1 位置参数
位置参数就是按照位置顺序传递给函数的参数。例如下面这个计算两个数的和的函数:
def sum(a, b):
return a + b
如果我们想要计算1和2的和,那么可以像这样调用函数:
result = sum(1, 2) # 如果改动不大可以默认=的结果不输出
print(result)
输出结果为:
3
4.2 关键字参数
关键字参数是指传递给函数的参数以键值对的形式出现,每个参数都有一个名称与之对应。例如下面这个函数:
def greet(name, message):
print(f'{name}, {message}')
我们可以像下面这样使用关键字参数调用它:
greet(name='Alice', message='Hello')
输出结果为:
Alice, Hello
你可以像下面这样混合使用位置参数和关键字参数:
greet('Alice', message='Hi')
输出结果为:
Alice, Hi
5. 不定长参数
有时候我们希望一个函数接受任意数量的参数,可以使用不定长参数。
5.1*args表示不定长参数
使用*args表示函数接受任意数量的非关键字参数。例如下面这个计算多个数的和函数:
def sum(*args):
result = 0
for num in args:
result += num
return result
total = sum(1, 2, 3, 4, 5)
print(total)
输出结果为:
15
5.2 **kwargs表示不定长关键字参数
使用**kwargs表示函数接受任意数量的关键字参数。例如下面这个函数:
def greet(**kwargs):
for key, value in kwargs.items():
print(f'{key}: {value}')
greet(name='Alice', message='Hi')
输出结果为:
name: Alice
message: Hi
6. 匿名函数
Python中可以使用lambda表达式创建匿名函数。匿名函数是没有名称的函数,只能使用一次。
lambda表达式如下:
lambda arguments: expression
例如下面这个计算两个数的和的函数:
sum = lambda a, b: a + b
result = sum(2, 3)
print(result)
输出结果为:
5
7. 闭包
Python中函数可以嵌套,并且内部的函数可以访问外部函数的变量。
下面是一个计算平均数的函数,该函数返回一个函数,用于累加数值,并计算平均数:
def averaging():
numbers = []
def add_number(number):
numbers.append(number)
total = sum(numbers)
return total / len(numbers)
return add_number
avg = averaging()
print(avg(1))
print(avg(2))
print(avg(3))
输出结果为:
1.0
1.5
2.0
以上代码中,函数averaging返回了内部函数add_number。该函数将数字附加到numbers列表中,并计算numbers中数字的平均值。我们首先调用averaging来获取add_number函数的引用。然后,我们使用add_number来添加数字并计算平均值。
8. 总结
Python自定义函数非常方便且灵活,我们可以根据需要定义一个函数来完成特定的任务。在函数的参数中,我们可以使用位置参数、关键字参数、不定长参数、不定长关键字参数来实现不同的功能。此外,你还可以使用匿名函数和闭包,使你的代码更加简洁。通过不断地学习和实践,相信你能掌握Python自定义函数的精髓。