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

Python函数定义参数中的单独*符号有什么作用?

Python 函数参数中单独 * 的作用说明

Python 3 引入了仅限关键字参数的语法,函数参数列表里单独出现的*就是该特性的分隔符:*之后定义的所有形参,调用时必须通过关键字形式传值,不允许使用位置参数传递。

代码报错原因

你定义的函数如下:

def my_pow(x=3, *, y=2):
    return x**y

这里的*把参数分为两个区域:

  • *前面的x:既支持位置传参,也支持关键字传参,默认值为3
  • *后面的y:属于仅限关键字参数,只能通过y=值的方式传参,默认值为2

调用my_pow(4,4)时,你传入了2个位置参数:
第一个位置参数4可以正常赋值给x,但第二个位置参数4没有匹配的位置形参(y不接受位置传参),因此会抛出类型错误:TypeError: my_pow() takes from 0 to 1 positional arguments but 2 were given。

合法调用的运行原理

你列出的几个调用都符合参数传递规则,因此可以正常执行:

  • my_pow(4,y = 4):x通过位置传参赋值为4,y通过关键字传参赋值为4,符合规则
  • my_pow(x = 4):x通过关键字传参赋值为4,y使用默认值2,符合规则
  • my_pow(y = 4):x使用默认值3,y通过关键字传参赋值为4,符合规则
  • my_pow(4):x通过位置传参赋值为4,y使用默认值2,没有向仅限关键字参数传递位置值,符合规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:39:00