পাইথনে কোনও ফাংশন ফরওয়ার্ড-ডিক্লেয়ার করা সম্ভব? আমি নিজের cmp
ক্রিয়াকলাপটি ঘোষণার আগে একটি তালিকা সাজিয়ে রাখতে চাই ।
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
cmp_configs
অনুরোধের পরে পদ্ধতির সংজ্ঞা রাখার জন্য আমি আমার কোডটি সংগঠিত করেছি । এটি এই ত্রুটির সাথে ব্যর্থ হয়:
NameError: name 'cmp_configs' is not defined
cmp_configs
পদ্ধতিটি ব্যবহারের আগে "ঘোষণা" করার কোনও উপায় আছে কি ? এটি আমার কোডটিকে আরও পরিষ্কার দেখাচ্ছে?
আমি ধরে নিয়েছি যে কিছু লোক আমাকে বলার জন্য প্রলুব্ধ হবে যে আমাকে কেবল আমার কোডটি পুনরায় সাজানো উচিত যাতে আমার এই সমস্যা না হয়। যাইহোক, কিছু ক্ষেত্রে রয়েছে যখন এটি সম্ভবত অনিবার্য, উদাহরণস্বরূপ যখন কিছু ফর্ম পুনরাবৃত্তি প্রয়োগ করা হয়। আপনি যদি এই উদাহরণটি পছন্দ না করেন তবে ধরে নিন যে আমার কাছে এমন একটি মামলা রয়েছে যাতে কোনও ফাংশন ঘোষণা করার জন্য এটি সত্যই জরুরি।
এই ক্ষেত্রে বিবেচনা করুন যেখানে পাইথনে কোনও ফাংশন ফরওয়ার্ড-ডিক্লেয়ারিং প্রয়োজনীয় হবে:
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
যেখানে end_condition
এবং end_result
আগে সংজ্ঞায়িত করা হয়েছে।
কোড পুনর্গঠন এবং সর্বদা আমন্ত্রণের আগে সংজ্ঞা রাখার একমাত্র সমাধান?