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

如何将字符串判断条件作为函数参数传递且避免提前执行报错?

解决方案

原写法的问题在于列表里的三个判断表达式会在check函数调用前就被计算求值,此时函数内部的str1还没被创建,全局作用域也没有这个变量,因此触发NameError。

你可以把判断逻辑包装为延迟执行的可调用对象,避免参数在函数调用前就被计算。这里用lambda匿名函数封装每个判断条件即可,每个lambda接收一个参数对应函数内部的str1,在函数内部再逐个执行这些条件得到结果。

修改后的可运行代码:

def check(conditions):
    str1 = '/'
    # 遍历所有条件,传入内部的str1执行得到结果
    result = [cond(str1) for cond in conditions]
    print(result)

check(conditions=[
    lambda s: s.find('//www.fao.org') != -1,
    lambda s: s.find('//fao.org') != -1,
    lambda s: s[0] == '/'
])

运行后输出为[False, False, True],完全符合预期。


内容的提问来源于stack exchange,提问作者ardito.bryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:15:01