当前分类:python>>正文

快速创建Python函数,提升代码复用性

来源:互联网   更新时间:2023年7月12日  

Python 笔记

一、函数定义

函数是一段可重用的代码块,它接受一些输入(参数),并返回一些输出。使用函数可以避免重复的代码,提高代码的复用性。

创建函数的语法如下:


def function_name(parameters):
    '''函数说明文档,可选'''
    # 函数体代码块
    return output

其中,def是函数定义的关键字,后跟函数名和一对括号()。在括号内可以指定函数参数,多个参数用逗号分隔,也可以为空。在冒号:后面的下一行是函数体,缩进的代码块为函数体内容,最后的return语句指定函数的返回值,也可以没有return语句。

以下是一个示例函数:


def add(x, y):
    '''计算两个数的和'''
    result = x + y
    return result

该函数的名称为add,有两个参数xy,函数体中将两个参数相加并将结果存储在变量result中,最后返回result的值。

二、函数调用

定义好函数后,可以通过函数名来调用函数。调用函数时,需要传递必要的参数。

以下是调用add函数的示例:


a = 3
b = 4
c = add(a, b)
print(c)

该程序先定义了变量ab,然后调用add函数,并将ab作为参数传递给函数。函数计算出ab的和,然后返回该值并存储在变量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,有两个参数ab,其中b的默认值为2,函数体中将ab相乘并返回结果。

下面是调用multiply函数的示例:


a = 3
c = multiply(a)
print(c)

该程序先定义变量a,然后调用multiply函数,并将a作为参数传递给函数。函数计算ab(使用默认值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)

该程序先定义四个变量abcd,然后调用average函数,并将这四个变量作为参数传递给函数。函数计算这四个参数的平均值,并返回结果。结果存储在变量avg中,最后print函数输出avg的值。

关键字参数是指函数的参数可以使用参数名来指定,不需要按顺序传递。

以下是一个示例函数,其中xy是关键字参数:


def divide(x, y):
    '''计算x和y的商'''
    result = x / y
    return result

该函数的名称为divide,有两个参数xy,函数体中将x除以y并返回结果。

下面是调用divide函数的示例:


a = 3
b = 4
c = divide(x=a, y=b)
print(c)

该程序先定义变量ab,然后调用divide函数,并使用关键字参数x=ay=b来指定函数的参数。函数计算ab的商,并返回结果。结果存储在变量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函数创建两个计数器counter1counter2。然后分别调用两个计数器的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!'字符串。

本文固定链接:https://6yhj.com/leku-p-4791.html  版权所有,转载请保留本地址!
[猜你喜欢]

标签: sublime