网站图标目录,开发公司硬底化路面工程入账,wordpress朋友圈,58同城网普通函数匿名函数#xff08;Lambda函数#xff09;高阶函数内置函数递归函数闭包函数装饰器函数方法 8.1. 实例方法 8.2. 类方法 8.3. 静态方法
1. 普通函数
最基本的函数类型#xff0c;通过 def 关键字定义。
def add(a, b):return a bprint(add(3, 5)) # 输出: 82…普通函数匿名函数Lambda函数高阶函数内置函数递归函数闭包函数装饰器函数方法 8.1. 实例方法 8.2. 类方法 8.3. 静态方法
1. 普通函数
最基本的函数类型通过 def 关键字定义。
def add(a, b):return a bprint(add(3, 5)) # 输出: 82. 匿名函数Lambda函数
使用 lambda 关键字定义的函数与普通函数不同Lambda 函数通常是一次性使用的通常用于定义简单的、短小的函数。
add lambda a, b: a bprint(add(3, 5)) # 输出: 8无参数的 Lambda 函数
greet lambda: Hello, World!
print(greet()) # 输出: Hello, World!Lambda 函数的局限性 只包含一个表达式 Lambda 函数只能包含一个表达式不适合处理复杂的逻辑。 可读性 由于 Lambda 函数没有名字如果逻辑稍微复杂一些会影响代码的可读性。 调试困难 匿名函数在调试时不容易定位问题。
3. 高阶函数
高阶函数具备以下特征之一
接受一个或多个函数作为参数。返回一个函数。 可以接受函数作为参数或返回值的函数。高阶函数广泛应用于各种场景如数据处理、事件处理和回调等。
def apply_function(func, x, y):return func(x, y)print(apply_function(add, 3, 5)) # 输出: 84. 内置函数
Python 提供的一些内置函数例如 len(), max(), min(), print() 等。
5. 递归函数
一个递归函数通常包含以下两部分 基准情形 处理简单的、直接可解决的情况防止无限递归。 递归调用 将问题分解为一个或多个子问题并调用自身来解决这些子问题。 在函数内部调用自身的函数通常用于解决递归问题。
def factorial(n):if n 1:return 1else:return n * factorial(n - 1)print(factorial(5)) # 输出: 1206. 闭包函数函数内定义的函数
闭包Closure是指一个函数内部定义的函数这个内部函数可以引用外部函数的变量。闭包不仅可以捕获这些变量还可以在外部函数返回后继续使用它们。闭包常用于需要封装一些状态或行为的场景中。 闭包由以下三个部分构成 外部函数 包含内嵌函数的函数。 内嵌函数 定义在外部函数内部并且引用外部函数的变量。 自由变量 内嵌函数引用的、定义在外部函数中的变量。 一个函数可以返回另一个函数返回的函数可以访问到外部函数的变量。 通过闭包实现一个简单的计数器
def make_counter(): # 外部函数count 0 # 自由变量def counter(): # 内嵌函数nonlocal countcount 1return countreturn counter# 创建计数器实例
counter1 make_counter()
print(counter1()) # 输出: 1
print(counter1()) # 输出: 2counter2 make_counter()
print(counter2()) # 输出: 1counter 是一个闭包它保存了 make_counter 中的 count 变量并且通过 nonlocal 关键字可以修改这个变量。 内部工作机制 创建闭包 当 make_counter 函数被调用时count 变量和 counter 函数被创建。counter 函数形成一个闭包捕获 count 变量的引用。 返回闭包 make_counter 函数执行完毕但 counter 函数和 count 变量仍然存在因为 counter 函数持有对 count 的引用。 修改和访问状态 每次调用 counter1 时都会访问和修改 count 变量从而实现了一个持续的状态。
7. 装饰器函数
装饰器函数Decorator functions在 Python 中是一种强大的工具用于修改或扩展函数或类的功能。它们允许在不改变原始函数或类代码的情况下通过添加额外的功能来改变它们的行为。通常情况下装饰器是一个函数它接受一个函数作为输入并返回一个新的函数作为输出。 用于修改或增强其他函数功能的函数。
# 假设我们有一个函数 add_numbers它用于计算两个数字的和。
# 我们希望在调用这个函数之前检查传入的参数是否都是数字。如果不是我们希望提示用户参数无效。
# 可以使用装饰器来实现这个功能def validate_numbers(func):def wrapper(*args, **kwargs):# 检查所有参数是否都是数字if all(isinstance(arg, (int, float)) for arg in args):return func(*args, **kwargs)else:print(参数无效必须是数字。)return wrappervalidate_numbers
def add_numbers(a, b):return a b# 测试函数
print(add_numbers(10, 20)) # 输出: 30
print(add_numbers(10, 20)) # 输出: 参数无效必须是数字。装饰器函数可以用于很多场景比如缓存、日志记录、权限验证等它们使得代码更加模块化和易于维护。
8. 方法
方法是属于对象的函数也就是定义在类内部的函数。方法在调用时会隐式地接收一个对象实例作为第一个参数通常是 self。方法可以访问对象的属性和其他方法并对对象的状态进行修改。 在类中定义的函数。包括实例方法、类方法和静态方法。
8.1. 实例方法
需要一个类的实例来调用的方法。
class MyClass:def instance_method(self):return This is an instance methodobj MyClass()
print(obj.instance_method()) # 输出: This is an instance method8.2. 类方法
使用 classmethod 装饰器定义的方法第一个参数是类本身。
class MyClass:classmethoddef class_method(cls):return This is a class methodprint(MyClass.class_method()) # 输出: This is a class method8.3. 静态方法
使用 staticmethod 装饰器定义的方法不依赖于类或实例。
class MyClass:staticmethoddef static_method():return This is a static methodprint(MyClass.static_method()) # 输出: This is a static method参考 https://blog.csdn.net/Lzcsfg/article/details/140720452