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

Python函数使用任意关键字参数时 打印字典未输出全部键值对的问题

任意关键字参数构建用户档案输出不全的问题修复

错误根因

本次异常与**info任意关键字参数的收集逻辑无关,核心问题是return语句缩进层级错误:原代码将return放在for循环的内部块中,与profile[key] = value语句处于同一缩进级别,导致循环第一次执行、写入第一个附加键值对后,就直接终止函数返回字典,后续遍历逻辑完全不会执行,自然无法收集全部传入的键值对。

需明确:Python严格依靠缩进划分代码块作用域,不存在其他语言中大括号式的显式边界,一旦控制语句缩进错误,就会出现提前返回、逻辑分支错位等问题,且这类问题不会触发语法报错,往往只表现为结果异常。
原错误代码(可复现输出不全场景):

def build_profile(first, last, **info):
    profile ={}
    profile["first_name"] = first
    profile["last_name"] = last
    for key, value in info.items():
        profile[key] = value
        # 错误:与循环内语句同缩进,首次循环即触发返回
        return profile

修复方案

调整return的缩进层级,让它与for循环处于同一级别,等所有附加键值对全部遍历写入profile后,再执行返回操作。
修复后的完整可运行代码:

def build_profile(first, last, **info):
    profile = {}
    profile["first_name"] = first
    profile["last_name"] = last
    for key, value in info.items():
        profile[key] = value
    # 正确缩进:与for循环同级,遍历完成后再返回
    return profile

current_profile = build_profile("pawan", "rodriguez", current="KTM", location="colombia")
print(current_profile)

修复后输出

运行代码会得到包含全部传入参数的完整档案字典:

{'first_name': 'pawan', 'last_name': 'rodriguez', 'current': 'KTM', 'location': 'colombia'}

排查注意点

  • 编写循环、分支内的return、break等控制语句时,必须反复核对缩进层级,避免提前触发流程终止
  • 任意关键字参数**kwargs的收集机制默认会完整收纳传入的所有额外键值对,不存在内置的收集不全问题,出现结果缺失优先排查代码逻辑作用域问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 10:36:05