类型签名,位置参数,关键字参数
一、类型签名(type signature)
二、位置参数(positional argument)
三、关键字参数(keyword argument)
只是“说明书”,不是真正的函数体。
写成
def f(a: int, b: str) -> bool:
里的int
、str
、bool
就是类型签名。作用:让 IDE 自动补全、让
mypy
/pyright
做静态检查、让人一眼看懂输入输出。按顺序传;调用时不能写形参名。
def add(x, y, /): # / 表示 x、y 只能位置传return x + yadd(1, 2) # 正确 add(x=1, y=2) # 会报错
调用时必须写形参名,顺序随意。
def greet(name, *, age): # * 后面必须关键字传print(f"{name} is {age}")greet("Tom", age=18) # ✅ greet("Tom", 18) # ❌
三、混合使用示例
def foo(a, b, /, c, d=None, *, e, f: int = 0) -> str:...
调用规则
a, b
:只能位置传c, d
:位置或关键字都可e, f
:只能关键字传