如何在Python函数内部获取参数列表并支持可变参数调用?
如何在Python函数内部引用参数列表并支持可变参数调用
当然可以在Python函数内部引用输入的参数列表,而且通过可变参数语法能轻松实现灵活的参数调用!结合你的需求(取5个数值里中间三个的和),我分两种场景来具体说明:
1. 固定参数场景下引用参数列表
如果你的函数明确只需要接收5个参数,可以手动把参数打包成列表/元组,这样就能在函数内部统一处理:
def sum_of_middle_three(score1, score2, score3, score4, score5): """ Find the sum of the middle three numbers out of the five given. """ # 将所有参数打包成列表,方便后续统一操作 scores = [score1, score2, score3, score4, score5] # 排序后去掉首尾两个数值,再求和(你原代码直接返回总和不符合需求哦) sorted_scores = sorted(scores) middle_three = sorted_scores[1:-1] return sum(middle_three)
这里的scores就是所有输入参数的集合,你可以对它做排序、切片等任意操作,比单独处理每个参数灵活太多。
2. 支持可变数量参数的通用场景
如果想让函数适配更多场景(比如3个、7个数值取中间部分的和),可以用Python的可变位置参数*args——它会自动把所有传入的位置参数打包成一个元组,你直接在函数内部操作这个元组即可:
def sum_of_middle_numbers(*args): """ 传入奇数个数值,返回去掉首尾后的中间部分的和 """ # 先做参数合法性校验,避免传入偶数个数值时逻辑出错 if len(args) % 2 == 0: raise ValueError("请传入奇数个数值参数") # 排序后去掉首尾,计算中间部分的和 sorted_args = sorted(args) middle_part = sorted_args[1:-1] return sum(middle_part)
调用起来非常灵活:
# 对应你原本的5个参数需求 print(sum_of_middle_numbers(10, 20, 30, 40, 50)) # 输出90(20+30+40) # 传入3个参数,取中间单个数值的和 print(sum_of_middle_numbers(5, 1, 3)) # 输出3 # 传入7个参数,取中间5个的和 print(sum_of_middle_numbers(1,3,5,7,9,11,13)) # 输出35(3+5+7+9+11)
额外小提示
如果你的函数还需要接收关键字参数,可以搭配**kwargs使用,但你的场景暂时用不上。核心逻辑是:*args帮你把所有位置参数打包成可迭代的集合,让你不用逐个定义参数名,就能在函数内部统一处理所有输入参数。
内容的提问来源于stack exchange,提问作者Muhammad Nada
相关产品推荐
相关产品推荐

