فراخوانی تابعی از یک ماژول با استفاده از نام آن (به صورت رشته) در پایتون

mohsen1 سال قبل
ارسال شده در
python

در صورتی که بخواهید تابعی را از یک ماژول با استفاده از نام آن که به صورت یک رشته است، فراخوانی کنید، چندین روش وجود دارد:

استفاده از getattr

یک روش ساده برای دستیابی به تابع موردنظر، استفاده از getattr است. ابتدا ماژول مورد نظر را لود می کنید و سپس با استفاده از getattr می‌توانید تابع را بر اساس نام آن دریافت کنید. به عنوان مثال:

      import foo
bar = getattr(foo, 'bar')  # دریافت تابع bar از ماژول foo
result = bar()  # فراخوانی تابع

    

وارد کردن ماژول به صورت دینامیک

در صورتی که نام ماژول شما در زمان اجرا مشخص می شود، می‌توانید از تابع __import__ برای وارد کردن ماژول استفاده کنید:

      module = __import__('foo')  # وارد کردن ماژول foo
func = getattr(module, 'bar')  # دریافت تابع bar از ماژول
func()  # فراخوانی تابع

    

با این حال، توجه داشته باشید که استفاده از __import__ معمولاً توصیه نمی‌شود و برای شرایط خاصی که نام ماژول در زمان اجرا مشخص است، مناسب است.

استفاده از importlib

به عنوان روش جایگزین برای __import__، می‌توانید از importlib.import_module استفاده کنید که روش بهتری برای وارد کردن ماژول‌ها به حساب می‌آید:

      import importlib
module = importlib.import_module('foo')  # وارد کردن ماژول foo
func = getattr(module, 'bar')  # دریافت تابع bar
func()  # فراخوانی تابع

    
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!