Приведите пример того, что на пистоне можно сделать такого, что на C++ нельзя. Или же такие приемущества пистона перед C++, чтоб я немедленно обмазался пистоном.
Ок. фун.прог. Многие о нем говорят. Но зачем оно? Можете привести пример использования фун.прог на пистоне которые не запилить классикой ООП или же реализация с использованием ООП была бы трудоемкой, не оправданной и т.д.
Генераторы списков, filter, map, reduce, лямбды — это фунпрог. getattr, eval — рефлексия. Всего этого в сишке нет и не может быть по дизайну (нет GC, нет JIT-компиляции). Императивщина и фунпрог ортогональны, т.е. не взаимоисключающи. Можно обойтись и без функциональных вещей, но зачастую получится более корявый и трудночитаемый код. Без лямбд и замыканий становится трудновато жить, если привыкнешь, а поддержки в некоем языке нет.
print ", ".join("%d dollar%s" % (i, "s" if i != 1 else "") for i in xrange(1, 10))
class A():
a = 1
x = A()
try:
print x.a
print x.b
except AttributeError:
print 'no member'
x.b = 2
try:
print x.a
print x.b
except AttributeError:
print 'no member'
А зачем нам это приводить?
just4lulz
Тогда уж лучше лиспом обмазываться, у него вообще аналогов превосходящих нет.
def debug_deco(func):
def tmp(*args, **kwargs):
print "Args:", args, " Kwargs:", kwargs
res = func(*args, **kwargs)
print "Result:", res
return res
return tmp
from math import sqrt
@debug_deco
def sqr(x):
return x*x
@debug_deco
def dist(x1, y1, x2, y2):
return sqrt(sqr(x2 — x1) + sqr(y2 — y1))
d1 = dist(0, 0, 3, 4)
d2 = dist(x1=0, y1=0, x2=12, y2=5)
print d1, d2
ты там не прихуел еще от аргументов? Про метаклассы тебе лучше не знать пока
Бля, достаточно было сказать, что сишка и плюсики не могут в фунпрог и рефлексию (плюсики разве что с Qt и костылями это могут).
а теперь по-русски
Ок. фун.прог. Многие о нем говорят. Но зачем оно? Можете привести пример использования фун.прог на пистоне которые не запилить классикой ООП или же реализация с использованием ООП была бы трудоемкой, не оправданной и т.д.
Генераторы списков, filter, map, reduce, лямбды — это фунпрог. getattr, eval — рефлексия. Всего этого в сишке нет и не может быть по дизайну (нет GC, нет JIT-компиляции). Императивщина и фунпрог ортогональны, т.е. не взаимоисключающи. Можно обойтись и без функциональных вещей, но зачастую получится более корявый и трудночитаемый код. Без лямбд и замыканий становится трудновато жить, если привыкнешь, а поддержки в некоем языке нет.
А вообще, можно и на вижуалбейсике писать.
см. /1