Python函数如何根据传入参数选择匹配已定义的对应变量
实现方案
你不需要额外新建字典或其他存储结构,直接通过作用域内置字典按变量名规则取值,即可复用已定义的现有变量。
注意:你给出的示例代码里存在笔误:nun2 = 48应为num2 = 48,修正后完整可运行代码如下:
num1 = 61 num2 = 48 num3 = 27 char1 = "a" char2 = "b" char3 = "c" color1 = "red" color2 = "blue" color3 = "green" def func(inputnumber): num = globals()[f"num{inputnumber}"] char = globals()[f"char{inputnumber}"] color = globals()[f"color{inputnumber}"] return [num, char, color]
测试调用结果:
- 传入
1时,返回[61, 'a', 'red'] - 传入
2时,返回[48, 'b', 'blue'] - 传入
3时,返回[27, 'c', 'green']
补充说明
globals()会返回当前全局作用域的所有变量组成的字典,key为变量名字符串,value为变量对应的值,直接按拼接好的变量名key取值即可,不会产生额外的变量存储开销。- 如果你的这几组变量定义在某个外层函数的局部作用域而非全局,把
globals()替换为locals()即可实现相同效果。 - 建议在函数内增加参数合法性判断,比如校验传入值是否在1~3的整数范围内,避免传入非法值触发KeyError。
内容的提问来源于stack exchange,提问作者color_blue
相关产品推荐
相关产品推荐

