关于魔法参数的问题

来源:6-8 实现登录注册功能

kanokano

2020-03-23 11:30:54

1、魔法参数是不是就是用来代替其他形参的,如果在重写原本的方法时不需要修改之前的一部分参数,就直接用*args **kwargs来代替这一部分不需要修改的参数,我的理解是对的吗

2、魔法参数使用的时候必须*args **kwargs成对使用吗

3、魔法参数一般的应用场景有哪些

求老师解答,谢谢

写回答

1回答

时间,

2020-03-23

同学,你好。

1、*args代表不定长参数,“不定长”意味着你在定义函数的时候不知道调用者会传递几个参数进来,加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

**kwargs允许传递不定长的关键字参数。若需要在函数中定义不定长个命名参数,需要使用**kwargs。

def func(name, *args, **kwargs):
    # 注意:*的不定长参数被当做元组处理,**的不定长参数被当做字典处理
    print(name)    # Tom
    print(args)    # (1, 2, 3)
    print(kwargs)  # {'a': 4, 'b': 5, 'c': 6}
func("Tom",1,2,3, a=4, b=5, c=6)

2、在重写原本的方法时不需要修改之前的一部分参数,若需要使用之前方法中的参数时,在子类继承父类时,直接在方法中传入之前的参数就可以,确定传递哪些参数时可以不用魔法参数

例:

http://img.mukewang.com/climg/5e78512709775c4e04220400.jpg

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

0

0 学习 · 3562 问题

查看课程

相似问题