مقالات

پٿون ۽ جديد طريقا، بهتر پروگرامنگ لاءِ ڊنڊر افعال

پٿون هڪ شاندار پروگرامنگ ٻولي آهي، ۽ جيئن ته ثبوت آهي GitHub، پڻ 2022 ۾ ٻي مقبول ترين ٻولي آهي.

Python جا سڀ کان وڌيڪ دلچسپ فائدا پروگرامرز جي وڏي ڪميونٽي آهن.

اهو لڳي ٿو پائٿون ڪنهن به استعمال جي ڪيس لاءِ هڪ پيڪيج آهي.

پٿون پروگرامنگ جي وسيع دنيا ۾، خاصيتن جو هڪ مجموعو آهي، جيڪي اڪثر ڪري شروعات ڪندڙن کان اڻڄاتل آهن، تڏهن به ٻولي جي ماحولياتي نظام ۾ اهم اهميت رکن ٿا.

جادو جا طريقا اڳئين طريقن جو هڪ سيٽ آهنdefiPython ۾ nited جيڪي خاص نحوي ڪارڪردگي مهيا ڪن ٿا. اهي آساني سان انهن جي ڊبل ڊيش جي شروعات ۽ آخر ۾ سڃاتل آهن، جهڙوڪ __init__, __call__, __len__ … وغيره

جادو جا طريقا

جادو جا طريقا اجازت ڏين ٿا ته ڪسٽم شين کي بلٽ ان پٿون جي قسمن سان ملندڙ ڪم ڪرڻ جي.

هن آرٽيڪل ۾، اسان طاقتور ڊنڊر جي ڪم تي ڌيان ڏينداسين. اسان انهن جي مقصد جي ڳولا ڪنداسين ۽ انهن جي استعمال تي بحث ڪنداسين.

ڇا توهان هڪ Python نوان آهيو يا هڪ تجربيڪار پروگرامر، هن آرٽيڪل جو مقصد توهان کي ڊنڊر جي ڪمن جي هڪ جامع ڄاڻ مهيا ڪرڻ آهي، توهان جي پٿون ڪوڊنگ جي تجربي کي وڌيڪ ڪارائتو ۽ لطف اندوز بڻائيندي.

ياد رکو، پٿون جو جادو نه رڳو ان جي سادگي ۽ استحڪام ۾ آهي، پر ان جي طاقتور خاصيتن جهڙوڪ ڊنڊر افعال ۾ پڻ آهي.

__ان ۾__

شايد سڀ کان وڌيڪ بنيادي ڊنڊر فنڪشن. هي جادوئي طريقو آهي جنهن کي پٿون پاڻمرادو ڪال ڪري ٿو جڏهن به اسان نئين شئي ٺاهي (يا جيئن نالو تجويز ڪيو، شروعات ڪريو)__init__

ڪلاس پيزا:
def __init__ (پاڻ، سائيز، ٽوپنگ):
self.size = ماپ
self.toppings = toppings

# ھاڻي اچو ھڪڙو پيزا ٺاھيو
my_pizza = پيزا ('وڏو'، ['پيپروني'، 'مشروم'])

print(my_pizza.size) # ھي پرنٽ ڪندو: وڏو
print(my_pizza.toppings) # هي پرنٽ ڪندو: ['pepperoni', 'mushrooms']

هن مثال ۾، پيزا نالي هڪ ڪلاس ٺاهي وئي آهي. اسان پنھنجي __init__ فنڪشن کي مقرر ڪيو آھي شامل ڪرڻ لاءِ پيٽرولر شامل ڪرڻ لاءِ شروعاتي وقت تي بيان ڪيو وڃي، ۽ انھن کي اسان جي ڪسٽم اعتراض جي ملڪيت طور مقرر ڪيو.

هتي، اهو ڪلاس جي مثال جي نمائندگي ڪرڻ لاء استعمال ڪيو ويندو آهي. تنهن ڪري جڏهن اسان لکندا آهيون self.size = سائيز، اسان چوندا آهيون، "اي، هي پيزا اعتراض هڪ خاصيت جي سائيز آهي size، ۽ مان چاهيان ٿو ته اها هر سائيز هجي جيڪا مون مهيا ڪئي هئي جڏهن مون اعتراض ٺاهيو“.

__str__ ۽ __repr__

__Str__

هي پائٿون جو جادو طريقو آهي جيڪو اسان کي اجازت ڏئي ٿو defiاسان جي حسب ضرورت شيء لاء هڪ وضاحت nite.

جڏهن توهان ڪنهن شئي کي پرنٽ ڪريو يا ان کي استعمال ڪندي اسٽرنگ ۾ تبديل ڪريو str()، پٿون چيڪ ڪريو جيڪڏھن توھان وٽ آھي defiهڪ طريقو اختيار ڪيو __str__ انهي اعتراض جي طبقي لاء.

جيڪڏهن ائين آهي، اهو طريقو استعمال ڪريو اعتراض کي اسٽرنگ ۾ تبديل ڪرڻ لاء.

اسان پنھنجي پيزا مثال کي وڌائي سگھون ٿا ھڪڙي فنڪشن کي شامل ڪرڻ لاء __str__ جيئن ته:

ڪلاس پيزا: def __init__(self, size, toppings): self.size = size self.toppings = toppings def __str__(self): واپس f"A {self.size} پيزا سان {','.join(self.toppings) )}" my_pizza = پيزا('وڏي'، ['پيپروني'، 'مشروم']) پرنٽ(my_pizza) # هي پرنٽ ڪندو: پيپروني سان گڏ هڪ وڏو پيزا، مشروم
__repr__

__str__ فنڪشن ھڪڙو غير رسمي طريقو آھي ھڪڙي اعتراض جي ملڪيت کي بيان ڪرڻ جو. ٻئي طرف، __repr__ استعمال ڪيو ويندو آهي وڌيڪ رسمي، تفصيلي ۽ غير واضح وضاحت مهيا ڪرڻ لاءِ ڪسٽم اعتراض جو.

جيڪڏهن توهان سڏين ٿا repr() ڪنهن شئي تي يا توهان صرف ڪنسول ۾ اعتراض جو نالو لکو، پٿون هڪ طريقو ڳوليندو __repr__.

Se __str__ ايئن ناهي definite، Python استعمال ڪندو __repr__ بيڪ اپ جي طور تي جڏهن اعتراض کي پرنٽ ڪرڻ يا ان کي اسٽرنگ ۾ تبديل ڪرڻ جي ڪوشش ڪريو. تنهنڪري اهو اڪثر ڪري سٺو خيال آهي defiگهٽ ۾ گهٽ ختم __repr__، جيتوڻيڪ توهان نٿا ڪريو defiختم ٿئي ٿو __str__.

هتي اسان ڪيئن ڪري سگهون ٿا defiختم ڪر __repr__ اسان جي پيزا مثال لاء:

ڪلاس پيزا:
def __init__ (پاڻ، سائيز، ٽوپنگ):
self.size = ماپ
self.toppings = toppings

def __repr__ (پاڻ):
واپسي f"Pizza('{self.size}', {self.toppings})"

my_pizza = پيزا ('وڏو'، ['پيپروني'، 'مشروم'])
print(repr(my_pizza)) # هي پرنٽ ڪندو: پيزا('وڏي'، ['پيپروني'، 'مشروم'])

__repr__ توهان کي هڪ اسٽرنگ ڏئي ٿو ته توهان پيزا شئي کي ٻيهر ٺاهڻ لاءِ پٿون ڪمانڊ طور هلائي سگهو ٿا، جڏهن ته __str__ توهان کي وڌيڪ انساني وضاحت ڏئي ٿو. مون کي اميد آهي ته اهو توهان جي مدد ڪري ٿو انهن ڊنڊر طريقن کي ٿورو بهتر.

__شامل ڪريو__

Python ۾، اسان سڀ ڄاڻون ٿا ته اهو ممڪن آهي نمبر شامل ڪرڻ آپريٽر استعمال ڪندي +وانگر 3 + 5.

پر ڇا جيڪڏهن اسان ڪجهه ڪسٽم اعتراض جا مثال شامل ڪرڻ چاهيون ٿا؟

ڊنر فنڪشن __add__ اهو اسان کي صرف اهو ڪرڻ جي اجازت ڏئي ٿو. اهو اسان کي موقعو ڏئي ٿو defiآپريٽر جي رويي کي بهتر ڪريو + اسان جي ذاتي شين تي.

مستقل مزاجي جي مفاد ۾، اچو ته فرض ڪريون ته اسان چاهيون ٿا definit جو رويي + اسان جي پيزا مثال تي. اچو ته چئو ته جڏهن اسان ٻه يا وڌيڪ پيزا گڏ ڪندا آهيون، اهو خودڪار طريقي سان انهن جي سڀني ٽوپنگ کي گڏ ڪندو. ھتي اھو آھي جيڪو اھو نظر اچي سگھي ٿو:

ڪلاس پيزا:
def __init__ (پاڻ، سائيز، ٽوپنگ):
self.size = ماپ
self.toppings = toppings

def __add__ (پاڻ، ٻيا):
جيڪڏهن نه مثال (ٻيو، پيزا):
بلند ڪريو ٽائپ ايرر ("توهان صرف هڪ ٻيو پيزا شامل ڪري سگهو ٿا!")
new_toppings = self.toppings + other.toppings
واپسي پيزا (self.size، new_toppings)

# اچو ته ٻه پيزا ٺاهيون
pizza1 = پيزا ('وڏو'، ['پيپروني'، 'مشروم'])
pizza2 = پيزا ('وڏو'، ['زيتون'، 'انناس'])

# ۽ ھاڻي اچو ته "شامل ڪريو" انھن کي
combined_pizza = pizza1 + pizza2

print(combined_pizza.toppings) # هي پرنٽ ڪندو: ['pepperoni', 'mushrooms', 'olives', 'pineapple']

ساڳيءَ طرح ڊنر __add__، اسان پڻ ڪري سگهون ٿا definite ٻيا رياضياتي افعال جهڙوڪ __sub__ (آپريٽر کي استعمال ڪندي گھٽائڻ سان -) اي __mul__ (آپريٽر استعمال ڪندي ضرب ڪرڻ لاءِ *).

__لن__

هي ڊنر جو طريقو اسان کي اجازت ڏئي ٿو definish ڪهڙو ڪم آهي len() اسان جي ڪسٽمائيز شين لاء واپس ڪرڻ گهرجي.

Python استعمال ڪري ٿو len() ڊيٽا جي جوڙجڪ جي ڊيگهه يا سائيز حاصل ڪرڻ لاء جيئن ته فهرست يا اسٽرنگ.

اسان جي مثال جي حوالي سان، اسان اهو چئي سگهون ٿا ته پيزا جي "ڊگھائي" ان جي ٽوپنگ جو تعداد آهي. هتي اهو آهي ته اسان ان کي ڪيئن لاڳو ڪري سگهون ٿا:

ڪلاس پيزا:
def __init__ (پاڻ، سائيز، ٽوپنگ):
self.size = ماپ
self.toppings = toppings

def __len__ (پاڻ):
واپسي لين (self.toppings)

# اچو ته هڪ پيزا ٺاهيو
my_pizza = پيزا ('وڏو'، ['پيپروني'، 'مشروم'، 'زيتون'])

print(len(my_pizza)) # ھي پرنٽ ڪندو: 3

__len__ طريقي ۾، اسان صرف لسٽ جي ڊيگهه واپس ڪندا آهيون toppings. هاڻي ، len(my_pizza) اهو اسان کي ٻڌائيندو ته ان تي ڪيترا ٽوپيون آهن my_pizza.

__ عمل __

هي ڊنڈر طريقو شين کي ٻيهر ڪرڻ جي اجازت ڏئي ٿو، يعني اهو لوپ لاء استعمال ڪري سگهجي ٿو.

هن کي ڪرڻ لاء، اسان کي پڻ گهرجي defiفنڪشن ختم ڪريو __next__، هن لاء استعمال ڪيو ويندو آهي defiرويي کي ختم ڪريو جيڪو ايندڙ قيمت کي ٻيهر ڪرڻ ۾ واپس ڪرڻ گهرجي. ان کان علاوه، اهو پڻ اشارو ڏيڻ گهرجي ته ان واقعي تي ٻيهر قابل ذڪر آهي ته تسلسل ۾ وڌيڪ عناصر نه آهن. اسان عام طور تي هي حاصل ڪريون ٿا هڪ استثنا بلند ڪندي StopIteration.

اسان جي پيزا مثال لاءِ، اچو ته چئو ته اسان ٽوپين کي ٻيهر ڏيڻ چاهيون ٿا. اسان پنهنجي پيزا ڪلاس کي ٻيهر قابل بڻائي سگهون ٿا defiطريقو ڏيڻ __iter__:

ڪلاس پيزا:
def __init__ (پاڻ، سائيز، ٽوپنگ):
self.size = ماپ
self.toppings = toppings

def __iter__ (پاڻ):
self.n = 0
پاڻ کي واپس ڪرڻ

def __اڳيون__(پاڻ):
جيڪڏھن self.n <len(self.toppings):
نتيجو = خود ٽاپنگ[self.n]
self.n += 1
واپسي جو نتيجو
ٻيو:
StopIteration وڌايو

# اچو ته هڪ پيزا ٺاهيو
my_pizza = پيزا ('وڏو'، ['پيپروني'، 'مشروم'، 'زيتون'])

# ۽ هاڻي اچو ته ان تي ٻيهر ورجائي
my_pizza ۾ ٽاپ ڪرڻ لاءِ:
ڇپائي (ٽاپنگ)

انهي حالت ۾، لوپ ڪال لاء __iter__، جيڪو هڪ انسداد شروع ڪري ٿو (self.n) ۽ پيزا اعتراض پاڻ کي واپس ڪري ٿو (self).

پوء، لوپ ڪالن لاء __next__ هر ٽاپنگ کي موڙ ۾ حاصل ڪرڻ لاء.

جڏهن __next__ سڀ مصالحو واپس ڪيو، StopIteration اهو هڪ استثنا اڇلائي ٿو ۽ لوپ لاءِ هاڻي ڄاڻي ٿو ته هتي وڌيڪ ٽاپنگ نه آهن ۽ انهي ڪري ٻيهر عمل کي ختم ڪري ڇڏيندو.

Ercole Palmeri

جدت نيوز ليٽر
جدت تي سڀ کان اهم خبر نه وڃايو. انهن کي اي ميل ذريعي حاصل ڪرڻ لاء سائن اپ ڪريو.
ٽيگ: سٿان

تازيون مضمونون

Augmented Reality ۾ جديد مداخلت، ڪيٽينيا پولي ڪلينڪ ۾ ايپل ناظر سان

ڪيٽينيا پولي ڪلينڪ ۾ ايپل ويزن پرو ڪمرشل ناظر استعمال ڪندي هڪ چشمي جو آپريشن ڪيو ويو…

3 2024

ٻارن لاءِ رنگين صفحن جا فائدا - سڀني عمرن لاءِ جادوءَ جي دنيا

رنگ سازي ذريعي سٺي موٽر صلاحيتن کي ترقي ڪرڻ ٻارن کي وڌيڪ پيچيده صلاحيتن لاء تيار ڪري ٿو جهڙوڪ لکڻ. رنگ ڏيڻ…

2 2024

مستقبل هتي آهي: ڪيئن شپنگ انڊسٽري عالمي معيشت ۾ انقلاب آڻيندي آهي

بحري شعبي هڪ حقيقي عالمي معاشي طاقت آهي، جيڪا 150 بلين مارڪيٽ جي طرف نيويگيٽ ڪئي آهي ...

1 2024

پبلشرز ۽ OpenAI مصنوعي ذهانت پاران پروسيس ڪيل معلومات جي وهڪري کي منظم ڪرڻ لاءِ معاهدن تي دستخط ڪن ٿا

گذريل سومر، فنانشل ٽائمز OpenAI سان هڪ ڊيل جو اعلان ڪيو. ايف ٽي پنهنجي عالمي سطح جي صحافت کي لائسنس ڏئي ٿو ...

30 اپريل 2024

پنھنجي ٻوليءَ ۾ جدت پڙھو

جدت نيوز ليٽر
جدت تي سڀ کان اهم خبر نه وڃايو. انهن کي اي ميل ذريعي حاصل ڪرڻ لاء سائن اپ ڪريو.

اسان جي تابعداري ڪريو