$lang['tuto'] = "سبق"; ?>$lang['tuto'] = "سبق"; ?> Python میں vars() کے ساتھ متحرک متغیر

Python میں vars() کے ساتھ متحرک متغیر تخلیق میں خامیوں کو سمجھنا

Python میں vars() کے ساتھ متحرک متغیر تخلیق میں خامیوں کو سمجھنا
Python میں vars() کے ساتھ متحرک متغیر تخلیق میں خامیوں کو سمجھنا

ہم vars() کا استعمال کرتے ہوئے متحرک طور پر ازگر کے متغیرات تک کیوں نہیں پہنچ سکتے؟

Python میں متغیرات کو متحرک طور پر بنانا بااختیار محسوس کر سکتا ہے، خاص طور پر جب آپ کوڈ کی لچک کو بہتر بنانے یا ڈیٹا کو زیادہ لچکدار طریقے سے ہینڈل کرنے کی کوشش کر رہے ہوں۔

تصور کریں کہ آپ ایک فہرست کو لوپ کر رہے ہیں اور مخصوص ناموں کے ساتھ متغیرات کی ایک سیریز بنانا چاہتے ہیں — صاف لگتا ہے، ٹھیک ہے؟ دی vars() فنکشن ایسے کاموں کے لیے ایک پرکشش آپشن ہے کیونکہ یہ موجودہ مقامی متغیرات کی لغت تک رسائی حاصل کر سکتا ہے۔

تاہم، یہ نقطہ نظر جتنا بدیہی لگتا ہے، یہ بعض اوقات غیر متوقع طور پر لے جاتا ہے۔ غلطیاں. اگر آپ کو اس مسئلے کا سامنا ہے، تو آپ اکیلے نہیں ہیں! بہت سے ڈویلپر حیران ہوتے ہیں جب ان کا کوڈ متغیر بازیافت کے مقام پر ناکام ہوجاتا ہے۔

آئیے کھودتے ہیں کیوں استعمال کرتے ہیں۔ vars() متحرک طور پر لوپس کے اندر آپ کی توقع کے مطابق برتاؤ نہیں ہوسکتا ہے، مسئلہ کو واضح کرنے کے لیے چند حقیقی مثالوں کے ساتھ 🎢۔ یہ دیکھنے کے لیے تیار ہیں کہ vars() فنکشن ان مسائل کا سبب کیوں ہو سکتا ہے؟ پڑھیں!

حکم استعمال کی مثال
vars() موجودہ مقامی علامت ٹیبل کی لغت تک رسائی یا اس میں ترمیم کرنے کے لیے استعمال کیا جاتا ہے۔ مثال کے طور پر، vars()['var_name'] = قدر موجودہ دائرہ کار میں ایک متغیر نام کو متحرک طور پر ایک قدر تفویض کرتی ہے۔
exec() رن ٹائم پر متغیر ناموں کی تخلیق اور ترمیم کی اجازت دیتے ہوئے، Python کوڈ کے طور پر ایک متحرک طور پر تعمیر شدہ سٹرنگ کو انجام دیتا ہے۔ مثال کے طور پر، exec("var_name = 1") قدر 1 کے ساتھ ایک متغیر var_name بنائے گا۔
get() (Dictionary method) اگر کلید موجود نہیں ہے تو اختیاری ڈیفالٹ ریٹرن ویلیو کے ساتھ، لغت میں مخصوص کلید سے وابستہ قدر کو بازیافت کرتا ہے۔ یہاں لغت کی شکل میں متحرک طور پر بنائے گئے "متغیرات" تک محفوظ رسائی کے لیے استعمال کیا جاتا ہے، جیسا کہ dynamic_vars.get('abc1', None) میں۔
f-strings فارمیٹ شدہ سٹرنگ لٹریلز سٹرنگ لٹریلز کے اندر تاثرات کو سرایت کرنے کے لیے استعمال ہوتے ہیں۔ یہاں، f'abc{a[i]}' متحرک طور پر لوپ تکرار کی بنیاد پر متغیر نام تیار کرتا ہے۔
unittest library ایک ٹیسٹنگ فریم ورک جو Python میں یونٹ ٹیسٹ لکھنے کے لیے استعمال ہوتا ہے۔ unittest.TestCase کلاس کوڈ کی توثیق کرنے کے لیے مختلف اسسٹ کے طریقے مہیا کرتی ہے، جیسے self.asssertEqual()۔
unittest.main() یونٹیسٹ کلاس میں بیان کردہ تمام ٹیسٹ کیسز کو چلاتا ہے جب اسکرپٹ کو براہ راست عمل میں لایا جاتا ہے، حل کے افعال پر ٹیسٹوں کا ایک مجموعہ شروع کرتا ہے۔
self.assertEqual() یونٹ ٹیسٹ میں ٹیسٹ کیسز میں دو قدروں کا موازنہ کرنے کے لیے استعمال کیا جاتا ہے۔ مثال کے طور پر، self.asssertEqual(test_with_dict(['1', '2']), [1, 1]) آؤٹ پٹ متوقع اقدار سے میل کھاتا ہے۔
f"results.append(abc{a[i]})" (with exec()) ایک فہرست میں متحرک طور پر بنائے گئے متغیرات کو شامل کرنے کے لیے exec() کو f-strings کے ساتھ جوڑتا ہے۔ مثال کے طور پر، exec(f"results.append(abc{a[i]})") متحرک طور پر بنائے گئے متغیرات تک رسائی حاصل کرتا ہے اور ان کی اقدار کو نتائج میں شامل کرتا ہے۔
for i in range(len(a)) (looping technique) ایک فہرست a کے اشاریہ پر اعادہ کرنے کے لیے استعمال کیا جاتا ہے، جس سے ہر اعادہ میں متحرک متغیر ناموں اور متعلقہ کارروائیوں کی تخلیق کی اجازت ملتی ہے۔

Python کے vars() فنکشن کے ساتھ ڈائنامک ویری ایبل تخلیق کو سمجھنا

ازگر کا فنکشن vars() یہ اکثر ان ڈویلپرز کے لیے انتخاب ہوتا ہے جنہیں موجودہ مقامی متغیرات تک رسائی حاصل کرنے اور رن ٹائم کے وقت متحرک طور پر متغیر نام بنانے کی ضرورت ہوتی ہے۔ فراہم کردہ مثال میں، فنکشن کا استعمال فہرست کے عناصر کی بنیاد پر ناموں کے ساتھ متغیر بنانے کے لیے کیا جاتا ہے، جو ہمیں 'abc1'، 'abc2'، اور 'abc3' جیسے متغیر ناموں کو خود بخود پیدا کرنے کی اجازت دیتا ہے۔ اگرچہ یہ آسان لگ سکتا ہے، اس نقطہ نظر میں کچھ حدود ہیں، خاص طور پر جب ہم بعد میں متحرک طور پر ان متغیرات کو بازیافت کرنے کی کوشش کرتے ہیں۔ اس معاملے میں غلطیوں کی ایک بڑی وجہ یہ ہے۔ vars() اصل مقامی دائرہ کار کو اس طریقے سے تبدیل نہیں کرتا ہے جو کوڈ کے مختلف حصوں میں مستقل رہتا ہے۔ یہ واپسی کے بیانات میں غیر متوقع "متغیر نہیں ملا" کی خرابیوں کا باعث بن سکتا ہے۔

ہمارے نقطہ نظر میں، ہم نے ابتدائی طور پر استعمال کیا a لوپ کے لئے فہرست میں ہر عنصر کے ذریعے اعادہ کرنا اور ہر فہرست عنصر کے ساتھ سٹرنگ "abc" کو جوڑ کر متحرک طور پر متغیر نام تیار کرنا۔ مثال کے طور پر، اگر فہرست ['1'، '2'، '3'] ہے، تو لوپ 'abc1'، 'abc2'، اور 'abc3' نامی متغیرات بنائے گا۔ لیکن جب تک vars() ان اقدار کو ذخیرہ کرنے میں ہماری مدد کرتا ہے، ان کے ساتھ مسلسل بازیافت کرتا ہے۔ vars() واپسی کے مرحلے کے دوران مشکل ہے کیونکہ یہ متغیرات ہماری توقع کے مطابق قابل رسائی نہیں رہ سکتے ہیں۔ اس سے بچنے کے لیے، ایک متبادل طریقہ یہ ہے کہ ان پیدا شدہ متغیرات کو ذخیرہ کرنے کے لیے لغت کا استعمال کیا جائے کیونکہ لغات قدرتی طور پر متحرک کلیدی قدر ذخیرہ کرنے کے لیے بنائی گئی ہیں۔

ہم نے بھی استعمال کرتے ہوئے دریافت کیا۔ exec() متغیرات کو متحرک طور پر بیان کرنے کے دوسرے طریقے کے طور پر کام کرتا ہے۔ دی exec() فنکشن ہمیں Python کوڈ کی ایک سٹرنگ کو چلانے کی اجازت دیتا ہے، کوڈ سٹرنگ کے اندر متغیر نام کو ایمبیڈ کر کے رن ٹائم پر متغیر تخلیق کو قابل بناتا ہے۔ تاہم، ممکنہ حفاظتی خطرات اور کارکردگی کے اخراجات کی وجہ سے یہ نقطہ نظر مخصوص معاملات تک محدود ہے۔ مثال کے طور پر، ایسے ماحول میں جہاں صارف کا ان پٹ شامل ہوتا ہے، exec() کا استعمال اگر احتیاط سے نہ سنبھالا جائے تو خطرات کھل سکتے ہیں۔ ہماری مثال میں، exec() کو ایک کنٹرول شدہ ترتیب میں استعمال کیا جاتا ہے جہاں ہم ان پٹ کے بارے میں پراعتماد ہوتے ہیں، اور یہ متحرک متغیرات کو تخلیق کرنے کا کام کرتا ہے۔ پھر بھی، یہ طریقہ عام طور پر گریز کیا جاتا ہے جب تک کہ محفوظ ایپلی کیشنز کے لیے بالکل ضروری نہ ہو۔

اس حل کے ایک اور اہم پہلو میں تحریر شامل ہے۔ یونٹ ٹیسٹ اس بات کی تصدیق کرنے کے لیے کہ ہر طریقہ (vars()، ڈکشنری، اور exec()) حسب منشا کام کرتا ہے۔ Python کی Unitest لائبریری کا استعمال کرتے ہوئے، ہم ٹیسٹ کیسز ترتیب دیتے ہیں تاکہ اس بات کو یقینی بنایا جا سکے کہ ہر نقطہ نظر سے متوقع قدریں مستقل طور پر واپس آئیں۔ یونٹیسٹ فریم ورک مفید دعوے فراہم کرتا ہے، جیسے assertEqual، جو متوقع نتیجہ کے ساتھ فنکشن آؤٹ پٹ کا موازنہ کرتا ہے۔ مثال کے طور پر، ہمارا ٹیسٹ اس بات کی تصدیق کرتا ہے کہ لغت پر مبنی فنکشن کو اقدار کی فہرست کے ساتھ چلانے سے توقع کے مطابق [1,1,1] واپس آتا ہے۔ یونٹ ٹیسٹس کا استعمال کرکے، ہم مختلف منظرناموں میں اپنے کوڈ کی مضبوطی کو تیزی سے توثیق کر سکتے ہیں اور ابتدائی طور پر کسی بھی تضاد کی نشاندہی کر سکتے ہیں۔ مجموعی طور پر، یہ ٹیسٹ اس بات کو یقینی بنا کر کوڈنگ کے بہترین طریقوں کو تقویت دیتے ہیں کہ ہمارے فنکشنز ایج کیسز کو مؤثر اور قابل اعتماد طریقے سے ہینڈل کرتے ہیں۔

حل کا جائزہ: Python میں vars() کا استعمال کرتے ہوئے متحرک متغیر تخلیق کو ڈیبگ کرنا

Python میں بیک اینڈ اسکرپٹ، متغیرات کو متحرک طور پر منظم کرنے کے لیے vars() اور متبادل طریقوں کا استعمال کرتے ہوئے

نقطہ نظر 1: ڈائنامک ویری ایبل اسائنمنٹ کے لیے vars() کا استعمال (احتیاط کے ساتھ)

vars() کا استعمال کرتے ہوئے متحرک متغیر تفویض، غلطی سے نمٹنے اور ماڈیولرائزیشن کے ساتھ بہتر

def test_with_vars(a):
    # Initialize a dictionary to track generated variables
    for i in range(len(a)):
        # Dynamically assign variable names and values
        vars()[f'abc{a[i]}'] = 1
    # Collect dynamically assigned values and return
    return [vars().get(f'abc{a[i]}', None) for i in range(len(a))]

# Test case to verify solution
b = ['1', '2', '3']
print(test_with_vars(b))  # Expected output: [1, 1, 1]

نقطہ نظر 2: vars() کی بجائے ڈکشنریوں کا استعمال

متغیر ناموں کو متحرک طور پر منظم کرنے کے لیے لغت کا استعمال کرتے ہوئے متبادل نقطہ نظر

def test_with_dict(a):
    # Use a dictionary to simulate dynamic variables
    dynamic_vars = {}
    for i in range(len(a)):
        # Use dictionary keys as dynamic variable names
        dynamic_vars[f'abc{a[i]}'] = 1
    # Return list of values using dictionary keys
    return [dynamic_vars.get(f'abc{a[i]}', None) for i in range(len(a))]

# Test case for dictionary-based solution
print(test_with_dict(b))  # Expected output: [1, 1, 1]

نقطہ نظر 3: متغیرات کو متحرک طور پر بیان کرنے کے لیے exec() کا استعمال

ایک محدود دائرہ کار میں متغیرات کی وضاحت کے لیے exec() کا استعمال کرتے ہوئے حل

def test_with_exec(a):
    # Use exec to create dynamic variables
    for i in range(len(a)):
        exec(f"abc{a[i]} = 1")
    # Verify by returning values
    results = []
    for i in range(len(a)):
        # Access dynamically created variables
        exec(f"results.append(abc{a[i]})")
    return results

# Test case for exec-based solution
print(test_with_exec(b))  # Expected output: [1, 1, 1]

ہر حل کے لیے یونٹ ٹیسٹنگ

Python میں ہر نقطہ نظر کی توثیق کرنے کے لیے سادہ یونٹ ٹیسٹ

import unittest

class TestDynamicVariableAssignment(unittest.TestCase):
    def test_vars_method(self):
        self.assertEqual(test_with_vars(['1', '2', '3']), [1, 1, 1])
        
    def test_dict_method(self):
        self.assertEqual(test_with_dict(['1', '2', '3']), [1, 1, 1])

    def test_exec_method(self):
        self.assertEqual(test_with_exec(['1', '2', '3']), [1, 1, 1])

# Run the tests
if __name__ == "__main__":
    unittest.main()

Python میں متحرک متغیر تخلیق کے متبادل کی تلاش

Python میں کام کرتے وقت، بہت سے ڈویلپر خود کو متحرک طور پر متغیر بنانے اور ان تک رسائی کے طریقے تلاش کرتے ہیں۔ دی vars() فنکشن ان اولین ٹولز میں سے ایک ہے جو متغیرات کو متحرک طور پر ہینڈل کرنے کی کوشش کرتے ہیں۔ تاہم، جیسا کہ ہم نے دیکھا ہے، متغیر ہیرا پھیری کے لیے مکمل طور پر vars() پر انحصار کرنے سے چیلنجز متعارف ہوتے ہیں، خاص طور پر بازیافت اور مسلسل رسائی کے ساتھ۔ اس کے بجائے، ڈویلپرز کو اکثر زیادہ کنٹرول شدہ اور قابل اعتماد متبادلات استعمال کرنے کی ترغیب دی جاتی ہے، جیسے لغات، جو ڈیٹا تک رسائی کو آسان بناتے ہیں اور رن ٹائم کی غلطیوں کو کم کرتے ہیں۔ مثال کے طور پر، تخلیق شدہ متغیرات کو ایک لغت میں کلیدی قدر کے جوڑوں کے طور پر ذخیرہ کرنے سے آپ پیچیدہ کاموں سے بچ سکتے ہیں اور اسکرپٹ میں مستقل مزاجی کو یقینی بناتا ہے۔

لغات کے علاوہ، عالمی () فنکشن ایک اور آپشن ہے جو متحرک طور پر تیار کردہ متغیرات کو منظم کرنے کے لیے استعمال کیا جا سکتا ہے۔ vars() کے برعکس، جو بنیادی طور پر مقامی علامت ٹیبل تک رسائی حاصل کرتا ہے، globals() ماڈیول کی سطح پر کام کرتا ہے، جس سے متغیرات کو پورے پروگرام میں قابل رسائی بنایا جاتا ہے۔ مثال کے طور پر، استعمال کرتے ہوئے عالمی دائرہ کار میں ایک متغیر پیدا کرنا globals()['new_var'] = 'Hello' اس بات کو یقینی بناتا ہے کہ new_var پورے ماڈیول میں قابل رسائی ہے۔ تاہم، عالمی دائرہ کار میں غیر ارادی ضمنی اثرات سے بچنے کے لیے گلوبلز() کو بڑے منصوبوں میں احتیاط کے ساتھ استعمال کیا جانا چاہیے۔ اس نے کہا، یہ چھوٹے پیمانے کے منصوبوں کے لیے مددگار رہتا ہے جہاں عالمی متغیر تک رسائی ضروری ہے۔

جب متحرک ناموں کے ساتھ متعدد صفات کو منظم کرنے کی ضرورت ہو تو کچھ ڈویلپرز Python کی کلاسز کا رخ بھی کرتے ہیں۔ استعمال کرکے setattr()، آپ رن ٹائم کے وقت کلاس مثالوں کو نئی خصوصیات تفویض کر سکتے ہیں، مؤثر طریقے سے کسی چیز کے دائرہ کار میں "متحرک متغیرات" بنا سکتے ہیں۔ مثال کے طور پر، دوڑنا setattr(obj, 'attribute_name', value) آبجیکٹ کو ایک نیا وصف تفویض کرتا ہے، ایک کنٹرول شدہ ماحول کے اندر لچکدار ڈیٹا ہینڈلنگ کو قابل بناتا ہے۔ یہ نقطہ نظر دونوں جہانوں میں بہترین پیش کرتا ہے: متحرک متغیر نام اور انکیپسولیشن، جو ڈیٹا کو منظم رکھتا ہے اور گلوبل() یا vars() کے استعمال میں عام مسائل کو روکتا ہے۔ vars() کے ان متبادلات کو اپنانا متحرک ڈیٹا کے انتظام کے لیے مزید منظم اختیارات فراہم کرتا ہے 🧩۔

Python میں متحرک متغیرات کے بارے میں عام سوالات

  1. vars() کبھی کبھی متحرک متغیرات کے لیے کیوں کام نہیں کرتا؟
  2. vars() کا مقصد مقامی علامت ٹیبل تک رسائی حاصل کرنا ہے لیکن ہو سکتا ہے کہ متغیرات کو اسی طرح سے متحرک طور پر برقرار نہ رکھے جس طرح لغات یا گلوبلز کرتے ہیں۔ متغیرات تفویض اور بازیافت دونوں کے لیے vars() کا استعمال دائرہ کار اور بازیافت کی خرابیوں کا باعث بن سکتا ہے۔
  3. Python میں vars() اور globals() میں کیا فرق ہے؟
  4. جبکہ vars() عام طور پر مقامی سیاق و سباق میں استعمال ہوتا ہے، globals() عالمی علامت ٹیبل تک رسائی حاصل کرتا ہے۔ اس کا مطلب یہ ہے کہ globals() کا استعمال کرتے ہوئے بنائے گئے متغیر پورے ماڈیول میں دستیاب ہیں، جو اسے کچھ قسم کے ڈائنامک اسائنمنٹس کے لیے زیادہ قابل اعتماد بناتے ہیں۔
  5. کیا exec() کو متحرک متغیر کے لیے محفوظ طریقے سے استعمال کیا جا سکتا ہے؟
  6. جبکہ exec() رن ٹائم پر متغیر تخلیق کی اجازت دیتا ہے، اگر غلط استعمال کیا جائے تو یہ حفاظتی خطرات کے ساتھ آتا ہے، خاص طور پر صارف کے ان پٹ کے ساتھ۔ یہ عام طور پر صرف کنٹرول شدہ اور اچھی طرح سے سمجھے جانے والے ڈیٹا کے لیے تجویز کیا جاتا ہے۔
  7. متحرک صفات کے لیے setattr() استعمال کرنے کی مثال کیا ہے؟
  8. استعمال کرنا setattr() کلاس مثال کے ساتھ آپ کو متحرک طور پر صفات تفویض کرنے دیتا ہے، جیسے setattr(obj, 'new_attr', value)، جو اس مثال کے لیے 'new_attr' کو ایک درست وصف بناتا ہے۔
  9. کیا vars() اور لغات کے درمیان کارکردگی کا فرق ہے؟
  10. جی ہاں، ڈائنامک ڈیٹا کے نظم و نسق کے لیے لغات اکثر تیز اور زیادہ قابل اعتماد ہوتے ہیں، کیونکہ وہ کلیدی قدر ذخیرہ کرنے کے لیے ڈیزائن کیے گئے ہیں اور vars() کے برعکس، بازیافت کے لیے بہتر بنائے گئے ہیں، جو کہ زیادہ خاص ہے۔
  11. vars() پر لغت کو ترجیح کیوں دی جا سکتی ہے؟
  12. لغتیں زیادہ پیش قیاسی ہوتی ہیں اور دائرہ کار کے مسائل کو روکتی ہیں جو vars() کی وجہ سے ہو سکتی ہیں، جو انہیں ڈیٹا کو متحرک طور پر منظم کرنے کے لیے ایک عملی انتخاب بناتی ہیں۔
  13. getattr() کا setattr() سے کیا تعلق ہے؟
  14. getattr() کلاس مثال سے ایک وصف بازیافت کرتا ہے اگر یہ موجود ہے، اس کے ساتھ تفویض کردہ اقدار تک متحرک رسائی کی پیشکش کرتا ہے setattr(). یہ کسی شے کے دائرہ کار میں پرواز کے دوران ڈیٹا تک رسائی کے لیے مفید ہے۔
  15. متحرک متغیرات کے ساتھ کام کرتے وقت بہترین طریقے کیا ہیں؟
  16. سادگی اور وشوسنییتا کے لیے لغات یا سٹرکچرڈ ڈیٹا کنٹینرز کا انتخاب کریں۔ vars() اور globals() کو ایسے معاملات کے لیے محفوظ رکھیں جہاں ڈیٹا کو سنبھالنے کے روایتی طریقے ممکن نہیں ہیں۔
  17. کیا گلوبلز() کا استعمال کارکردگی کو متاثر کرتا ہے؟
  18. جی ہاں، کثرت سے استعمال globals() کارکردگی کو سست کر سکتا ہے اور ڈیبگنگ چیلنجز متعارف کرا سکتا ہے۔ اسے تھوڑا اور صرف اس صورت میں استعمال کرنا بہتر ہے جب عالمی گنجائش ضروری ہو۔
  19. کیا میں بہتر نتائج کے لیے setattr() کو دوسرے طریقوں کے ساتھ جوڑ سکتا ہوں؟
  20. ہاں، setattr() کلاسوں کے اندر اچھی طرح کام کرتا ہے جب لغت یا فہرستوں کے ساتھ استعمال کیا جاتا ہے، جس سے آپ کو لچک اور انکیپسولیشن ملتی ہے جو منظم، دوبارہ قابل استعمال کوڈ کے لیے موزوں ہے۔

Python میں متحرک متغیرات کو سنبھالنے کے بارے میں حتمی خیالات

جبکہ vars() متغیرات کو متحرک طور پر منظم کرنے کے لیے ایک خوبصورت حل کی طرح لگتا ہے، اس کی حدود ہیں جو اسے پیچیدہ کوڈ یا لوپس میں ناقابل اعتبار بناتی ہیں۔ لغات کا استعمال کرتے ہوئے یا عالمی () زیادہ متوقع نتائج فراہم کرتا ہے اور عام نقصانات سے بچتا ہے۔

جیسے نقطہ نظر کو یکجا کرکے exec() اور setattr()، ڈویلپرز زیادہ کنٹرول کے ساتھ متحرک ڈیٹا کا نظم کر سکتے ہیں۔ ان متبادلات کے ساتھ تجربہ کرنے سے یہ یقینی ہو جائے گا کہ آپ کا کوڈ موثر اور پیچیدہ تقاضوں کے مطابق موافق ہے، جو اسے حقیقی دنیا کی ایپلی کیشنز کے لیے موزوں بناتا ہے۔ 🚀

Python's vars() فنکشن کے لیے حوالہ جات اور اضافی وسائل
  1. کی تفصیلی وضاحت vars() فنکشن اور یہ مقامی متغیر لغت کا انتظام کیسے کرتا ہے: ازگر کی سرکاری دستاویزات
  2. متحرک متغیر انتظام کے متبادل طریقوں کی بصیرت: اصلی ازگر - ازگر کی لغات
  3. ازگر کی کلاسوں میں لچکدار ڈیٹا ہینڈلنگ کے لیے exec() اور setattr() کا استعمال: Geeks for Geeks - Python میں Exec
  4. متحرک متغیر تخلیق کے لیے vars() اور globals() کی حدود کو سمجھنا: DataCamp - Python میں دائرہ کار اور متغیرات