Python *与**的多种应用 实用小技巧

133次阅读
没有评论

共计 2108 个字符,预计需要花费 6 分钟才能阅读完成。

解包参数:

1.1 解包位置参数:在函数定义中,使用 * 可以接受不定数量的位置参数,将它们打包成一个元组。

def add(*args):
    result = 0
    for num in args:
        result += num
    return result
print(add(1, 2, 3))  # 输出 6

1.2 解包关键字参数:使用 ** 可以接受不定数量的关键字参数,将它们打包成一个字典。

def person_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")
person_info(name="Alice", age=30, country="USA")

# 输出:# name: Alice
# age: 30
# country: USA

扩展序列:

2.1 扩展列表:使用 * 扩展列表,将一个列表中的元素拆分后传递给另一个列表。

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)  # 输出 [1, 2, 3, 4, 5, 6]
# 使用 * 扩展列表
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1 = [*list1, *list2]
print(list1)  # 输出 [1, 2, 3, 4, 5, 6]

2.2 扩展字典:使用 ** 扩展字典,将一个字典中的键值对拆分后传递给另一个字典。

dict1 = {"name": "Alice", "age": 30}
dict2 = {"country": "USA"}
dict1.update(dict2)
print(dict1)  # 输出 {'name': 'Alice', 'age': 30, 'country': 'USA'}
# 使用 ** 扩展字典
dict1 = {"name": "Alice", "age": 30}
dict2 = {"country": "USA"}
dict1 = {**dict1, **dict2}
print(dict1)  # 输出 {'name': 'Alice', 'age': 30, 'country': 'USA'}

函数参数中的 * 和 **:

3.1 函数参数中的 *:使用 * 将位置参数和关键字参数分隔开,从而指定只接受关键字参数。

def greet(name, *, message="Hello"):
    print(f"{message}, {name}!")
greet("Alice")  # 输出 "Hello, Alice!"

3.2 函数参数中的 :使用 接收任意数量的关键字参数,这些参数将被打包成一个字典。

def person_info(name, age, **kwargs):
    print(f"Name: {name}")
    print(f"Age: {age}")
    print("Other Info:")
    for key, value in kwargs.items():
        print(f"{key}: {value}")
person_info(name="Alice", age=30, country="USA", job="Engineer")
# 输出:# Name: Alice
# Age: 30
# Other Info:
# country: USA
# job: Engineer

解包操作:

4.1 解包元组:使用 * 解包元组中的元素。

fruits = ("apple", "banana", "cherry")
a, *rest = fruits
print(a)     # 输出 "apple"
print(rest)  # 输出 ["banana", "cherry"]

4.2 解包字典:使用 ** 解包字典中的键值对。

info = {"name": "Alice", "age": 30}
person_info(**info)  # 传递字典作为关键字参数
# 输出:# Name: Alice
# Age: 30

打包参数:

5.1 打包位置参数:使用 * 打包位置参数,将多个参数打包成一个元组。

def multiply(*args):
    result = 1
    for num in args:
        result *= num
    return result

5.2 打包关键字参数:使用 ** 打包关键字参数,将多个关键字参数打包成一个字典。

def print_colors(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")
colors = {"color1": "red", "color2": "blue", "color3": "green"}
print_colors(**colors)  # 传递字典作为关键字参数
# 输出:# color1: red
# color2: blue
# color3: green

高级应用:

6.1 使用 * 和 ** 接受不定数量的参数:在函数定义中,使用 *args 和 **kwargs 可以接受不定数量的位置参数和关键字参数。

def advanced_example(*args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(f"{key}: {value}")
advanced_example(1, 2, 3, name="Alice", age=30)
# 输出:# 1
# 2
# 3
# name: Alice
# age: 30

正文完
 1
GuaiMiu
版权声明:本站原创文章,由 GuaiMiu 2024-03-10发表,共计2108字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)