python 函数参数


可接受任意数量参数的函数

使用 * 参数,可以让一个函数接受任意数量的位置参数

def test(arg, *args):
    pass

在上述例子中,args 是一个由除 arg 以外所有位置参数组成的元组

使用 ** 参数,可以让一个函数接受任意数量的关键字参数

def test(arg, **kwargs):
    pass

在上述例子中,kwargs 是包含被传入进来的关键字参数字典

同时使用 ***,能够让函数接受任意数量的位置参数和关键字参数

只接受关键字参数的函数

将参数放在 * 参数或者单个 * 后面

def test(arg, *, key):
    pass

def other_test(arg, *args, key):
    pass

在上述例子中,key 必须为关键字参数

仅限位置形参

使用 / 指明某些函数的形参必须使用仅限位置而非关键字参数的形式

def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)

在上述例子中,ab 为仅限位置形参,cd 可以是位置形参也可以是关键字形参,ef必须为关键字形参

小技巧(来自 fastapi)

借助 *,带有默认值的参数也可以在不带有默认值的参数前面,例如

from fastapi import FastAPI, Path

app = FastAPI()


@app.get("/items/{item_id}")
async def read_items(
    *, item_id: int = Path(..., title="The ID of the item to get"), q: str
):
    results = {"item_id": item_id}
    if q:
        results.update({"q": q})
    return results

文章作者: qiufeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 qiufeng !
评论
 上一篇
Query Parameters and String Validations Query Parameters and String Validations
Query Parameters and String ValidationsFastAPI 允许对参数进行验证和声明附加信息 from fastapi import FastAPI app = FastAPI() @app.get(
2020-04-11
下一篇 
Request Body Request Body
Request Body当需要从客户端(如浏览器)发送数据到 API 时,可以借助 request body request body:从客户端发送到 API 的数据 response body:从 API 发送到客户端的数据 API 总
2020-04-11
  目录