কোনও ফাংশন মোড়ানোর সহজ উপায়
func(*args, **kwargs)
... ম্যানুয়ালি একটি মোড়ক লিখতে হবে যা নিজের ভিতরে ফানক () কল করে:
def wrapper(*args, **kwargs):
# do something before
try:
return func(*a, **kwargs)
finally:
# do something after
পাইথনে ফাংশনটি একটি অবজেক্ট, তাই আপনি এটির নামটি অন্য ফাংশনের আর্গুমেন্ট হিসাবে পাস করতে পারেন এবং এটি ফিরিয়ে দিতে পারেন। যে কোনও ফাংশনের জন্য আপনি একটি র্যাপার জেনারেটরও লিখতে পারেন কোনও ফাঙ্ক () :
def wrapperGenerator(anyFunc, *args, **kwargs):
def wrapper(*args, **kwargs):
try:
# do something before
return anyFunc(*args, **kwargs)
finally:
#do something after
return wrapper
দয়া করে নোট করুন যে পাইথনে যখন আপনি কোনও ফাংশনের সমস্ত আর্গুমেন্টের নাম জানেন না বা না চান, আপনি আর্গুমেন্টের একটি টিপলকে উল্লেখ করতে পারেন, এটির নাম দ্বারা চিহ্নিত করা হয়েছে, এর পরে প্রথম বন্ধনীতে একটি নক্ষত্রের দ্বারা চিহ্নিত ফাংশন নাম:
*args
উদাহরণস্বরূপ আপনি কোনও ফাংশনটি সংজ্ঞায়িত করতে পারেন যা বেশ কয়েকটি সংখ্যক আর্গুমেন্ট গ্রহণ করবে:
def testFunc(*args):
print args # prints the tuple of arguments
পাইথন ফাংশন আর্গুমেন্ট এমনকি আরও ম্যানিপুলেশন সরবরাহ করে। আপনি কোনও ফাংশনকে কীওয়ার্ড আর্গুমেন্ট নেওয়ার অনুমতি দিতে পারেন। ফাংশন বডির মধ্যে একটি অভিধানে কীওয়ার্ড আর্গুমেন্ট রাখা হয়। ক্রিয়াকলাপের নামের পরে প্রথম বন্ধনীতে এই অভিধানটি দুটি তারকাচিহ্ন দ্বারা চিহ্নিত করা হয় এবং এর পরে অভিধানটির নাম:
**kwargs
একটি অনুরূপ উদাহরণ যা কীওয়ার্ড আর্গুমেন্ট অভিধানকে মুদ্রণ করে:
def testFunc(**kwargs):
print kwargs # prints the dictionary of keyword arguments