网易首页 > 网易号 > 正文 申请入驻

Python:函数参数的五种形式

0
分享至

在 Python 编程中,函数是组织代码、提高复用性的基本单元。而“参数”是函数与外界交互的关键桥梁。理解函数参数的不同形式及其使用规则,有助于编写更灵活、清晰和健壮的代码。

一、五种函数参数的形式

Python 中的函数参数主要包括以下几类:

正确的顺序:

位置参数 → 默认参数 → *args → 命名关键字参数 → **kwargs

示例:

def example(a, b=2, *args, c, d=4, **kwargs):
    ...

二、五种参数详细讲解

1、位置参数

位置参数(Positional Arguments)最常见的参数形式之一,参数顺序决定了值的匹配关系。

def greet(name, message):
    print(f"{message}, {name}!")

greet("Alice", "Hello")  # 输出:Hello, Alice!

调用时按顺序传入参数即可。

2、默认参数

默认参数(Default Arguments)指的是为某些参数设定默认值,在调用时可以省略这些参数。

def greet(name, message="Hello"):
    print(f"{message}, {name}!")

greet("mediaTEA")                  # 输出:Hello, mediaTEA!
greet("mediaTEA", "Good morning")  # 输出:Good morning, mediaTEA!

默认值在函数定义时就被计算并固定,不会在每次调用时重新初始化。如果默认值是可变对象(如列表或字典),所有调用共享同一个对象,容易造成逻辑错误。

错误示例:

def add_item(item, lst=[]):  # 错误示范:共享一个默认列表
    lst.append(item)
    return lst

期望输出:

print(add_item(1))  # 期望输出:[1]
print(add_item(2))  # 期望输出:[2]

实际输出:

print(add_item(1))  # [1]
print(add_item(2))  # [1, 2]
print(add_item(3))  # [1, 2, 3]

修正写法:

def add_item(item, lst=None):
    if lst is None:
        lst = []
    lst.append(item)
    return lst

3、可变位置参数

可变位置参数(Variable Position Arguments,*args)用于接收多个额外位置参数,以元组形式传入。

def sum_all(*numbers):
    total = sum(numbers)
    print(f"Sum = {total}")

sum_all(1, 2, 3, 4)  # 输出:Sum = 10

也可以通过 * 运算符解包序列传入:

nums = [10, 20, 30]
sum_all(*nums)  # 输出:Sum = 60

4、仅限关键字参数

仅限关键字参数(Keyword-only Arguments),也称“命名关键字参数”,Python 3 特性,若函数定义中出现了 *,其后的参数只能通过关键字传参。

def register(name, *, city, age):
    print(f"{name} lives in {city}, age {age}.")

register("Alice", city="Beijing", age=22)  # 正确
# register("Alice", "Beijing", 22)  # 错误:city 和 age 必须显式写出参数名

调用时必须显式写出参数名。这种方式可提升函数调用的可读性和安全性。

也可以为 * 之后的关键字参数设置默认值。

def greet(name, *, mood="happy"):
    print(f"Hello, {name}! You seem {mood} today.")
    
greet("Alice")                   # Hello, Alice! You seem happy today.
greet("Bob", mood="excited")     # Hello, Bob! You seem excited today.

5、可变关键字参数

可变关键字参数(Variable Keyword Arguments,**kwargs)用于接收任意数量的关键字参数,形式上是一个字典。

def print_profile(**info):
    for key, value in info.items():
        print(f"{key}: {value}")

print_profile(name="mediaTEA", age=7, city="Changsha")

也可以通过 ** 运算符解包字典传参:

data = {"name": "xiao hong", "age": 18}
print_profile(**data)

三、综合示例

def demo(a, b=2, *args, c=3, **kwargs):
    print("a =", a)
    print("b =", b)
    print("args =", args)
    print("c =", c)
    print("kwargs =", kwargs)

demo(10, 20, 30, 40, c=50, d=60, e=70)
# 解释:a=10(位置1),b=20(位置2),args=(30,40),c=50(命名),其余进入 kwargs

输出结果:

a = 10
b = 20
args = (30, 40)
c = 50
kwargs = {'d': 60, 'e': 70}

结:参数顺序

先定必传(位置),再定默认(Default),星号打包(*args),限定命名(*),双星兜底(**kwargs)。

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
中国国家队盛赞苏翊鸣:隆冬却有不可战胜的夏天 送给自己的礼物

中国国家队盛赞苏翊鸣:隆冬却有不可战胜的夏天 送给自己的礼物

念洲
2026-02-18 20:20:48
飙升5名!中国2金3银4铜升奖牌榜第14名 苏翊鸣首金+徐梦桃卫冕

飙升5名!中国2金3银4铜升奖牌榜第14名 苏翊鸣首金+徐梦桃卫冕

醉卧浮生
2026-02-18 22:08:05
俄女外交官扎哈罗娃回忆首次在北京过年:不知道怎么放鞭炮,把草地点燃,好多人帮忙灭火

俄女外交官扎哈罗娃回忆首次在北京过年:不知道怎么放鞭炮,把草地点燃,好多人帮忙灭火

极目新闻
2026-02-18 10:14:33
正月初一凌晨湖北女生拖箱返深,弟弟6条朋友圈开骂父母不管,奶奶辣椒油成她的底气

正月初一凌晨湖北女生拖箱返深,弟弟6条朋友圈开骂父母不管,奶奶辣椒油成她的底气

健身狂人
2026-02-18 06:06:42
中日激烈交锋开始了

中日激烈交锋开始了

凤眼论
2026-02-18 07:48:22
为中国代表团赢得米兰冬奥会首金!天才少年如何面对“卫冕期待”?专访苏翊鸣教练佐藤康弘:最难的那一关我们挺过来了!

为中国代表团赢得米兰冬奥会首金!天才少年如何面对“卫冕期待”?专访苏翊鸣教练佐藤康弘:最难的那一关我们挺过来了!

每日经济新闻
2026-02-18 20:08:33
90后男生上门喂猫,春节前后20多天赚16万,最多1天跑55单只睡3小时,律师提醒:上门喂猫需提前明确责任

90后男生上门喂猫,春节前后20多天赚16万,最多1天跑55单只睡3小时,律师提醒:上门喂猫需提前明确责任

潇湘晨报
2026-02-18 16:28:53
巴拿马变天,大清算开始了!真正的大国力量,有人根本一无所知!

巴拿马变天,大清算开始了!真正的大国力量,有人根本一无所知!

东极妙严
2026-02-18 21:04:48
终于等到了!国行 iPhone 已经内置 AI 功能界面

终于等到了!国行 iPhone 已经内置 AI 功能界面

XCiOS俱乐部
2026-02-18 18:14:56
不是那个年代的,你真看不懂

不是那个年代的,你真看不懂

深度报
2026-02-15 23:01:53
湖北宜城发生一起烟花爆竹爆炸事故,已致12人死亡,爆炸原因正在进一步调查

湖北宜城发生一起烟花爆竹爆炸事故,已致12人死亡,爆炸原因正在进一步调查

每日经济新闻
2026-02-18 18:23:54
20死!接连烟花销售门店发生爆燃事故,乡镇零售点沦为“火药库”

20死!接连烟花销售门店发生爆燃事故,乡镇零售点沦为“火药库”

火山詩话
2026-02-18 17:21:13
90分钟连夺2金!金牌榜中国队连升5位!还有4大夺金点好戏在后面

90分钟连夺2金!金牌榜中国队连升5位!还有4大夺金点好戏在后面

老吴说体育
2026-02-18 22:10:46
中国向乌克兰提供36.56亿美元贷款,其他援助也给力

中国向乌克兰提供36.56亿美元贷款,其他援助也给力

史政先锋
2026-02-18 16:06:45
雷军力推!小米汽车拍全家福火了 网友:30万的车 这一刻就值29万

雷军力推!小米汽车拍全家福火了 网友:30万的车 这一刻就值29万

快科技
2026-02-18 20:37:20
意难平!广东网友哭诉,回老家发5000红包,孩子收到10块20块回礼

意难平!广东网友哭诉,回老家发5000红包,孩子收到10块20块回礼

火山詩话
2026-02-18 10:00:10
王兴兴:预计2026年宇树人形机器人出货量或将达一到两万台

王兴兴:预计2026年宇树人形机器人出货量或将达一到两万台

财闻
2026-02-17 13:22:53
高市早苗内阁集体辞职,是谢幕还是开场? 上午辞职下午重选背后唱的哪一出

高市早苗内阁集体辞职,是谢幕还是开场? 上午辞职下午重选背后唱的哪一出

大象新闻
2026-02-18 16:44:05
四年连砍至清零!春晚相声为何被于蕾“砍”没了

四年连砍至清零!春晚相声为何被于蕾“砍”没了

草莓解说体育
2026-02-17 19:00:52
温州飞米兰的航班15名华侨被抽查,400公斤海鲜销毁,还有杨梅树

温州飞米兰的航班15名华侨被抽查,400公斤海鲜销毁,还有杨梅树

意大利华人网0039
2026-02-18 00:03:30
2026-02-19 00:35:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1759文章数 76关注度
往期回顾 全部

科技要闻

怒烧45亿,腾讯字节阿里决战春节

头条要闻

36岁徐梦桃卫冕:16年间参加5届冬奥 10年做4次大手术

头条要闻

36岁徐梦桃卫冕:16年间参加5届冬奥 10年做4次大手术

体育要闻

首金!苏翊鸣唱国歌落泪 自信比1呐喊

娱乐要闻

明星过年百态!黄晓明等现身三亚

财经要闻

面条火腿香菇酱!上市公司这些年请你吃

汽车要闻

量产甲醇插混 吉利银河星耀6甲醇插混版申报图

态度原创

艺术
教育
本地
公开课
军事航空

艺术要闻

260米!广州南沙第一高楼自带“天眼”,设计火出圈!

教育要闻

“十大”新兴留学目的地你会去吗?爱尔兰留学创新高?

本地新闻

春花齐放2026:《骏马奔腾迎新岁》

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

菲海警在南海投放不明物体 被中国海警全程监控并拍下

无障碍浏览 进入关怀版