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

如何通过函数输入动态获取变量并进行布尔值判断?

解决方案

首先纠正你代码里的几个基础语法错误:

  • Python变量名不能包含减号,需改用下划线(比如function_outcome,减号会被解析成减法运算符)
  • Python关键字和内置函数要小写:global、if、print
  • 字符串必须用英文引号,不能用中文引号
  • 直接用f字符串无法引用变量,你写的f'{B}-outcome'只是个字符串,不是变量本身

方法1:使用字典存储结果(推荐)

用字典来映射输入名称和对应的布尔值,比动态操作全局变量更安全、易维护:

outcomes = {
    "function": True,
    "function2": False
}

def check_outcome(name):
    if outcomes.get(name, False):
        print("yes")
    else:
        print("no")

check_outcome("function")  # 输出 yes
check_outcome("function2") # 输出 no

方法2:动态获取全局变量(不推荐)

如果你一定要用全局变量的方式,可以通过globals()函数获取全局变量字典,再根据生成的键名取值:

# 先修正变量名,用下划线
function_outcome = True
function2_outcome = False

def a(B):
    # 生成变量名,把输入转成小写(和变量名对应)
    var_name = f"{B.lower()}_outcome"
    # 从全局变量字典里取对应的值,默认False避免变量不存在报错
    if globals().get(var_name, False):
        print("yes")
    else:
        print("no")

a("function")  # 输出 yes
a("function2") # 输出 no

注意:动态操作全局变量容易引发意外问题(比如变量名冲突),除非特殊需求,优先用字典的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:10:51