Python中如何将多个变量打包为单个参数传入函数
实现方法
下面是几种Python中可实现该需求的方案,可根据实际场景选择:
方案1:使用dataclasses(推荐,Python 3.7+内置)
这是最规范的实现方案,支持类型标注、默认值、可变属性等,适合参数结构固定的场景:
首先定义参数数据类:
from dataclasses import dataclass @dataclass class FunctionParams: var1: int var2: float var3: str # 可继续添加其他参数,也支持设置默认值
调用函数前实例化参数对象,传入函数即可通过属性调用:
def my_function(parameters: FunctionParams): output = parameters.var1 + parameters.var2 # 可通过.语法直接访问所有属性 return output # 调用示例 params = FunctionParams(var1=10, var2=2.5, var3="test") print(my_function(params))
方案2:使用SimpleNamespace(灵活轻量)
如果不想提前定义类,可以用types模块下的SimpleNamespace,无需提前声明结构,支持动态设置属性:
from types import SimpleNamespace def my_function(parameters): return parameters.var1 + parameters.var2 + parameters.var3 # 调用时直接打包参数即可 params = SimpleNamespace(var1=1, var2=2, var3=3, var4="额外参数") print(my_function(params))
方案3:使用namedtuple(不可变参数场景)
如果参数不需要在运行时修改,可以用collections的namedtuple,生成的参数对象是不可变的,可避免误改参数值:
from collections import namedtuple # 先定义参数结构 FunctionParams = namedtuple("FunctionParams", ["var1", "var2", "var3"]) def my_function(parameters): return parameters.var1 + parameters.var2 + parameters.var3 # 调用示例 params = FunctionParams(var1=1, var2=2, var3=3) print(my_function(params))
内容的提问来源于stack exchange,提问作者Kadaj13
相关产品推荐
相关产品推荐

