| کانال توسعهدهندگان پایتون |
صورة
انقر للعرض
انقر للعرض
در کد زیر سعی شده با استفاده از یک decorator ساده، تعداد دفعات صدا زده شدن هر تابع در یک دیکشنری سراسری ذخیره شود، اما بهخاطر یک اشتباه در نحوه استفاده از global، شمارنده بهدرستی عمل نمیکند و ممکن است خطا یا رفتار اشتباه داشته باشد.
سوال:
در این کد چه چیزی باید اصلاح شود تا شمارندهٔ فراخوانی توابع بهدرستی کار کند و call_counts بدون خطا و به شکل صحیح بهروزرسانی شود؟
call_counts = {}
def count_calls(func):
def wrapper(*args, **kwargs):
global call_counts
if func.__name__ not in call_counts:
call_counts = {}
call_counts[func.__name__] = call_counts.get(func.__name__, 0) + 1
return func(*args, **kwargs)
return wrapper
@count_calls
def slow_add(a, b):
return a + b
for _ in range(3):
slow_add(1, 2)
print(call_counts)
🔖 #Python #پایتون
👤 Developix
💎 Channel: @DevelopixPython
3 · 2.6K ·