মডিউল পাঠ (2/4)
ডিফল্ট এবং কীওয়ার্ড প্যারামিটার
ফাংশন প্যারামিটারের ডিফল্ট মান থাকতে পারে: যদি কলকারী পাস না করে তাদের, ডিফল্ট ব্যবহার করা হয়. আপনি একটি ফাংশন পাসিং পরামিতি কল করতে পারেন নাম অনুসারে (কীওয়ার্ড আর্গুমেন্ট)।
ডিফল্ট পরামিতি
def saluta(nome, saluto="Ciao"):
return f"{saluto}, {nome}!"
saluta("Ada") # 'Ciao, Ada!'
saluta("Ada", "Hello") # 'Hello, Ada!'ডিফল্ট সহ পরামিতিগুলি অবশ্যই পর যা ছাড়াই আসবে:
def f(a, b=1): # OK
def f(a=1, b): # SyntaxErrorমূলশব্দ আর্গুমেন্ট
আপনি নাম দ্বারা আর্গুমেন্ট পাস করতে পারেন, যে কোন ক্রমে, কল আরো করা পঠনযোগ্য:
def crea_utente(nome, eta, attivo=True):
return {"nome": nome, "eta": eta, "attivo": attivo}
crea_utente("Ada", 36)
crea_utente(nome="Ada", eta=36, attivo=False)
crea_utente(eta=36, nome="Ada") # any order when all are keywordসুবর্ণ নিয়ম: একটি কলে, কীওয়ার্ড আর্গুমেন্টের আগে অবস্থানগত আর্গুমেন্ট আসে।
crea_utente("Ada", eta=36) # OK
crea_utente(nome="Ada", 36) # SyntaxError⚠️ পরিবর্তনযোগ্য ডিফল্ট সমস্যা
কখনই ডিফল্ট মান হিসাবে একটি পরিবর্তনযোগ্য বস্তু (তালিকা, নির্দেশ, সেট) ব্যবহার করবেন না: ডিফল্ট একবার মূল্যায়ন করা হয়, যখন ফাংশনটি সংজ্ঞায়িত করা হয় এবং জুড়ে ভাগ করা হয় সব কল।
def aggiungi(elemento, lista=[]): # BUG!
lista.append(elemento)
return lista
aggiungi(1) # [1]
aggiungi(2) # [1, 2] !!! not [2] as you'd expect
aggiungi(3) # [1, 2, 3]সঠিক প্যাটার্ন: None কে সেন্টিনেল হিসাবে ব্যবহার করুন এবং এটি ভিতরে তৈরি করুন:
def aggiungi(elemento, lista=None):
if lista is None:
lista = []
lista.append(elemento)
return listaপরিবর্তনযোগ্য ডিফল্ট আর্গুমেন্টের বিপদ
পরামিতিগুলির জন্য ডিফল্ট মান হিসাবে পরিবর্তনযোগ্য বস্তু (যেমন তালিকা বা অভিধান) ব্যবহার করবেন না: উদাহরণস্বরূপ def add(x, my_list=[])। ডিফল্ট মানটি শুধুমাত্র একবার মূল্যায়ন করা হয় যখন ফাংশনটি সংজ্ঞায়িত করা হয়, যার অর্থ পরবর্তী কলগুলি ঠিক একই পরিবর্তনযোগ্য বস্তুকে ভাগ করবে! সর্বোত্তম অনুশীলন হল None ব্যবহার করা:
def add(x, my_list=None):
if my_list is None:
my_list = []
my_list.append(x)
return my_listচেষ্টা করে দেখুন
`শক্তি(বেস, সূচক=2)` সংজ্ঞায়িত করুন যা ভিত্তি ** সূচক প্রদান করে। `বর্গ = শক্তি(5)` এবং `ঘনক = শক্তি(5, সূচক=3)` গণনা করুন। `(বর্গক্ষেত্র, ঘনক)` মূল্যায়ন করুন।
ইঙ্গিত দেখান
রিটার্ন বেস ** সূচক
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
ব্যায়াম পর্যালোচনা করুন
`create_record(name, values=None)` সংজ্ঞায়িত করুন যে, যখন কোনো মান নেই, তখন একটি নতুন খালি তালিকা ব্যবহার করে। মানগুলির সাথে 1 যুক্ত করুন এবং রেকর্ড নির্দেশনা {'name': name, 'values': values} ফেরত দিন। মান পাস না করে এটিকে দুবার কল করুন এবং `a` এবং `b` এ বরাদ্দ করুন। `(a['values'], b['values'])` মূল্যায়ন করুন।
ইঙ্গিত দেখান
ডিফল্ট হিসাবে None ব্যবহার করুন এবং ফাংশনের ভিতরে তালিকা তৈরি করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
অতিরিক্ত চ্যালেঞ্জ
একটি ফাংশন সংজ্ঞায়িত করুন \`greet(name, message="Hello")\` যা ফরম্যাট করা স্ট্রিং \`"{message}, {name}!"\` প্রদান করে। শেষ অভিব্যক্তি হিসাবে \`greet("বব")\` কল করে ফাংশনটি পরীক্ষা করুন।
ইঙ্গিত দেখান
ফিরে আসা শুভেচ্ছার জন্য একটি ডিফল্ট প্যারামিটার বার্তা="হ্যালো" এবং একটি এফ-স্ট্রিং ব্যবহার করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ