首页 函数大全及类型详解
pay pay

Python函数大全及9种函数类型详解

日期: 二月 13, 2023, 3:30 a.m.
栏目: python基础教程
阅读: 6592
作者: Python自学网-村长

摘要: 函数是编程语言对代码封装的典型语法类型,python函数的种类丰富,功能强大。

函数是编程语言对代码封装的典型语法类型,python函数的种类丰富,功能强大。本章节主要讲解函数的构造,函数的参数传递和几种复杂函数的使用以及原理。

一、Python函数介绍

Python 中的函数是一段封装的代码,用于执行特定任务。它可以接收参数,并且可以返回一个值。函数可以被多次调用,有助于减少代码冗余和提高代码的可读性。

Python 中的函数使用 def 关键字进行定义。函数的定义格式如下:

def function_name(arg1, arg2, ...):
    # function body
    return result
  • function_name 是函数的名称,通常使用有意义的名称。
  • arg1, arg2, ... 是函数的参数,可以有多个。
  • return result 语句表示函数的返回值,函数可以有多个返回值。如果没有返回值,可以不写 return 语句。

在 Python 中,函数可以在代码中任意地点被调用,在调用函数时,可以向函数传递参数。

def add(a, b):
    return a + b

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

除了上面提到的标准函数,Python 还有一些特殊类型的函数,如匿名函数(lambda 函数)、装饰器函数等。

二、9种函数类型详解

在 Python 中,函数有以下几种类型:

1.标准函数:它是一个完整的函数,使用 def 关键字定义,用于执行特定任务。

def add(a, b):
    return a + b

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

2.python偏函数

Python 中的 functools.partial 函数允许你创建一个新的偏函数,该函数是原始函数的一个变体,固定了部分参数。这对于需要多次使用相同参数的函数特别有用。

import functools

def add(a, b, c):
    return a + b + c

add_10 = functools.partial(add, 10)

result = add_10(20, 30)
print(result) # 60

在上面的示例中,我们使用 functools.partial 函数创建了一个新函数 add_10,该函数固定了参数 a 的值为 10。因此,当我们调用 add_10(20, 30) 时,实际上是调用了 add(10, 20, 30)。

3.python高阶函数举例

高阶函数是指接受函数作为参数或返回函数作为结果的函数。Python 中内置的高阶函数有 map,filter 和 reduce。

def square(x):
    return x * x

numbers = [1, 2, 3, 4, 5]

squared_numbers = list(map(square, numbers))
print(squared_numbers) # [1, 4, 9, 16, 25]

在上面的示例中,我们定义了一个 square 函数,然后使用 map 函数将该函数作用于 numbers 列表中的每一项,得到了一个新的列表 squared_numbers。

def is_even(x):
    return x % 2 == 0

numbers = [1, 2, 3, 4, 5]

even_numbers = list(filter(is_even, numbers))
print(even_numbers) # [2, 4]

在上面的示例中,我们定义了一个 is_even 函数,然后使用 filter 函数筛选出了列表 numbers 中所有的偶数。

from functools import reduce

def add(a, b):
    return a + b

numbers = [1, 2, 3, 4, 5]

sum_of_numbers = reduce(add, numbers)
print(sum_of_numbers) # 15

在上面的示例中,我们定义了一个 add 函数,然后使用 reduce 函数计算出了列表 numbers 中所有数字的和。

4.python返回函数

返回函数是指在一个函数内部定义并返回另一个函数的函数。这是一种非常有用的技术,可以用于创建闭包和实现高阶函数。

def make_adder(x):
    def adder(y):
        return x + y
    return adder

add5 = make_adder(5)
print(add5(3)) # 8

add10 = make_adder(10)
print(add10(3)) # 13

在上面的示例中,我们定义了一个 make_adder 函数,该函数接受一个数字 x 并返回一个内部函数 adder。返回的内部函数接受一个数字 y 并返回 x + y 的值。我们可以通过多次调用 make_adder 来创建多个不同的加法函数,例如 add5 和 add10。

5.匿名函数(lambda 函数):它是一个简单的函数,用于执行简单的计算任务,不需要使用 def 关键字定义。

add = lambda a, b: a + b

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

6.python闭包函数

闭包是一种特殊的函数,它能够记住它的创建环境,并在其他地方引用。这样,在闭包内部,你可以访问外部函数的变量,即使外部函数已经结束执行了。

def make_counter():
    count = 0
    def counter():
        nonlocal count
        count += 1
        return count
    return counter

counter1 = make_counter()
print(counter1()) # 1
print(counter1()) # 2

counter2 = make_counter()
print(counter2()) # 1
print(counter2()) # 2

在上面的示例中,我们定义了一个 make_counter 函数,该函数创建了一个内部函数 counter。返回的内部函数是一个闭包,因为它可以访问外部函数的变量 count。我们可以创建多个计数器函数,例如 counter1 和 counter2,每个函数都有自己的 count 变量,因此它们是独立的。

7. 递归函数

递归函数是一种特殊的函数,它可以递归调用自身来完成任务。

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

print(factorial(5)) # 120

在上面的示例中,我们定义了一个递归函数 factorial,该函数计算了给定数字 n 的阶乘。如果 n 等于 0,则函数返回 1。否则,函数调用自身,并在每次递归调用中减少 n 的值,直到 n 等于 0。在每次递归调用中,我们乘以当前的 n 值,以累积总结果。

8.装饰器函数:它是一个特殊类型的函数,用于修饰其他函数,以添加额外的功能。

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("Before function call")
        result = func(*args, **kwargs)
        print("After function call")
        return result
    return wrapper

@my_decorator
def add(a, b):
    return a + b

result = add(1, 2)
print(result)
# Before function call
# After function call
# 3

9. 函数生成器

函数生成器是一种特殊的生成器,可以使用 yield 语句生成序列。

def fibonacci(n):
    a, b = 0, 1
    for i in range(n):
        yield a
        a, b = b, a + b

for num in fibonacci(10):
    print(num)

# Output: 0 1 1 2 3 5 8 13 21 34

在上面的示例中,我们定义了一个函数生成器 fibonacci,该生成器生成斐波那契数列的前 n 个数。每次生成器执行一次 yield 语句,它将生成一个值并将执行权返回给调用者。在本例中,我们通过循环调用生成器,并打印出生成的数字。

更多详细教程参考:

  1. Python函数的定义(构造)和调用
  2. Python函数参数的六种类型
  3. Python函数返回值类型和帮助函数
  4. python偏函数的语法和推导方法
  5. Python高阶函数
  6. Python返回函数的构造和使用
  7. Python匿名函数(lambda)的语法讲解
  8. Python闭包函数
  9. Python函数装饰器构造和参数传递详解
  10. Python生成器和迭代器的构造和传值
  11. Python递归函数构造例题详解
  12. Python函数命名空间和作用域(Local,Global)
部分文字内容为【Python自学网】原创作品,转载请注明出处!视频内容已申请版权,切勿转载!
回顶部