首页 > 编程知识 正文

Python构建函数

时间:2023-11-22 01:07:28 阅读:289983 作者:IMIG

Python作为一种高级编程语言,拥有着广泛的应用场景,在开发过程中,函数是Python编程不可或缺的一部分。函数的定义、使用和组成是Python编程的基本技巧。因此,在本文中,将从函数的定义、参数、返回值、作用域以及装饰器几个方面进行详细的阐述。

一、函数的定义

函数是一种可调用的对象(callable object),它用于封装代码,将多个语句组成一个执行单元。以def关键字开头、后接函数名及多个参数、冒号和缩进块构成。其中,参数可以没有,但是括号不能省略。

def function_name(parameters):
    statement(s)

例如,定义一个输出两个数之和的函数:

def add(x, y):
    result = x + y
    print(result)

该函数接受两个参数,并将它们相加得到的结果进行输出。函数调用的时候,可以像下面这样:

>>> add(1, 2)
3

在Python中,函数还支持缺省参数值,如:

def add(x, y=1):
    result = x + y
    print(result)

调用该函数时,可以只传递一个参数,在函数内部使用指定的缺省参数值进行计算:

>>> add(1)
2

二、参数

Python函数有两类参数:必需参数和关键字参数。必需参数在调用函数时必须传递,对应上面定义函数时的parameters;而关键字参数是可选的,可以在调用函数时使用名称和值进行传递。引入关键字参数可以使函数调用更清晰,更易于读懂。

例如,定义一个含有必需参数和关键字参数的函数:

def foo(required_param, *args, **kwargs):
    print(required_param)
    if args:
        for arg in args:
            print(arg)
    if kwargs:
        for key, value in kwargs.items():
            print(key, value)

在这个例子中,required_param是必需参数,而*args和**kwargs分别代表不定量的位置参数和关键字参数。

调用函数,不仅可以传递必需参数,还可以传递位置参数和关键字参数:

>>> foo('hello', 'world', 2018, name='Tom', age=18)
hello
world
2018
name Tom
age 18

三、返回值

函数可以通过return语句返回一个值。如果return语句没有指定返回值,则默认返回None。在函数中,可以存在多个return语句,但只有一个会被执行。当执行到一个return语句时,函数就会立即结束并返回对应的值。

例如,定义一个求两个数之和的函数:

def add(x, y):
    result = x + y
    return result

调用该函数时,可以使用变量存储函数的返回值:

>>> result = add(1, 2)
>>> print(result)
3

四、作用域

Python中,局部变量在函数内部定义,全局变量在函数外部定义,在函数中也可以对全局变量进行访问。函数可以使用global关键字来声明一个变量并将其赋值为全局变量。

i = 5

def foo():
    global i
    i = i + 1
    print(i)

foo()  # 6
print(i)  # 6

五、装饰器

装饰器是Python语言的重要特性之一,是一种用于修饰函数、方法或类的函数。装饰器可以在定义函数的基础上,添加一些额外的功能或者修改函数的行为。装饰器主要是在不修改原函数代码的情况下,对函数进行功能扩展或者修改。Python内置了很多有用的装饰器,例如@staticmethod、@classmethod、@property等。使用装饰器可以使代码更加简洁、优雅。

例如,定义一个装饰器,用于输出函数执行时间:

import time

def timeit(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print('Time:', end_time - start_time)
        return result
    return wrapper

@timeit
def add(x, y):
    result = x + y
    time.sleep(1)
    print(result)
    return result

add(1, 2) # 3; Time: 1.000

在该例子中,使用了timeit装饰器来装饰add函数。该装饰器在调用函数之前输出时间,调用函数之后输出时间。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。