详解Python 函数特性

  • Post category:Python

Python 函数特性使用方法的完整攻略

函数是Python中最基本的代码复用机制,它可以封装重复使用的代码片段,并可以接受参数和返回值。下面是函数的一些特性及使用方法的完整攻略。

声明函数

定义函数

在Python中,使用关键字def来定义一个函数,如下所示:

def func_name(arg1, arg2, ...):
    # 代码块
    return value

其中,func_name是函数的名称,arg1arg2是函数的参数。

Lambda表达式

Lambda表达式是一种简单的函数定义方式,就像一个匿名函数,与函数不同的是,它只有一个表达式。

lambda arg1, arg2, ... : expression

调用函数

在Python中,使用函数名来调用一个函数。当调用函数时,函数的参数使用逗号分隔在函数名后面的括号中,如下所示:

func_name(arg1, arg2, ...)

函数参数

必选参数

在调用函数时,必选参数必须要传递,否则会报错,比如:

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

print(add()) # TypeError: add() missing 2 required positional arguments: 'a' and 'b'

默认参数

在函数定义中,可以通过设置函数参数的默认值,使得在调用函数时,如果没有传递该参数,函数依旧能够执行,如下所示:

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

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

可变参数

有时候,我们想要传入任意数量的参数,这时候可以使用可变参数。在函数定义时,使用*args表示可变参数,*args将函数的所有位置参数收集到一个元组中,如下所示:

def add(*args):
    return sum(args)

print(add(1, 2, 3)) # 6

关键字参数

有时候,我们想要传入任意数量的关键字参数,这里可以使用关键字参数。在函数定义时,使用**kwargs表示关键字参数,**kwargs将函数的所有关键字参数收集到一个字典中,如下所示:

def print_person_info(name, age, **kwargs):
    print("Name: ", name)
    print("Age: ", age)
    for k, v in kwargs.items():
        print(k, v)

print_person_info("Tom", 18, gender="male", address="Beijing") 
# Name: Tom
# Age: 18
# gender male
# address Beijing

函数返回值

函数通常通过return语句返回一个值,如下所示:

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

print(add(1, 2)) # 3

如果没有return语句,函数将会返回None,如下所示:

def hello():
    print("Hello, world!")

print(hello()) #Hello, world!
               #None

示例

示例1:函数递归

函数递归指函数自己调用自己,这时候需要设置一个停止条件。如下所示:

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

print(factorial(5)) # 120

示例2:二分查找

二分查找是一种查找算法,将一个有序数组从中间切分开来,判断目标值在左侧或右侧,然后继续在一侧继续进行查找,直到找到目标值。如下所示:

def binary_search(arr, target):
    low, high = 0, len(arr)-1
    while low <= high:
        mid = (low+high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1

arr = [1, 3, 5, 7, 9]
target = 3
print(binary_search(arr, target)) # 1

总结

以上就是Python函数的特性与使用方法的完整攻略,包括函数的声明、调用、函数参数和返回值等内容,并提供了两个实例对函数进行了详细的讲解。在实际工作中,灵活使用函数可以提高开发效率,提高代码复用性,减少重复代码的出现。