python中的函数

函数

在Python中,函数是组织好的、可重复使用的代码段,用来实现单一或相关联的功能。函数能提高代码的模块性和重复利用率。

1. 基本函数定义
# 注解没有强制要求的意思
# def 方法名(参数 : 限定条件注解) -> 结果的类型注解:
#     函数体
def greet(name):
    print(f"Hello, {name}!")
greet("Alice")  # 输出: Hello, Alice!
2. 函数参数

参数:用于传值,主要分为位置参数、默认参数、可变参数、关键字参数几种来使用。

  • 位置参数:最基本的参数传递方式,按照参数定义的顺序依次传递
  • 默认参数:在定义函数时,可以给参数指定默认值,调用时可不传该参数
  • 可变位置参数:用于接收任意数量的位置参数,存储为元组(tuple)
  • 可变关键字参数:用于接收任意数量的关键字参数,存储为字典(dict)
  • 仅限关键字参数:在 args 或 * 之后定义的参数,必须用关键字传递( 表示后面的参数必须用 key=value 形式传递)
  • 仅限位置参数:Python 3.8+ 支持 / 语法,表示前面的参数只能按位置传递(/ 之前的参数只能按位置传递)
# 位置参数a,b
def add(a, b):
    return a + b
# 默认参数:exponent 和 位置参数:base
def power(base, exponent=2):
    return base ** exponent
# 可变位置参数 (*args)
def sum_all(*numbers):
    return sum(numbers)
# 关键字参数 (**kwargs)
def person_info(**details):
    for key, value in details.items():
        print(f"{key}: {value}")
# 仅限关键字参数(* 表示后面的参数必须用 key=value 形式传递)
def greet(name, *, message="Hello"):
    print(f"{message}, {name}!")
greet("Alice")  # 输出:Hello, Alice!
greet("Bob", message="Hi")  # 输出:Hi, Bob!
greet("Charlie", "Hey")  #  错误:message 必须用关键字传递
# 仅限位置参数 (/之前的参数只能按位置传递)
def greet(name, /, message="Hello"):
    print(f"{message}, {name}!")
greet("Alice")  # 正确
greet(name="Bob", message="Hi")  #  错误:name 不能使用关键字传递

3. 返回值(return)

return :将传入的值经过函数体的一系列变化之后输出的一个值。

def multiply(x, y):
    return x * y
result = multiply(3, 4)  # 返回12

4. Lambda 函数(匿名函数)

Lambda函数可以接受任何数量的参数,但只能有一个表达式(这个表达式被计算并返回)。Lambda函数通常用于小的、一次性的、匿名的函数场景,如排序或过滤列表中的元素。

# 使用方法:lambda 参数列表: 表达式
square = lambda x: x ** 2
print(square(5))  # 输出: 25

5. 作用域

作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。
分为 全局变量(在全局有用的变量)和局部变量(仅在自己指定的一部分区域有用的变量)

x = 10  # 全局变量,作用于全局
def func():
    global x  # 声明使用全局变量
    x = 20
func()
print(x)  # 输出: 20

6. 装饰器

装饰器修饰器是 Python 中一种强大的语法特性,它允许你在不修改原函数代码的情况下,为函数添加额外的功能,它接受一个函数作为参数并返回一个新的函数。一般用@开头。

  • 自定义类修饰器
  • 内置修饰器(@property、 @classmethod 、@staticmethod、@timer、@lru_cache)
def my_decorator(func):
    def wrapper():
        print("函数执行前")
        func()
        print("函数执行后")
    return wrapper
@my_decorator # 自定义的类修饰器
def say_hello():
    print("Hello!")
# @property     使用该修饰方法,将方法转为属性使用,property是只读属性
# @属性名.setter      在property转化为属性后,再在该属性后增加一个可写属性,必须与property搭配使用
# 在使用这两个修饰器时,需要讲get__year和set__year方法全部改成year,方便变成属性使用
# @classmethod  不需要实例化,不需要self参数,返回函数的类方法
# @staticmethod 静态方法,不需要实例化,不强制要求传递参数
# @timer 计时修饰器
# @lru_cache 缓存修饰器


say_hello()

函数是 Python 编程的核心概念,合理使用函数可以使代码更模块化、更易读、更易维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值