def closure(param):
def inner():
return "Hello %s" % param
return inner
c1 = closure("MARIO")
print(c1())
c2 = closure("LUIGI")
print(c2())
ラムダ
def hello(names, func):
for name in names:
func(name)
names = ["MARIO", "LUIGI", "DONKY"]
hello(names, lambda name: print(name+"!"))
ジェネレータ
def my_range(first=0, last=10, step=1):
number = first
while number < last:
yield number
number += step
ranger = my_range(1,5)
for i in ranger:
print(i)
デコレータ
def document_it(func):
def new_function(*args, **kwargs):
print('Running function:', func.__name__)
print('Positional arguments:',args)
print('Keyword arguments:',kwargs)
result = func(*args, **kwargs)
print('Result:',result)
return result
return new_function
@document_it
def add_ints(a,b):
return a+b
print(add_ints(3,5))
プロパティ
class Duck():
def __init__(self,input_name):
self.__name = input_name
@property
def name(self):
print("inside the getter")
return self.__name
@name.setter
def name(self, input_name):
print("inside the setter")
self.__name = input_name
f = Duck("Howard")
print(f.name)
f.name = "One"
print(f.__name)
参考文献