Welcome Huihui's Code World ! !
接下来看看由辉辉所写的关于Python的相关操作吧
目录
Welcome Huihui's Code World ! !
一.推导式
1.列表推导式
2.集合推导式
3.字典推导式
二.多参数(*args 和 **kwargs)
三.装饰器
推导式是一种简洁的语法结构,用于创建新的列表、集合或字典。它们能够以更简单、更易读的方式替代传统的循环构造
1.列表推导式
用于创建一个新的列表,可以在一个可迭代对象上进行循环,并应用某个表达式对每个元素进行计算,并返回结果列表
numbers = [1, 2, 3, 4, 5] squares = [x**2 for x in numbers] print(squares) # 输出: [1, 4, 9, 16, 25]
2.集合推导式
用于创建一个新的集合,可以在一个可迭代对象上进行循环,并应用某个表达式对每个元素进行计算,并返回结果集合
numbers = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1] unique_squares = {x**2 for x in numbers} print(unique_squares) # 输出: {1, 4, 9, 16, 25}
3.字典推导式
用于创建一个新的字典,可以在一个可迭代对象上进行循环,并应用某个表达式对每个元素进行计算,并返回结果字典
words = ['apple', 'banana', 'cherry'] word_lengths = {word: len(word) for word in words} print(word_lengths) # 输出: {'apple': 5, 'banana': 6, 'cherry': 6}
*args用于传递可变数量的位置参数,它会将所有传递的参数打包成一个元组(当我们不知道函数需要接受多少个参数时,可以使用args来接受任意数量的位置参数)
def add(*args): result = 0 for arg in args: result += arg return result result1 = add(1, 2, 3) result2 = add(1, 2, 3, 4, 5) print(result1) # 输出6 print(result2) # 输出15
**kwargs用于传递可变数量的关键字参数,它会将所有传递的参数打包成一个字典(当我们不知道函数需要接受多少个关键字参数时,可以使用kwargs来接受任意数量的关键字参数)
def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_info(name="Alice", age=25, gender="female")
当我们需要同时接受任意数量的位置参数和关键字参数时,可以使用args和**kwargs的组合
def my_func(*args, **kwargs): for arg in args: print(arg) for key, value in kwargs.items(): print(key, value) my_func(1, 2, 3, name='Alice', age=25) # 输出:1 2 3 name Alice age 25 my_func('a', 'b', city='Beijing', country='China', language='Chinese') # 输出:a b city Beijing country China language Chinese
需要注意的是,*args和**kwargs必须放在函数定义中的最后一个参数位置,否则会引发语法错误
# 正确的写法 def func(a, b, *args, **kwargs): pass # 错误的写法 def func(a, *args, b, **kwargs): pass
在说到装饰器之前,不得不提到闭包
闭包函数:声明在一个函数中的函数,叫做闭包函数。
闭包:内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回了之后
def outer(a): def inner(b): return a + b return inner
装饰器是闭包的一种应用,在Python中,装饰器是一种特殊的函数,它可以用来修改其他函数的行为。装饰器本身是一个函数,它接受一个函数作为参数,并返回一个新的函数。新的函数通常会在原函数的基础上添加一些额外的功能,例如计时、日志记录、权限验证
语法:装饰器的语法比较简单,通常使用@符号来表示装饰器,放在被装饰函数的定义之前
def my_decorator(func): def wrapper(): print("Before the function is called.") func() print("After the function is called.") return wrapper @my_decorator def say_hello(): print("Hello!") say_hello()
定义了一个装饰器函数my_decorator,它接受一个函数作为参数,并返回一个新的函数wrapper。wrapper函数在原函数say_hello的基础上添加了一些额外的功能,即在函数调用前后打印一些信息。最后,我们使用@my_decorator语法将装饰器应用到say_hello函数上。
当我们调用say_hello函数时,实际上调用的是wrapper函数。wrapper函数会在函数调用前后打印一些信息,并调用原函数say_hello。因此,最终输出的结果
Before the function is called. Hello! After the function is called.
好啦,今天的分享就到这了,希望能够帮到你呢!