python基础之函数的定义和调用

1. 函数的概念

函数(Function)是一段可重复使用的代码,它将一些变量(或参数)作为输入,执行一些操作,最终返回一个结果。定义和调用函数是Python编程中的基础技能之一,也是提高代码可读性和代码复用性的重要手段。

1.1 函数的定义

在Python中,定义函数使用关键字def,函数名后面跟着一对圆括号和冒号(:),括号中可以包含一些参数,函数的执行体必须缩进。

def function_name(paramenters):

# 函数执行体

return result

函数名是可自定义的,但要遵循Python命名规范,以字母或下划线开头,只包含字母、数字、下划线,且不能是关键字。参数是可选的,可以在括号中定义多个参数,多个参数之间用逗号隔开。

1.2 函数的调用

定义函数后,需要调用函数才能执行函数体中的代码,并获取返回值。函数的调用格式为:函数名(参数)。

result = function_name(paramenters)

调用函数时,需要传递与参数数量和类型相符的参数,函数调用后会返回一个结果,可以将结果保存到变量中或者直接输出。

2. 函数的参数传递

2.1 位置参数

位置参数是一种最常见的参数传递方式,也是函数默认的参数传递方式。位置参数的传递顺序必须与函数定义中的顺序一致,否则会导致函数返回错误的结果。

def sum(a, b):

result = a + b

return result

# 调用函数

x = 3

y = 4

print(sum(x, y))

在调用函数时,将参数x赋值给a,参数y赋值给b,函数返回3和4的和7。

2.2 默认参数

默认参数可以在函数定义时为参数设置默认值,如果在函数调用时没有为参数传递值,则使用默认参数的值。

def power(x, n=2):

result = 1

while n > 0:

result *= x

n -= 1

return result

# 调用函数

print(power(3))

print(power(3, 3))

在调用函数时,只传递了一个参数3,函数通过默认参数将n的值设为2,因此返回3的平方9。第二个调用传递了两个参数3和3,函数使用传递的参数计算3的立方27。

2.3 可变长参数

2.3.1 不定长位置参数

不定长位置参数是指在函数定义时,无法确定参数数量和类型,使用*args表示。传递参数时,可以传递任意数量的位置参数,函数将自动将参数放入一个元组中。

def print_args(*args):

print(args)

# 调用函数

print_args(1, 2, 3)

print_args('a', 'b', 'c', 'd')

在调用函数时,传递的参数数量不确定,函数使用*args接收传递的参数,将参数组成一个元组,分别输出(1, 2, 3)和('a', 'b', 'c', 'd')。

2.3.2 不定长关键字参数

不定长关键字参数是指在函数定义时,使用**kwargs表示的参数,可以传递任意数量、任意名称的关键字参数,函数将自动将参数放入一个字典中。

def print_kwargs(**kwargs):

print(kwargs)

# 调用函数

print_kwargs(a=1, b=2, c=3)

print_kwargs(x='hello', y='world')

在调用函数时,传递的参数数量和名称不确定,函数使用**kwargs接收传递的参数,将参数组成一个字典,分别输出{'a': 1, 'b': 2, 'c': 3}和{'x': 'hello', 'y': 'world'}。

3. 函数的返回值

在Python中,函数使用return关键字返回结果,可以返回单个结果、元组、列表、字典等数据类型。

def calculate(x, y):

add = x + y

sub = x - y

mul = x * y

div = x / y

return add, sub, mul, div

# 调用函数

result = calculate(3, 4)

print(result) # (7, -1, 12, 0.75)

在调用函数时,函数返回add、sub、mul、div组成的元组(7, -1, 12, 0.75),可以将结果保存到变量中,或者直接输出。

4. 匿名函数

在Python中,可以使用lambda关键字定义匿名函数,也称为lambda函数。lambda函数可以接收任意数量的参数,并使用一个表达式计算返回结果。

sum = lambda x, y: x + y

# 调用函数

result = sum(3, 4)

print(result) # 7

在上面的例子中,lambda函数接收两个参数x和y,返回它们的和x+y。可以将lambda函数赋值给一个变量,通过变量调用函数。

5. 练习:计算平均数

练习:定义一个函数,接收一个列表作为参数,返回列表中所有元素的平均数。如果传递的参数不是列表,则返回None。

def average(lst):

if not isinstance(lst, list):

return None

if len(lst) == 0:

return 0

total = sum(lst)

return total / len(lst)

# 调用函数,测试函数是否正确

lst1 = [2, 3, 4, 5, 6]

lst2 = [0, 0, 0, 0]

lst3 = []

lst4 = (2, 3, 4, 5, 6)

lst5 = 'hello'

assert average(lst1) == 4

assert average(lst2) == 0

assert average(lst3) == None

assert average(lst4) == None

assert average(lst5) == None

在上面的代码中,定义了一个average函数,用于计算列表中所有元素的平均数。在函数中,首先判断传递的参数是否为列表,如果不是,则返回None;然后判断列表长度是否为零,如果是,则返回0;最后计算列表所有元素的和,除以元素个数,返回计算结果。

总结

函数是Python编程中的基础技能之一,定义和调用函数是提高代码可读性和代码复用性的重要手段。Python中函数的参数传递方式有位置参数、默认参数、可变长参数等,函数的返回值可以是单个值、元组、列表、字典等数据类型。另外,在Python中还可以使用lambda表达式定义匿名函数,提高编程效率。

后端开发标签