Python函数使用**kwargs传递plotly绘图参数时提示变量未定义如何解决
错误原因与解决方案
你遇到的报错是因为自定义plot函数内部没有定义zoom、mapbox_style、color_continuous_scale这三个局部变量,你通过参数传入的这三个值被封装到**kwargs字典中,不能直接通过变量名调用。
你可以任选以下两种方法修复:
方法1:从kwargs字典中取值
保留当前函数定义不变,修改内部调用px.scatter_mapbox的参数,从kwargs中读取对应值,同时可以设置默认值应对参数未传递的场景:
fig = px.scatter_mapbox(df_to_plot, lat="LATITUDE",#站点纬度 lon="LONGITUDE", #站点经度 hover_name = "NAME", #悬停时展示站点名称 color = "coef", #按coef取值区分颜色 # 从kwargs取值,第二个参数为未传参时的默认值,可按需修改 zoom=kwargs.get('zoom', 3), mapbox_style = kwargs.get('mapbox_style', "open-street-map"), color_continuous_scale=kwargs.get('color_continuous_scale', "RdBu_r"), ...
方法2:显式定义函数参数(更推荐)
直接把这三个参数加到函数的参数列表中,设置默认值,不需要通过kwargs传递,代码可读性更高,原有调用逻辑不需要修改:
# 函数定义修改为如下格式,默认值可根据你的需求自行调整 def plot(country, year1, year2, month, obs, zoom=3, mapbox_style="open-street-map", color_continuous_scale="RdBu_r",**kwargs):
修改函数定义后,你原来的内部调用代码和外部传参代码都不需要做任何调整即可正常运行。
注意:调用函数时传入的
color_map变量需要提前在调用作用域中定义完成,否则会触发同名未定义报错。
内容的提问来源于stack exchange,提问作者Jayden Rice
相关产品推荐
相关产品推荐

