python中的 * 和 ** ,通过打包参数让函数支持任意数量的参数,通过解包参数,让函数参数传递形式更简单

一、 打包参数
* 的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整个元组赋值给变量

def f(*tup1):      # * 在函数定义中使用
    print(tup1)

f(1) 结果:(1,)
f(1, 2, 3, 4) 结果:(1, 2, 3, 4)

** 的作用:在函数定义中,收集关键字参数到一个新的字典,并将整个字典赋值给变量

def f(**dict1):        # ** 在函数定义中使用
    print(dict1)
f()  结果:{}
f(a=1, b=2)  结果:{'a': 1, 'b': 2}

二、 解包参数

* 的作用:在函数调用中,* 能够将元组或列表解包成不同的参数

def func(a, b, c, d):
    print(a, b, c, d)
    
tup1= (1, 2, 3, 4)
func(*tup1)     
2 3 4

list1 = [1, 2, 3, 4]
func(*list1)
2 3 4

** 的作用:在函数调用中,** 会以键/值的形式解包一个字典,使其成为一个独立的关键字参数

class experiment:
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def print_out(self):
        print("测试案例:")
        print (self.a, self.b, self.c)

dict = {'a': 1, 'b': 2, 'c': '3'}
m = experiment(**dict)
m.print_out()

输出结果:
1,2,3
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐