8. ИНТРОСПЕКЦИЯ
Возможность получить информацию о структуре базовых
элементов языка в ходе исполнения программы.
Возможность орудовать элементами программы с такой же
степенью свободы, как и с данными.
9. ПОЛУЧАЕМ
>>> def add(x, y):
"adds y to x and returns result"
return x + y
>>> print(add.__doc__)
adds y to x and returns result
>>> print(add.__name__)
add
11. И СНОВА
def make_adder(x):
def adder(y):
return x+y
return adder
add_7 = make_adder(7)
>>> add_7(5)
12
12. БЛИЖЕ К ЖИЗНИ
def less_than(x):
def validator(y):
if x >= y:
raise ValueError("Value must be less than %s" % x)
return validator
13. ЕЩЁ БЛИЖЕ К ЖИЗНИ
@Endpoint
def max_int(x: Arg(int, required=True, validators=[val_gt(0), val_lt(200)]),
y: Arg(int, validators=[val_in([1,10,105,124])])):
return max(x,y)
Но об этом чуть позже :)