If we were to name your operator &quot;aif&quot; instead (since there is no &quot;when&quot; in Python), and compare if and aif:<p><pre><code>  ## if
  val = func()
  if val:            # standard form
      code(val)      # of if

  ## aif
  aif(func, code)    # not obvious that it does the same thing
                     # and limits you to using a function defined
                     # elsewhere, or Python&#x27;s crippled one-line lambda.

</code></pre>
Whereas in Lisp, you&#x27;d do:<p><pre><code>  ;; regular when
  (let (val (func))
    (when val        ; standard form
      (func val)))   ; of when

  ;; awhen
  (awhen (func)     ; standard form of
    (func it)       ; when, with added bound value
    ; possibly other
    ; code goes here
    )
</code></pre>
Do you see how the two forms of Python look very different, and the two forms of Lisp look the same?<p>If you don&#x27;t like magic, you could invent an awhen that took an extra parameter that designates the name to bind the result to, e.g. <i>(awhen val test)</i>.<p>So.<p>Yes - you can achieve the same thing, as in any programming language that is Turing complete.<p>No - you cannot get the same <i>syntax</i>. And syntax affects readability and familiarity.