You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数定义中/的作用是什么?及指定函数里/与*的功能解析

Python函数定义中/和*的作用解析

问题1:Python函数定义里的/有啥用?

/是Python 3.8新增的语法标记,核心作用就是划界仅限位置参数的范围:

  • 所有在/左边的参数,调用时只能用位置传参,绝对不能用关键字指定参数名。
  • 举个实际例子:
    def add(a, b, /):
        return a + b
    
    合法调用:add(2, 3)
    非法调用(直接报错):add(a=2, b=3)
  • 这个设计主要适配两个场景:一是让Python函数和底层C扩展的函数传参逻辑对齐;二是当你不想让外部调用依赖函数的参数名(比如后续可能要修改参数名但不想影响调用方),用/就能把这些参数的名字隐藏起来,强制调用方只用位置传参。

问题2:解析def my_func(x, y, /, *, z = True):里的/和*

/的作用

这里x和y在/左边,意味着调用my_func时,这两个参数必须用位置传参,不能写x=1或者y=2这种关键字传参的形式,只能像my_func(5, 10)这样传递。

*的作用

*是另一个参数划界标记,它右边的参数(这里是z)只能用关键字传参,绝对不能靠位置传递。
结合这个例子,合法与非法调用一目了然:

  • 合法调用方式:
    my_func(1, 2, z=False)  # z用关键字指定
    my_func(3, 4)  # z使用默认值True
    
  • 非法调用方式:
    my_func(1, 2, False)  # z不能通过位置传递
    my_func(x=1, y=2, z=False)  # x、y不能用关键字指定
    
  • 这种混合使用/和*的写法,把函数参数分成了三个明确区域:仅限位置参数(x、y)、无中间参数、仅限关键字参数(z),能让函数的传参规则非常清晰,避免调用方出错。

内容的提问来源于stack exchange,提问作者BakerBug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:35:14