如何通过函数输入动态获取变量并进行布尔值判断?
解决方案
首先纠正你代码里的几个基础语法错误:
- 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
相关产品推荐
相关产品推荐

