پائتھون میں تحریری انداز ہے جسے ٹرنری آپریٹرز (مشروط آپریٹرز) کہا جاتا ہے جو ایک لائن میں if اسٹیٹمنٹ جیسے عمل کو بیان کر سکتا ہے۔
ذیل میں نمونہ کوڈ کے ساتھ وضاحت کی گئی ہے۔
- ٹرنری آپریٹرز کی بنیادی تحریر
if ... elif ... else ...اس کو ایک لائن میں بیان کریں۔- فہرست جامع اشارے اور ٹرنری آپریٹرز کو یکجا کرنا
- گمنام فنکشنز (لیمبڈا ایکسپریشنز) اور ٹرنری آپریٹرز کا مجموعہ
نارمل اگر بیان کے بارے میں مزید معلومات کے لیے درج ذیل مضمون کو دیکھیں۔
ٹرنری آپریٹرز کی بنیادی تحریر
Python میں، ٹرنری آپریٹر کو اس طرح لکھا جا سکتا ہے۔
Expression evaluated when the conditional expression is true if conditional expression else Expression evaluated when the conditional expression is false
اگر آپ حالات کے مطابق اقدار کو تبدیل کرنا چاہتے ہیں، تو بس ہر قدر کو ویسا ہی لکھیں۔
Value to return if conditional expression is true if conditional expression else Value to return if conditional expression is false
a = 1
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# odd
a = 2
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# even
اگر آپ حالات کے مطابق پروسیسنگ کو تبدیل کرنا چاہتے ہیں، تو ہر ایک اظہار کی وضاحت کریں۔
a = 1
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 3
a = 2
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 4
ایسے تاثرات جو قدر واپس نہیں کرتے ہیں (اظہار جو کوئی نہیں لوٹاتے ہیں) بھی قابل قبول ہیں۔ حالت پر منحصر ہے، اظہار میں سے ایک کا اندازہ کیا جاتا ہے اور عمل کو انجام دیا جاتا ہے.
a = 1
print('even') if a % 2 == 0 else print('odd')
# odd
مندرجہ ذیل کوڈ کے مساوی جو نارمل if بیان کے ساتھ لکھا گیا ہے۔
a = 1
if a % 2 == 0:
print('even')
else:
print('odd')
# odd
منطقی آپریٹرز (اور، یا، وغیرہ) کا استعمال کرتے ہوئے متعدد مشروط اظہارات کو بھی جوڑا جا سکتا ہے۔
a = -2
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# negative and even
a = -1
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# positive or odd
if ... elif ... else ...ایک لائن کی تفصیل
if ... elif ... else ...اسے ایک لائن پر لکھنے کا کوئی خاص طریقہ نہیں ہے۔ تاہم، اس اظہار میں ایک اور ٹرنری آپریٹر استعمال کرکے اس کا احساس کیا جاسکتا ہے جس کا اندازہ اس وقت ہوتا ہے جب ٹرنری آپریٹر کا مشروط اظہار غلط ہوتا ہے۔ نیسٹنگ ٹرنری آپریٹرز کی تصویر۔
تاہم، یہ بہتر ہو سکتا ہے کہ اسے بڑے پیمانے پر استعمال نہ کیا جائے کیونکہ یہ پڑھنے کی اہلیت کو کم کرتا ہے۔
a = 2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# positive
a = 0
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# zero
a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative
مندرجہ ذیل مشروط اظہار کی مندرجہ ذیل دو طریقوں سے تشریح کی جا سکتی ہے، لیکن اسے سابقہ (1) کے طور پر سمجھا جاتا ہے۔
A if condition 1 else B if condition 2 else C
1. A if condition 1 else ( B if condition 2 else C )
2. ( A if condition 1 else B ) if condition 2 else C
ایک ٹھوس مثال درج ذیل ہے۔ پہلا اظہار اس طرح سمجھا جاتا ہے جیسے یہ دوسرا تھا۔
a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative
result = 'negative' if a < 0 else ('positive' if a > 0 else 'zero')
print(result)
# negative
result = ('negative' if a < 0 else 'positive') if a > 0 else 'zero'
print(result)
# zero
فہرست جامع اشارے اور ٹرنری آپریٹرز کو یکجا کرنا
ٹرنری آپریٹر کا ایک کارآمد استعمال اس وقت ہوتا ہے جب فہرست فہمی اشارے میں فہرستوں پر کارروائی کی جاتی ہے۔
ٹرنری آپریٹر اور فہرست فہمی اشارے کو ملا کر، فہرست کے عناصر کو تبدیل کرنا یا حالات کے لحاظ سے کوئی اور پروسیسنگ کرنا ممکن ہے۔
l = ['even' if i % 2 == 0 else i for i in range(10)]
print(l)
# ['even', 1, 'even', 3, 'even', 5, 'even', 7, 'even', 9]
l = [i * 10 if i % 2 == 0 else i for i in range(10)]
print(l)
# [0, 1, 20, 3, 40, 5, 60, 7, 80, 9]
فہرست فہمی اشارے کے بارے میں مزید معلومات کے لیے، درج ذیل مضمون کو دیکھیں۔
گمنام فنکشنز (لیمبڈا ایکسپریشنز) اور ٹرنری آپریٹرز کا مجموعہ
ٹرنری آپریٹر، جسے کسی گمنام فنکشن (لیمبڈا ایکسپریشن) میں بھی مختصراً بیان کیا جا سکتا ہے، مفید ہے۔
get_odd_even = lambda x: 'even' if x % 2 == 0 else 'odd'
print(get_odd_even(1))
# odd
print(get_odd_even(2))
# even
نوٹ کریں کہ، اگرچہ ٹرنری آپریٹر سے غیر متعلق ہے، اوپر کی مثال لیمبڈا اظہار کو ایک نام تفویض کرتی ہے۔ لہٰذا، خودکار چیکنگ ٹولز جیسے Python کا کوڈنگ کنونشن PEP8 ایک انتباہ پیدا کر سکتا ہے۔
اس کی وجہ یہ ہے کہ PEP8 فنکشنز کو نام تفویض کرتے وقت def کے استعمال کی سفارش کرتا ہے۔
PEP8 کا تصور مندرجہ ذیل ہے۔
- لیمبڈا ایکسپریشنز کا استعمال قابل استدلال اشیاء کو بطور دلیل منتقل کرنے کے لیے کیا جاتا ہے، مثال کے طور پر، ان کا نام لیے بغیر
- لیمبڈا اظہار میں، def کا استعمال نام سے وضاحت کرنے کے لیے کریں۔