| کانال توسعهدهندگان پایتون |
Foto
haz clic para mostrar
haz clic para mostrar
در کد زیر سعی شده با استفاده از یک 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 ·