नीचे दिए गए उदाहरण को देखते हुए, जो अधिक पायथनिक है? फ़ंक्शन संरचना, लैम्बडास, या (अब के लिए) का उपयोग करना पूरी तरह से अलग? मैं कहना है कि lambdas अधिक पठनीय होने लगते है, लेकिन गुइडो खुद को पूरी तरह lambdas निकालना चाहते हैं लगता है - http://www.artima.com/weblogs/viewpost.jsp?thread=98196अधिक पाइथनिक - फ़ंक्शन संरचना, लैम्बडास, या कुछ और क्या है?
from functools import partial
from operator import not_, ge
def get_sql_data_type_from_string(s):
s = str(s)
# compose(*fs) -> returns composition of functions fs
# iserror(f, x) -> returns True if Exception thrown from f(x), False otherwise
# Using function composition
predicates = (
('int', compose(not_, partial(iserror, int))),
('float', compose(not_, partial(iserror, float))),
('char', compose(partial(ge, 1), len)))
# Using lambdas
predicates = (
('int', lambda x: not iserror(int, x)),
('float', lambda x: not iserror(float, x)),
('char', lambda x: len(x) <= 1))
# Test each predicate
for i, (t, p) in enumerate(predicates):
if p(s):
return i, t
# If all predicates fail
return (i + 1), 'varchar'
मुझे लगता है कि लैम्ब्डा संस्करण सबसे सरल और स्पष्ट है, जो मैं भी लगता है कि यह सबसे "pythonic" बनाता है। –
नाइटपिक - आतंक की आपकी परिभाषा के अनुसार, आपके पास 'आतंक (int, x)' के रूप में कुछ होना चाहिए जैसा कि 'आतंक (int (x)) के विपरीत है। –
लैम्ब्डा अच्छा – pyCthon