[tips] if as a pure function in python
http://okmij.org/ftp/Scheme/if-function.txt
here is a trick that we could rewrite a customized not-a-special-form IF in python.
iftrick.py:
#!/usr/bin/env python
def func_true():
print "true!"
def func_false():
print "false!"
def my_if(my_cond,then_func,else_func):
eval((then_func, else_func)[not my_cond].func_code,vars())
condition = True
my_if(condition,func_true,func_false)
condition = False
my_if(condition,func_true,func_false)
===
#python iftrick.py
true!
false!
2 則留言:
不過Py2.5已經有one-line if-else 了耶 _A_
你可能誤會了, 其實我這篇筆記的重點不在於if是不是一行, 主要是在於python的if可以用不是keyword的方式在語言裡來實作, 所以我可以用純python的方式來改寫我的function版本的if, 而不必受限於python改版, 比如在if裡加一個implicit check之類的,就不必改寫python直譯器, 我這篇tip只是一個demo, 說真的也沒什麼實際用途,在實務上絕對可以用很多種方法替代, 純粹只是覺得有趣而已.
張貼留言