Seite 1 von 1

Re: Warum nimmt sum() keine strings?

Verfasst: Mittwoch 14. November 2012, 14:52
von BlackJack
@mutetella: Ein paar Beispiele für syntaktischen Zucker:

Code: Alles auswählen

ys = [f(x) for x in xs if p(x)]
# 
# Zucker für:
# 
ys = list()
for x in xs:
    if p(x):
        ys.append(f(x))

# ----

ys = (f(x) for x in xs if p(x))
# 
# Zucker für:
# 
def gf():
    for x in xs:
        if p(x):
            yield f(x)

ys = gf()

# ----

def gf():
    init()
    while True:
        if end_condition():
            break
        yield next_result()
# 
# Zucker für:
# 
class Iterator(object):
    def __init__(self):
        init()
    
    def __iter__(self):
        return self
    
    def next(self):
        if end_condition():
            raise StopIteration
        return next_result()

gf = Iterator()

# ----

with create_context() as c:
    do_something(c)
# 
# Zucker für (vereinfacht):
# 
c = create_context().__enter__()
try:
    do_something(c)
finally:
    c.__exit__()

# ----

lambda x: do_something(x)
# 
# Zucker für:
# 
def temporary_name(x):
    return do_something(x)

# ----

for x in xs:
    do_something(x)
# 
# Zucker für:
# 
xs_iterator = iter(xs)
while True:
    try:
        x = xs_iterator.next()
    except StopIteration:
        break
    do_something(x)

# ----

def f():
    do_something()
# 
# Zucker für:
# 
class F(object):
    def __call__(self):
        do_something()

f = F()
Das heisst syntaktischer Zucker weil es etwas ”Süsses” ist, was man auf die Syntax noch oben drauf ”streut” um die Sprache ”leckerer” zu machen. Aus dem Blickwinkel könnte man jetzt sagen, dass die beiden letzten Beispiele kein Zucker für ”oben drauf” sind, sondern welcher den man eigentlich als Grundzutat in der ”Sprachbackmischung” erwarten würde. Das hat aber nicht jede Sprache — Java-Programmierer mussten lange auf eine „for-each”-artige Schleife warten und im letzten Java mit dem ich zu tun hatte (Java 6) musste man für Rückruf”funktionen” immer noch Klassen mit einer Methode schreiben, die einen von der API festgelegten Namen haben musste.

Re: Warum nimmt sum() keine strings?

Verfasst: Mittwoch 14. November 2012, 18:33
von mutetella
BlackJack hat geschrieben:Ein paar Beispiele für syntaktischen Zucker
Danke für die Erklärung...

Re: klammern in datei entfernen

Verfasst: Mittwoch 14. November 2012, 18:52
von BlackJack
@mutetella: Ja der gehört eigentlich eher hier hin. :oops: Hab's mal verschoben.