عملیات بالا قادر است یک خطر بسیار اساسی باشد به این دلیل طراحی اپلیکیشن در مشهد که استفاده کننده قادر است آرگومان ها را به صورت تحت به توابع خویش بیفزاید:
# A user\'s application, poorly-written.
move(\'north\', \'slither\', False, True)
در حالتیکه استفاده کننده این چنین آرگومان ها را بیفزاید چه اتفاقی می افتد؟ با این شغل در ورژن مهم آپ دیت رسانی آجل شما از یک پارامتر مانند “turbo” خلاص میشوید؟
# Your library code, next major version. "turbo" is deleted.
def move(direction,
mode=\'slither\',
extra_sinuous=False,
hail_lyft=False):
# ...
# A user\'s application, poorly-written.
move(\'north\', \'slither\', False, True)
نکاتی اساسی درباره قطعه کد بالا و فرایند حذف یک پارامتر
کدی که به وسیله مخاطب درج شده میباشد همچنان کامپایل میگردد کهاین قضیه میتواند اذیت کننده باشد. روی هم رفته حذف یک پارامتر از توابع api مستلزم یکسری مرحله است، مرحله اولیه این میباشد که شما بتوانید پارامتر توربو را خنثی فرمائید، اینجانب برای ایفا این شغل عشق مند به تکنیک تحت میباشم که تشخیص میدهد که آیا کدی که بوسیله مخاطب درج شده میباشد بهاین پارامتر متعلق میباشد یا این که نه؟
# Your library code.
_turbo_default = object()
def move(direction,
mode=\'slither\',
turbo=_turbo_default,
extra_sinuous=False,
hail_lyft=False):
if turbo is not _turbo_default:
warnings.warn(
"\'turbo\' is deprecated",
DeprecationWarning,
stacklevel=2)
else:
# The old default.
turbo = False
با این حالا یوزرها شما ممکن میباشد توجهی به هشدارها نداشته باشند، هشدارها خیلی بلند نیستند، آن ها میتوانند در فولدر های لاگ گم گردیده و یا این که نادیده گرفته شوند، یوزرها ممکن میباشد فارغ از اگاهی مبادرت به، آپ دیت رسانی api شما نمایند که پارامتر توربو را در آن حذف گردیدهاست. کد آن ها میتواند سوای هیچ سیرتکامل خطایی جاری ساختن خواهد شد و عملیات اشتباهی را ایفا دهد. همانگونه که zen پایتون میگوید: " اشتباهات اصلا نباید فارغ از جلب اعتنا ارسال شوند". براین اساس شما برای اینکه اعتنا استفاده کننده api خویش را جلب فرمایید می بایست این اشتباهات را به طور بدیهی اعلام فرمائید.
عملیات بالا قادر است یک خطر بسیار اساسی باشد به این دلیل طراحی اپلیکیشن در مشهد که استفاده کننده قادر است آرگومان ها را به صورت تحت به توابع خویش بیفزاید:
# A user\'s application, poorly-written.
move(\'north\', \'slither\', False, True)
در حالتیکه استفاده کننده این چنین آرگومان ها را بیفزاید چه اتفاقی می افتد؟ با این شغل در ورژن مهم آپ دیت رسانی آجل شما از یک پارامتر مانند “turbo” خلاص میشوید؟
# Your library code, next major version. "turbo" is deleted.
def move(direction,
mode=\'slither\',
extra_sinuous=False,
hail_lyft=False):
# ...
# A user\'s application, poorly-written.
move(\'north\', \'slither\', False, True)
نکاتی اساسی درباره قطعه کد بالا و فرایند حذف یک پارامتر
کدی که به وسیله مخاطب درج شده میباشد همچنان کامپایل میگردد کهاین قضیه میتواند اذیت کننده باشد. روی هم رفته حذف یک پارامتر از توابع api مستلزم یکسری مرحله است، مرحله اولیه این میباشد که شما بتوانید پارامتر توربو را خنثی فرمائید، اینجانب برای ایفا این شغل عشق مند به تکنیک تحت میباشم که تشخیص میدهد که آیا کدی که بوسیله مخاطب درج شده میباشد بهاین پارامتر متعلق میباشد یا این که نه؟
# Your library code.
_turbo_default = object()
def move(direction,
mode=\'slither\',
turbo=_turbo_default,
extra_sinuous=False,
hail_lyft=False):
if turbo is not _turbo_default:
warnings.warn(
"\'turbo\' is deprecated",
DeprecationWarning,
stacklevel=2)
else:
# The old default.
turbo = False
با این حالا یوزرها شما ممکن میباشد توجهی به هشدارها نداشته باشند، هشدارها خیلی بلند نیستند، آن ها میتوانند در فولدر های لاگ گم گردیده و یا این که نادیده گرفته شوند، یوزرها ممکن میباشد فارغ از اگاهی مبادرت به، آپ دیت رسانی api شما نمایند که پارامتر توربو را در آن حذف گردیدهاست. کد آن ها میتواند سوای هیچ سیرتکامل خطایی جاری ساختن خواهد شد و عملیات اشتباهی را ایفا دهد. همانگونه که zen پایتون میگوید: " اشتباهات اصلا نباید فارغ از جلب اعتنا ارسال شوند". براین اساس شما برای اینکه اعتنا استفاده کننده api خویش را جلب فرمایید می بایست این اشتباهات را به طور بدیهی اعلام فرمائید.

تفاوت بین وب سایت و اپلیکیشن