You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:34:10