还有什么比python函数组合、lambdas或其他东西更重要的呢?
给出下面的例子,哪个更像蟒蛇?使用函数组合、lambdas或(现在)完全不同的东西?我不得不说,lambdas似乎更具可读性,但Guido本人似乎想完全删除lambdas-还有什么比python函数组合、lambdas或其他东西更重要的呢?,python,function,lambda,functional-programming,composition,Python,Function,Lambda,Functional Programming,Composition,给出下面的例子,哪个更像蟒蛇?使用函数组合、lambdas或(现在)完全不同的东西?我不得不说,lambdas似乎更具可读性,但Guido本人似乎想完全删除lambdas- 从functools导入部分 从操作员导入而不是从通用电气 def从字符串获取sql数据类型: s=str(s) #compose(*fs)->返回函数fs的组合 #iserror(f,x)->如果从f(x)抛出异常,则返回True,否则返回False #使用函数合成 谓词=( ('int',compose(非u,部分(is
从functools导入部分
从操作员导入而不是从通用电气
def从字符串获取sql数据类型:
s=str(s)
#compose(*fs)->返回函数fs的组合
#iserror(f,x)->如果从f(x)抛出异常,则返回True,否则返回False
#使用函数合成
谓词=(
('int',compose(非u,部分(iserror,int)),
('float',compose(非),partial(iserror,float)),
('char',compose(partial(ge,1),len)))
#使用lambdas
谓词=(
('int',lambda x:not iserror(int,x)),
('float',lambda x:not iserror(float,x)),
('char',lambda x:len(x)一个从未见过Python的程序员将能够一目了然地计算出lambda。我已经使用Python十多年了,我一直在挠头以找出组合形式,即使要与lambda版本进行比较
选择一个不烂的。另外,鉴于lambda获得了3.0版,我怀疑它是否会被删除。以下是一个属于“不同”类别的方法:
def get_sql_data_type_from_string(s):
s = str(s)
def char(x):
if len(x)<=1:
return x
raise RuntimeError('Not a char')
predicates = (
('int', int),
('float', float),
('char', char)
)
# Test each predicate
for i, (t, p) in enumerate(predicates):
try:
p(s)
return i,t
except:
pass
# If all predicates fail
return (i + 1), 'varchar'
def从字符串获取sql数据类型:
s=str(s)
def字符(x):
如果len(x)我认为lambda版本是最直接和清晰的,我也认为它是最“pythonic”的。吹毛求疵——根据你对iSeries的定义,你应该有类似于iSeries(int,x)
的东西,而不是iSeries(int(x))
@Vaugn Cato谢谢!相应地更新了问题
def get_sql_data_type_from_string(s):
s = str(s)
def char(x):
if len(x)<=1:
return x
raise RuntimeError('Not a char')
predicates = (
('int', int),
('float', float),
('char', char)
)
# Test each predicate
for i, (t, p) in enumerate(predicates):
try:
p(s)
return i,t
except:
pass
# If all predicates fail
return (i + 1), 'varchar'