
本文讲解如何在 Python 中将参数名称(如 "adds")以字符串形式传入函数,并动态构造关键字参数,从而解决 TypeError: got an unexpected keyword argument 等常见错误。核心方法是使用字典解包(**kwargs)。
本文讲解如何在 python 中将参数名称(如 `"adds"`)以字符串形式传入函数,并动态构造关键字参数,从而解决 `typeerror: got an unexpected keyword argument` 等常见错误。核心方法是使用字典解包(`**kwargs`)。
在 Python 函数调用中,关键字参数必须以 name=value 的语法显式写出(如 adds=datalayer),而不能直接用变量名或字符串 "adds" 代替参数标识符。当你写 AGOLlayer.edit_features(editType=data) 时,Python 会将字符串 "editType" 当作字面量键名传递,而非将变量 editType 的值(如 "adds")解析为实际参数名——这正是 TypeError: got an unexpected keyword argument 'editType' 的根源。
要实现「参数名由字符串动态决定」,正确做法是:构造一个字典,其键为运行时确定的参数名(字符串),值为对应参数值,再通过 `` 解包传入函数**。例如:
def edit_features_retry(edit_type_name, data):
# 构造 { "adds": datalayer } 或 { "updates": datalayer } 等
kwargs = {edit_type_name: data}
AGOLlayer.edit_features(**kwargs) # ✅ 动态关键字调用
# 调用示例
edit_features_retry("adds", datalayer)
edit_features_retry("updates", datalayer)
edit_features_retry("deletes", datalayer)
该方案本质是利用了 Python 的 关键字参数解包机制:func(**{'key': value}) 等价于 func(key=value)。它要求字典的键必须是合法的标识符(如 "adds"),且目标函数(此处为 AGOLlayer.edit_features)需支持该关键字参数。
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
⚠️ 注意事项:
- 字典键必须是字符串,且与目标函数实际接受的关键字参数名完全一致(区分大小写、拼写);
- 不要混淆 *args(位置参数解包)与 **kwargs(关键字参数解包);
- 若需同时传入多个动态参数,可合并字典:{**{"adds": adds_data}, **{"updates": updates_data}};
- 建议添加参数校验,避免传入非法键名导致 TypeError:
SUPPORTED_EDIT_TYPES = {"adds", "updates", "deletes"}
def edit_features_retry(edit_type_name, data):
if edit_type_name not in SUPPORTED_EDIT_TYPES:
raise ValueError(f"Unsupported edit type: {edit_type_name}")
AGOLlayer.edit_features(**{edit_type_name: data})
总结:将参数名作为字符串传入函数,不是语法层面的“重命名参数”,而是通过 **{str_key: value} 实现运行时关键字参数的动态绑定。这是 Python 元编程和 API 封装中的常用技巧,简洁、安全且符合语言设计哲学。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










