深入解析:Python中的函数-1
目录
4.2 可变关键字参数**kwargs - 接收任意数量的关键字参数
一.引言
1.为什么要定义函数?
当一段代码完成了特定功能时,若需要重复使用这段代码,则可以把它定义成函数。
2.什么是函数?
函数是一个被命名的独立的完成特定的代码段,并且可能给调用它的程序一个返回值。
重复使用,写一次可以进行多次调用,避免重复使用。
有利于调试与维护,定位问题更加方便,修改局部代码不会影响整体。
提升开发效率,模块化开发,使协作更方便。
3.函数在Python中的作用
函数是Python程序中的基本构建单元,几乎所有的Python程序都会用到函数,不管是内置函数还是自定义函数,都可以让我们写出更高效整洁的代码。
二.函数的定义与调用
1.函数的定义
函数的基本语法:
def 函数名(参数):
函数体
...
return 返回值
2.函数的调用
在Python中,函数和变量一样,都是先定义再使用。
# 定义函数
def 函数名(参数):
函数体
...
return 返回值
# 调⽤函数
函数名(参数1)
举例:用函数写一个求和的程序
# 定义带返回值的函数
def add(a, b):
return a + b
# 调用函数并获取返回值
result = add(3, 5)
print(result) # 输出:8
三.函数的返回值
return返回单个值的情况
# 返回单个值的函数
def S(r):
"""计算圆的面积"""
S = 3.14 * r ** 2
return S # 返回单个数值
# 调用函数
S = S(5)
print(f"圆的面积是: {S}") # 输出: 圆的面积是: 78.5
如果一个函数有多个返回值,如果想要同时返回多个结果,可以使用return元组的形式。
def get_rectangle():
length = 10
width = 5
return length, width # 返回(长, 宽)
# 调用函数
l, w = get_rectangle()
print(f"矩形长度: {l}, 宽度: {w}, 面积: {l*w}")
# 输出: 矩形长度: 10, 宽度: 5, 面积: 50
return没有返回值的情况
# 没有返回值的函数
def print_greeting(name):
"""打印问候语"""
print(f"你好, {name}!")
# 没有return语句,默认返回None
# 调用函数
result = print_greeting("张三")
print(f"函数的返回值是: {result}")
# 输出:
# 你好, 张三!
# 函数的返回值是: None
显示返回值为None的情况
# 显式返回None的函数
def check_age(age):
"""检查年龄是否有效"""
if age < 0:
print("无效的年龄")
return None # 显式返回None
return age # 返回有效年龄
# 调用函数
age_result = check_age(-5)
print(f"返回值: {age_result}") # 输出: 返回值: None
valid_age = check_age(25)
print(f"返回值: {valid_age}") # 输出: 返回值: 25
四.数的参数
什么时候定义函数需要参数?什么时候调用函数需要传参?
当函数体需要从外部获取数据的时候就不需要参数,反之需要参数。
当定义函数的时候带了参数(该参数无默认值),那么调用的该函数的时候就需要传参数。
1.位置参数
位置参数是最基本的参数类型,调用时需要按照定义的顺序传递。
def greet(name, greeting):
print(f"{greeting}, {name}!")
greet("小明", "你好") # 正确: 你好, 小明!
greet("你好", "小明") # 错误: 顺序不对
2.关键字参数
通过参数值指定指定,可以不按顺序传递。
def greet(name, greeting):
print(f"{greeting}, {name}!")
greet(greeting="你好", name="小明") # 正确: 你好, 小明!
3.默认参数
定义函数时参数为指定默认值,默认参数必须放在非默认参数后面。
def greet(name, greeting="你好"):
print(f"{greeting}, {name}!")
greet("小明") # 输出: 你好, 小明!
greet("小明", "嗨") # 输出: 嗨, 小明!
4.可变参数
4.1可变位置参数 *args - 接收任意数量的位置参数
def sum_numbers(*args):
total = 0
for num in args:
total += num
return total
print(sum_numbers(1, 2, 3)) # 输出: 6
print(sum_numbers(1, 2, 3, 4, 5)) # 输出: 15
4.2 可变关键字参数**kwargs - 接收任意数量的关键字参数
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="小明", age=18)
# 输出:
# name: 小明
# age: 18
浙公网安备 33010602011771号