如何在Python案例中引用变量';s
Python能够针对文本集或占位符集执行以下操作:如何在Python案例中引用变量';s,python,python-3.10,Python,Python 3.10,Python能够针对文本集或占位符集执行以下操作: choice=“苹果” 比赛选择: 案例“梅花”:。。。 案例“樱桃”:。。。 另一个案例是: 打印(“您选择的水果是:”,另一种水果) 但是,如果我们有一个名为另一个_fruit的变量,并且我们希望与该变量的值完全匹配,而不是指定一个同名的占位符,该怎么办?这有什么特殊语法吗?选项1 我不知道这个问题的语法解决方案。裸变量名通常被认为是占位符(或者更准确地说:“捕获模式”) 但是,有一条规则是,限定(即虚线)名称被视为引用,而不是捕获模式。
choice=“苹果”
比赛选择:
案例“梅花”:。。。
案例“樱桃”:。。。
另一个案例是:
打印(“您选择的水果是:”,另一种水果)
但是,如果我们有一个名为另一个_fruit
的变量,并且我们希望与该变量的值完全匹配,而不是指定一个同名的占位符,该怎么办?这有什么特殊语法吗?选项1
我不知道这个问题的语法解决方案。裸变量名通常被认为是占位符(或者更准确地说:“捕获模式”)
但是,有一条规则是,限定(即虚线)名称被视为引用,而不是捕获模式。如果您将变量另一个_fruit
存储在如下对象中:
fruit\u object=object()
另一个水果=“桃”
并引用如下:
case-fruit\u对象。另一个\u-fruit:
打印(“它是一个桃子!”)
它会按照你想要的方式工作
选择2 我最近还创建了一个,它允许您通过虚线名称引用任何局部或全局变量:
来自matchref导入ref
另一种水果=“桃子”
choice=“没有桃子”
比赛选择:
案例参考:另一种水果:
打印(“你选了一个桃子!”)
它通过使用Python的inspect
模块来解析本地和全局名称空间(按此顺序)
选择3 当然,如果您不介意失去一点便利,您不必安装第三方库:
类GetAttributeDict(dict):
def _ugetattr _;(self,name):
返回自我[姓名]
定义某些函数():
另一种水果=“桃子”
choice=“没有桃子”
vars=GetAttributeDict(locals())
比赛选择:
案例变量。另一种水果:
打印(“你选了一个桃子!”)
GetAttributeDict
可以使用虚线属性访问语法访问字典,而locals()
是一个内置函数,用于在本地名称空间中以dict形式检索所有变量。如果您可以安排通过虚线名称访问变量,例如fruitmodule。另一个_fruit
,这将被解释为一个值,而不是一个捕获变量。否则,我看到的唯一方法就是如果f==另一个水果:,if
-的想法非常好+1为什么会这样?你的答案更广泛,问题更老,答案也更多。这个问题应该被标记为重复