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

Python中使用**kwargs传递matplotlib绘图参数触发NameError如何解决

错误原因

你遇到的NameError是因为代码中直接使用了未定义的变量title:你传入的title = "People"会被打包为**stuff字典里的键值对{'title': 'People'},要读取这个值需要通过字典的操作方式,不能直接调用title变量。

实现方案

这个需求完全可以实现,以下是两种常见写法:

写法1:仅适配当前title配置需求

不需要遍历整个kwargs,直接判断对应键是否存在即可,代码更简洁:

import matplotlib.pyplot as plt

def bar(x,y,**stuff):
    plt.barh(x,y)
    # 直接判断title是否在传入的额外参数中
    if 'title' in stuff:
        plt.title(stuff['title'])
    return plt.show()

bar(["bob","jeff","Dave"],[1,2,3],title = "People")

写法2:支持多类绘图配置的通用写法

如果后续需要支持x轴标签、y轴标签、柱形颜色等更多配置,可以直接遍历kwargs匹配对应的绘图方法:

import matplotlib.pyplot as plt

def bar(x,y,**stuff):
    plt.barh(x,y)
    for key,value in stuff.items():
        if key == 'title':
            plt.title(value)
        elif key == 'xlabel':
            plt.xlabel(value)
        elif key == 'ylabel':
            plt.ylabel(value)
        # 后续需要新增其他配置直接加判断分支即可
    return plt.show()

# 支持传入多类配置参数
bar(["bob","jeff","Dave"],[1,2,3],title = "People", xlabel="人数", ylabel="姓名")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 19:36:03