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

Python将函数关键字参数存入列表触发SyntaxError问题求解

问题解决办法

你遇到的语法报错本质是Python不支持直接将key=value形式的关键字参数表达式赋值给变量、或者存入序列,关键字参数只能直接写在函数调用的括号内。要实现批量存储关键字参数、后续统一传入的需求,标准方案是用字典存储参数的键值对,调用函数时用**运算符解包传入即可。

补充提醒:你之前测试的keyword = end="****"写法能跑完全是巧合:这行代码的实际逻辑是先声明了一个叫end的普通变量赋值为"****",再把end的值赋值给keyword,后续调用print("hi", keyword)时,是把keyword的值作为第二个位置参数传给了print的end参数,刚好匹配了预期效果,但这根本不是存储关键字参数的通用方案,换参数、换函数就会失效。

测试场景修正示例

单个关键字参数

# 字典存储关键字参数:键是参数名,值是参数值
kwargs = {"end": "****"}
# 调用时用**解包字典
print("hi", **kwargs)
# 输出:hi ****

多个关键字参数

# 多个参数直接存进同一个字典
kwargs = {"sep": "^^^^", "end": "****"}
print("hi", "world", **kwargs)
# 输出:hi^^^^world****

业务代码修正

第一步:修正参数定义

所有模型参数都改为字典存储,无自定义参数用空字典即可,同时修正你之前写错的SVC核函数名(是rbf不是rgb):

from sklearn.linear_model import LogisticRegression 
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier

LogisticRegression_args = {}
KNeighborsClassifier_args = {"n_neighbors": 5}
GaussianNB_args = {}
DecisionTreeClassifier_args = {"criterion": "entropy"}
SVC_args = {"kernel": "linear"}
SVC_non_linear_args = {"kernel": "rbf"}
RandomForestClassifier_args = {"criterion": "entropy", "n_estimators": 10, "random_state": 0}

第二步:简化模型列表

不需要把类、参数再套一层列表,直接按顺序存储即可:

basic_classifier_models = [
    [LogisticRegression, LogisticRegression_args, "LogisticRegression:"],
    [KNeighborsClassifier, KNeighborsClassifier_args, "KNeighborsClassifier:"],
    [GaussianNB, GaussianNB_args, "GaussianNB:"],
    [DecisionTreeClassifier, DecisionTreeClassifier_args, "DecisionTreeClassifier:"],
    [SVC, SVC_args, "SVC:"],
    [SVC, SVC_non_linear_args, "Non_linear SVC:"],
    [RandomForestClassifier, RandomForestClassifier_args, "RandomForestClassifier:"]
]

第三步:批量调用示例

后续遍历列表初始化模型时,用**解包参数字典传入即可:

for model_class, model_kwargs, model_name in basic_classifier_models:
    # 解包参数字典初始化模型
    current_model = model_class(**model_kwargs)
    # 后续可正常进行训练、预测等操作
    print(model_name, current_model)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:09:04