【问题标题】:Python: define arguments of a function which include the arguments of the other functionPython:定义一个函数的参数,其中包括另一个函数的参数
【发布时间】:2017-11-13 07:48:09
【问题描述】:

如果有重复的请告诉我(我相信有),我将删除该帖子。我只是不确定这个问题的行话。

当编写一个新函数augmented_func 包含已定义的另一个函数original_func 时,我试图避免定义已经在original_func 中的参数:

def original_func(a1, a2 ,a3):
    print(a1, a2, a3)

def augmented_func(b, a1, a2, a3):
    print(original_func(a1, a2, a3), b)

如何在定义augmented_func 时避免编写a,并使其更简单,尤其是当original_func 的参数数量超过示例中的三个时?

【问题讨论】:

    标签: python function arguments


    【解决方案1】:

    对任意数量的位置参数使用* 表示法:

    def augmented_func(b, *args):
        print(original_func(*args), b)
    
    augmented_func('b', 1, 2, 3)
    

    或者使用 ** 的关键字参数:

    def augmented_func(b, **kwargs):
        print(original_func(**kwargs), b)
    
    augmented_func('b', a1=1, a2=2, a3=3)
    

    【讨论】:

    • 哦,所以我可以将augmented_func 称为:augmented_func(b, a1=3, a2=2, a3=4),对吗?
    • 要做到这一点,您需要使用kwargs。使用args,您必须注意发送参数的顺序。
    【解决方案2】:

    我认为你在寻找类似的东西

    def original_func(a1, a2 ,a3):
        print(a1, a2, a3)
    
    def augmented_func(b, *args):
        print(original_func(*args), b)
    

    您可以将其称为augmented_func(1, 2, 3, 4)

    *args**kwargs 是传递可变数量的参数并将它们传递给其他内部函数调用的好方法。

    Python docs 了解更多信息。

    【讨论】:

    • 你能在这里提一下如何使用kwargs吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2023-03-22
    • 2022-01-11
    • 2022-11-17
    • 1970-01-01
    相关资源
    最近更新 更多