পাইথন ফার্স্ট-ক্লাস ফাংশন সাপোর্ট করে, অর্থাৎ ফাংশন থেকে ফাংশন রিটার্ন করা যায়। এটি ক্লোজার এবং ফ্যাক্টরি প্যাটার্নের ভিত্তি।
উদাহরণ
def f2(c, d):
return c, d
def f1(a, b):
c = a + 1
d = b + 2
return lambda: f2(c, d) # ল্যাম্বডা রিটার্ন (ক্লোজার)
result = f1(1, 2)
print(result) # at 0x...>
print(result()) # (2, 4)
ব্যাখ্যা
f1কল হলেc=2, d=4ক্যাপচার করে একটি ল্যাম্বডা রিটার্ন করে।- রিটার্ন করা ল্যাম্বডা কল করলে
f2(2, 4)এক্সিকিউট হয়। - এটি ক্লোজার — ইনার ফাংশন আউটার ফাংশনের ভেরিয়েবল "ক্যাপচার" করে।
ফাংশন ফ্যাক্টরি প্যাটার্ন
def make_multiplier(factor):
def multiplier(x):
return x * factor
return multiplier
times3 = make_multiplier(3)
times5 = make_multiplier(5)
print(times3(10)) # 30
print(times5(10)) # 50
ব্যবহার ক্ষেত্র
- ডেকোরেটর
- কনফিগারেবল ফাংশন জেনারেশন
- পার্শিয়াল অ্যাপ্লিকেশন (
functools.partial) - কলব্যাক ফ্যাক্টরি