a=1 就是:位置参数 + 可选特权
*, a=1 就是:关键字参数 + 可选特权
当你看到 def f(a=1): 时:
● 它的真身是:位置参数。
● 它的特权是:可选(有默认值)。
其实,“可选项”(Optional)根本不是参数的类型,它只是参数的一种“特权”(有默认值)。
在 Python 中,任何一个参数,本质上只有两种身份(由它在函数定义中的位置决定):
1. 位置参数(Positional Argument)
2. 关键字参数(Keyword-only Argument)
1. “是不是可选的” —— 取决于有没有默认值
● 有 = (默认值):就是可选参数(可以不传)。
● 没有 = :就是必填参数(必须传)。
2. “是不是位置参数” —— 取决于它在函数定义中的位置
● 在 * 或 *args 之前的参数:是位置参数(可以按顺序传,也可以用名字传)。
● 在 * 或 *args 之后的参数:是强制关键字参数(只能用名字传,不能按顺序传)。