假设我有以下变量:
x
y
Run Code Online (Sandbox Code Playgroud)
和功能:
def runx(x):
print(x)
def runy(y):
print (y)
def runxy(x, y):
print(x + y)
def nonexy():
print('none')
Run Code Online (Sandbox Code Playgroud)
什么是基于下一个要求选择函数的Pythonic方法:
- 如果value
只比y
运行func大runy
- 如果value
只比x
运行func大runx
- 如果value
大于两者x
并y
运行funcrunxy
- 如果value
不是比这更好的x
并且y
愚弄功能nonexy
value
,x
,y
可以是任何数量的
例:
x = 4
y = 6
value = 5
Run Code Online (Sandbox Code Playgroud)
这里value
只是大于x
,所以跑runx(x)
if value > y :
if value > x :
runxy(x, y)
else :
runy(y)
else :
if value > x :
runx(x)
else :
nonexy()
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
经常被遗忘的一种方法是使用逻辑表.现在,虽然我并不认为这是最好的方法,但我觉得这很有意思,所以这里有 - 接受或留下你想做的事情.
value > y value <= y
---------- ----------
value > x | runxy runx
value <= x | runy nonex
Run Code Online (Sandbox Code Playgroud)
然后我们可以将其编成如此,利用函数是一等值的事实:
arr = [[runxy, runx], [runy, nonex]]
Run Code Online (Sandbox Code Playgroud)
并按如下方式访问它:
col = 0 if value > y else 1
row = 0 if value > x else 1
fn = arr[row][col]
Run Code Online (Sandbox Code Playgroud)
然后只需编辑当前设计,所有函数应该采用x和y参数(或使用上表中的包裹lambda)和..
fn(x, y)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
112 次 |
最近记录: |