从零开始学Python(四)推导式、多参数解析、装饰器

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 和 **kwargs)

*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.

好啦,今天的分享就到这了,希望能够帮到你呢!   

你可能感兴趣的:(python,python,开发语言)