ماڈیول اسباق (1/4)
def اور واپسی
ایک فنکشن کوڈ کا دوبارہ قابل استعمال بلاک ہے: آپ اسے ایک بار def کے ساتھ بیان کرتے ہیں،
پھر اسے جتنی بار چاہیں کال کریں۔ افعال کوڈ ماڈیولر بناتے ہیں،
قابل امتحان، اور خود دستاویزی.
بنیادی نحو
def saluta(nome):
return f"Ciao, {nome}!"
saluta("Ada") # 'Ciao, Ada!'defفنکشن متعارف کراتا ہے، اس کے بعد نام اور پیرامیٹرز قوسین:انڈینٹڈ بلاک کو کھولتا ہے۔returnکالر کو ایک قدر واپس بھیجتا ہے اور فنکشن کو ختم کرتا ہے۔
واضح return بمقابلہ مضمر None
اگر آپ return نہیں لکھتے ہیں، تو فنکشن None واپس آتا ہے:
def stampa_e_basta(x):
print(x)
risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato) # Noneایک ننگا return (کوئی قدر نہیں) بھی None لوٹاتا ہے، لیکن یہ ابتدائی طور پر کام کر سکتا ہے
باہر نکلیں:
def primo_pari(nums):
for n in nums:
if n % 2 == 0:
return n
return None # explicit: communicates "not found"ایک سے زیادہ اقدار؟ ایک ٹوپل واپس کریں۔
Python کے پاس کوئی "آؤٹ پیرامیٹر" نہیں ہے: ایک سے زیادہ چیزوں کو واپس کرنے کے لیے، a ٹوپل (اکثر کال کرنے والے کے ذریعہ پیک کیا جاتا ہے)۔
def divisione_resto(a, b):
return a // b, a % b
quoziente, resto = divisione_resto(17, 5)
# 3, 2Docstring: بلٹ ان دستاویزات
فنکشن کے اندر پہلی سٹرنگ ڈاکسٹرینگ ہے: یہ اس میں ظاہر ہوتی ہے۔
help(fn) اور IDEs میں ٹول ٹِپ کے طور پر۔
def area_cerchio(raggio):
"""Calcola l'area di un cerchio dato il raggio."""
import math
return math.pi * raggio ** 2دائرہ کار: مقامی متغیرات
فنکشن کے اندر متعین کردہ متغیرات مقامی ہیں: وہ موجود نہیں ہیں۔ باہر
def f():
x = 10
return x
f() # 10
x # NameError: name 'x' is not definedافعال ہمیشہ کچھ واپس کرتے ہیں۔
Python میں، اگر کوئی فنکشن واضح طور پر return اسٹیٹمنٹ کا اعلان نہیں کرتا ہے یا خالی return کو نمایاں نہیں کرتا ہے، تو یہ واضح طور پر اسپیشل ویلیو None کو لوٹائے گا۔ ایسا کوئی فنکشن نہیں ہے جو قدر واپس نہ کرے۔
اسے آزمائیں
ایک فنکشن `ڈبل(x)` کی وضاحت کریں جو `x * 2` لوٹاتا ہے۔ پھر اسے 7 کے ساتھ کال کریں اور نتیجہ کو 'نتیجہ' پر تفویض کریں۔ `نتائج` کا اندازہ لگائیں۔
اشارہ دکھائیں۔
واپسی x * 2 استعمال کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش کا جائزہ لیں۔
`min_max(nums)` کی وضاحت کریں جو ٹپل `(کم سے کم، زیادہ سے زیادہ)` لوٹاتا ہے۔ اسے `[3, 1, 4, 1, 5, 9, 2, 6]` پر کال کریں اور نتیجہ کو `mn, mx` میں کھولیں۔ اندازہ کریں `(mn, mx)`۔
اشارہ دکھائیں۔
واپسی کم سے کم (عدد)، زیادہ سے زیادہ (عدد)
3 کوششوں کے بعد حل دستیاب ہے۔
اضافی چیلنج
ایک فنکشن کی وضاحت کریں \`is_palindrome(text)\` جو واپس کرتا ہے \`True\` اگر ان پٹ سٹرنگ اس کے الٹ ورژن کے برابر ہے، اور \`False\` دوسری صورت میں۔ آخری اظہار کے طور پر \`is_palindrome("radar")\` کے ساتھ فنکشن کی جانچ کریں۔
اشارہ دکھائیں۔
سٹرنگ کو ریورس کرنے کے لیے سلائسنگ ٹیکسٹ [::-1] کا استعمال کریں اور اس کا اصل متن سے موازنہ کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔