函数是一段可重用的代码块,它接受一些输入(参数),并返回一些输出。使用函数可以避免重复的代码,提高代码的复用性。
创建函数的语法如下:
def function_name(parameters):
'''函数说明文档,可选'''
# 函数体代码块
return output
其中,def
是函数定义的关键字,后跟函数名和一对括号()
。在括号内可以指定函数参数,多个参数用逗号分隔,也可以为空。在冒号:
后面的下一行是函数体,缩进的代码块为函数体内容,最后的return
语句指定函数的返回值,也可以没有return
语句。
以下是一个示例函数:
def add(x, y):
'''计算两个数的和'''
result = x + y
return result
该函数的名称为add
,有两个参数x
和y
,函数体中将两个参数相加并将结果存储在变量result
中,最后返回result
的值。
定义好函数后,可以通过函数名来调用函数。调用函数时,需要传递必要的参数。
以下是调用add
函数的示例:
a = 3
b = 4
c = add(a, b)
print(c)
该程序先定义了变量a
和b
,然后调用add
函数,并将a
和b
作为参数传递给函数。函数计算出a
和b
的和,然后返回该值并存储在变量c
中,最后print
函数输出c
的值。
函数的返回值使用return
语句指定,可以将任何类型的对象作为函数的返回值。
以下是一个返回列表的示例函数:
def create_list(n):
'''创建从1到n的整数列表'''
result = []
for i in range(1, n+1):
result.append(i)
return result
该函数的名称为create_list
,有一个参数n
,函数体中使用for
循环来创建1到n的列表,并将结果存储在result
中,最后返回result
的值。
下面是调用create_list
函数的示例:
n = 5
my_list = create_list(n)
print(my_list)
该程序先定义变量n
,然后调用create_list
函数,并将n
作为参数传递给函数。函数返回1到n的整数列表,并存储在变量my_list
中,最后print
函数输出my_list
的值。
函数可以接受任何数量的参数,包括默认参数、可变参数和关键字参数。
默认参数是指函数的参数有默认值,如果函数调用时不提供该参数的值,则使用默认值。
以下是一个示例函数,其中b
是一个默认参数:
def multiply(a, b=2):
'''计算a和b的乘积'''
result = a * b
return result
该函数的名称为multiply
,有两个参数a
和b
,其中b
的默认值为2,函数体中将a
和b
相乘并返回结果。
下面是调用multiply
函数的示例:
a = 3
c = multiply(a)
print(c)
该程序先定义变量a
,然后调用multiply
函数,并将a
作为参数传递给函数。函数计算a
和b
(使用默认值2)的乘积,并返回结果。结果存储在变量c
中,最后print
函数输出c
的值。
可变参数是指函数的参数个数不确定,可以接受任意数量的参数。在函数定义时,在参数名前添加星号*
表示该参数为可变参数。
以下是一个示例函数,其中*numbers
是一个可变参数:
def average(*numbers):
'''计算平均数'''
total = sum(numbers)
avg = total / len(numbers)
return avg
该函数的名称为average
,可以接受任意数量的参数,函数体中先计算所有参数的和,然后除以参数个数,得到平均值并返回。
下面是调用average
函数的示例:
a = 3
b = 4
c = 5
d = 6
avg = average(a, b, c, d)
print(avg)
该程序先定义四个变量a
、b
、c
和d
,然后调用average
函数,并将这四个变量作为参数传递给函数。函数计算这四个参数的平均值,并返回结果。结果存储在变量avg
中,最后print
函数输出avg
的值。
关键字参数是指函数的参数可以使用参数名来指定,不需要按顺序传递。
以下是一个示例函数,其中x
和y
是关键字参数:
def divide(x, y):
'''计算x和y的商'''
result = x / y
return result
该函数的名称为divide
,有两个参数x
和y
,函数体中将x
除以y
并返回结果。
下面是调用divide
函数的示例:
a = 3
b = 4
c = divide(x=a, y=b)
print(c)
该程序先定义变量a
和b
,然后调用divide
函数,并使用关键字参数x=a
和y=b
来指定函数的参数。函数计算a
和b
的商,并返回结果。结果存储在变量c
中,最后print
函数输出c
的值。
闭包是指一个函数可以记住并访问它所在的变量,即使函数在它所在的作用域之外被调用。
以下是一个示例函数,其中counter
是一个闭包函数:
def counter():
'''计数器闭包函数'''
count = 0
def inner():
'''内部函数'''
nonlocal count
count += 1
return count
return inner
该函数由两个函数组成,counter
是一个返回内部函数inner
的高阶函数,inner
是一个闭包函数,它可以访问并修改counter
函数中的局部变量count
。
下面是使用counter
函数创建计数器的示例:
counter1 = counter()
counter2 = counter()
print(counter1())
print(counter1())
print(counter2())
print(counter2())
该程序先使用counter
函数创建两个计数器counter1
和counter2
。然后分别调用两个计数器的inner
函数,计数器的值分别为1、2和1、2。
装饰器是指可以修改其他函数的行为的函数,它通过在被装饰函数的前后添加额外的代码来实现。
以下是一个装饰器函数的示例:
def my_decorator(func):
'''装饰器函数'''
def wrapper():
'''内部函数'''
print('Before function is called.
')
func()
print('After function is called.
')
return wrapper
@my_decorator
def say_hello():
'''被装饰函数'''
print('Hello world!
')
该程序定义了一个装饰器函数my_decorator
,它接受一个参数func
,返回一个内部函数wrapper
。该程序还定义了一个被装饰函数say_hello
,在函数定义前使用@my_decorator
表示say_hello
将会被my_decorator
装饰。
下面是调用say_hello
函数的示例:
say_hello()
该程序调用say_hello
函数,由于say_hello
函数被my_decorator
装饰,因此在函数调用前后会输出额外的字符串'Before function is called.'
和'After function is called.'
,同时say_hello
函数会输出'Hello world!'
字符串。
标签: sublime