我的处境是:
if test: dosomething else: dosomethingElse
来组合内容,因为用户可以更改部分字符串内容,而且我不希望他们必须管理条件语句中数学表达式之间的空格。在因此,我使用下面的列表技巧:[dosomethingElse, dosomething][ test ]
(对测试的正确/错误答案给出dosomething/dosomethingElse)。在
溶液工作正常,但dosomething和dosomethingElse都是 在测试检查之前评估过,我只想评估一个。(我的时间很紧)。在
有没有办法在一行中只计算一个函数?在
这里是代码的主要步骤这里列出了依赖项,但它们在原始程序中得到了很好的管理。在
创造独特的个性魅力
def gen_id():
s = 10000
while s:
yield s
s += 1
fun_ticket = gen_id()
有趣的描述(名称、参数、表达式、id)
from collections import defaultdict
d= defaultdict(lambda :defaultdict())
d["dosomething"]["args"] = set(["argA","argB"])
d["dosomething"]["exp"] = "return argA + argB"
d["dosomething"]["id"] = "f_%d"%(fun_ticket.next())
d["dosomethingElse"]["args"] = set(["argX","argY","argZ"])
d["dosomethingElse"]["exp"] = "return argX + argY+ argZ"
d["dosomethingElse"]["id"] = "f_%d"%(fun_ticket.next())
d["doChoice"]["args"] = set(["argE","argF"])
d["doChoice"]["exp"] = "return [dosomethingElse, dosomething][argE > 0] + argF"
d["doChoice"]["id"] = "f_%d"%(fun_ticket.next())
准备要评估的文件功能。在
dependencies = ('dosomething', 'dosomethingElse', 'doChoice')
Allargs = set().union(*[d[x]["args"] for x in dependencies])
funChoice = 'def %s(%s): %s'%(d['doChoice']['id'],",".join(Allargs),d['doChoice']["exp"])
结果:函数字符串为:
def f_10002(argX,argY,argZ,argA,argB,argE,argF): return [f_10001(argX,argY,argZ), f_10000(argA,argB)][argE > 0] + argF
这里有一个问题:功能评估-剂量测定和剂量测定。有没有一种方法可以在不使用if-else的情况下只计算一个(以及字符串中的空间管理问题)?在
使用conditional expression:
根据}中的一个。引用文件:
test
的结果,只评估dosomething
和{使其适应您的代码:
^{pr2}$相关问题 更多 >
编程相关推荐