Python:函数:关键字参数:巧用关键字参数----隐藏默认值(解答:好多内置函数,修改默认值需要通过“形参变量名=值”的方式。)

Python:函数:巧用关键字参数----隐藏默认值

  • 一、首先要搞清楚:何为一般关键字参数?
    • 在定义函数时,函数体形参列表中,可变参数(*args)后不带默认值的参数,为调用函数时必须赋值的关键字参数,即一般的关键字参数。
      • 经典误区(例)
      • 总结 ---- 在函数声明的时候,只有在 args 后面的参数才为关键字参数
      • 特征 ----(没有可变参数 *args,就没有关键字参数)
  • 二、对比函数(位置参数,默认参数="默认",可变参数)与函数(位置参数,可变参数,关键字参数="默认关键字参数")的区别,得到结论
    • 第一个函数结果就是,调用函数过程中,默认值需要反复输入。
    • 第二个函数结果就是,调用函数过程中,默认值需要改的时候,才用<形参变量名=值>的方式修改。
    • 这个就是好多内置函数,修改默认值需要通过<形参变量名=值>的方式。
  • 三、实例加深理解(sorted函数给dict排序)
    • 目前略

一、首先要搞清楚:何为一般关键字参数?

在定义函数时,函数体形参列表中,可变参数(*args)后不带默认值的参数,为调用函数时必须赋值的关键字参数,即一般的关键字参数。

经典误区(例)

详见 https://blog.csdn.net/weixin_43473435/article/details/83419290

总结 ---- 在函数声明的时候,只有在 args 后面的参数才为关键字参数

def getValue(position1, default1 = "默认", *args, keyName1, **kwargs): pass

中,调用函数

getValue(
	position1 = "matchPostion1", 
	default1 = "matchDefault1", 
	keyName1 = "matchKeyName1", 
	kwargs1 = "matchKwargs1")


位置参数………………position1 = “matchPostion1”、
默认参数………………default1 = “matchDefault1”、
关键字参数……………keyName1 = “matchKeyName1”、
可变关键字参数………kwargs1 = “matchKwargs1”
都可以通过形参变量名赋值的方式传递,只有keyName1一个是关键参数
所以,在函数声明的时候,只有在 args 后面的参数才为关键字参数
(没有
args,就没有关键字参数)

特征 ----(没有可变参数 *args,就没有关键字参数)

函数声明中,可变参数(*args)后的参数

二、对比函数(位置参数,默认参数=“默认”,可变参数)与函数(位置参数,可变参数,关键字参数=“默认关键字参数”)的区别,得到结论

(1)当函数调用存在可变参数时,函数(位置参数,默认参数=“默认”,可变参数)

def getValue(position1, default1 = "默认", *args): pass

必须先给所有的位置参数和默认值参数赋值,才能给可变参数 *args开始赋值。

第一个函数结果就是,调用函数过程中,默认值需要反复输入。

(2)但是,当函数调用存在可变参数时,函数(位置参数,可变参数,关键字参数=“默认关键字参数”)

def getValue(position1, *args, keyName1 = "默认关键字参数"): pass

只需要先给所有的位置参数,跳过不存在的默认参数,才能给可变参数 *args开始赋值。

第二个函数结果就是,调用函数过程中,默认值需要改的时候,才用<形参变量名=值>的方式修改。

这个就是好多内置函数,修改默认值需要通过<形参变量名=值>的方式。

三、实例加深理解(sorted函数给dict排序)

目前略

你可能感兴趣的:(python)