Python 函数特性使用方法的完整攻略
函数是Python中最基本的代码复用机制,它可以封装重复使用的代码片段,并可以接受参数和返回值。下面是函数的一些特性及使用方法的完整攻略。
声明函数
定义函数
在Python中,使用关键字def
来定义一个函数,如下所示:
def func_name(arg1, arg2, ...):
# 代码块
return value
其中,func_name
是函数的名称,arg1
、arg2
是函数的参数。
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函数的特性与使用方法的完整攻略,包括函数的声明、调用、函数参数和返回值等内容,并提供了两个实例对函数进行了详细的讲解。在实际工作中,灵活使用函数可以提高开发效率,提高代码复用性,减少重复代码的出现。