【问题标题】:Use a string (representing a logical operator) in a Python expression在 Python 表达式中使用字符串(表示逻辑运算符)
【发布时间】:2014-09-10 20:06:00
【问题描述】:

是否有可能以某种方式将 orand 的字符串转换为可识别为逻辑运算符的形式?

例如,是否可以这样做:

l = [1, 2, 3, 4, 5]
o = {item1:'or'}

for i in l:
    if i > 4 o[item1] i < 0:
        print i

o[item1] 在哪里被识别为有效的or 逻辑运算符?

【问题讨论】:

  • 可以创建等效的等效 (fsvo) 表达式,但不能像那样使用它 - 这只是无效的语法 - 并且表达式本身需要更改。
  • XY 问题:你认为你为什么需要这个?
  • 通过一些技巧,您可以获得(i &gt; 4) |o[item1]| (i &lt; 0) 语法(没有短路),但您永远不会在任何实际代码中使用它,所以它只不过是一个客厅技巧。您认为这有什么特别的问题吗?也许有更好的方法来解决它。
  • 我正在尝试解决我在这里发布的问题:stackoverflow.com/questions/25691990/…
  • @DSM:实际上您可以使用许多不同的分隔符,例如a &lt;o[x]&gt; ba **o[x]** b 甚至a %o[x]% b...可能性无穷无尽! :P

标签: python operators expression


【解决方案1】:

您可以使用operator 包:

import operator

o = {item1: operator.or_}

if o[item1](i>4, i<0):
    ...

请注意,or_ 不会像 or 那样短路。如果您确实需要短路行为,可以使用eval(但一般不建议这样做)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多