diff --git a/translations/fa-farsi/README.md b/translations/fa-farsi/README.md index 79818e2..460c3a5 100644 --- a/translations/fa-farsi/README.md +++ b/translations/fa-farsi/README.md @@ -44,73 +44,73 @@ - [استفاده](#استفاده) - [👀 مثال‌ها](#-مثالها) - [بخش: ذهن خود را به چالش بکشید!](#بخش-ذهن-خود-را-به-چالش-بکشید) - - [▶ اول از همه! \*](#-اول-از-همه-) - - [▶ بعضی وقت‌ها رشته‌ها می‌توانند دردسرساز شوند](#-بعضی-وقتها-رشتهها-میتوانند-دردسرساز-شوند) - - [▶ مراقب عملیات‌های زنجیره‌ای باشید](#-مراقب-عملیاتهای-زنجیرهای-باشید) - - [▶ چطور از عملگر `is` استفاده نکنیم](#-چطور-از-عملگر-is-استفاده-نکنیم) - - [▶ کلیدهای هش](#-کلیدهای-هش) - - [▶ در عمق وجود همه ما یکسان هستیم](#-در-عمق-وجود-همه-ما-یکسان-هستیم) - - [▶ بی‌نظمی در خود نظم \*](#-بینظمی-در-خود-نظم-) - - [▶ تلاش کن... \*](#-تلاش-کن-) - - [▶ برای چی؟](#-برای-چی) - - [▶ اختلاف زمانی در محاسبه](#-اختلاف-زمانی-در-محاسبه) - - [▶ هر گردی، گردو نیست](#-هر-گردی-گردو-نیست) - - [▶ یک بازی دوز که توش X همون اول برنده میشه!](#-یک-بازی-دوز-که-توش-X-همون-اول-برنده-میشه) - - [▶ متغیر شرودینگر \*](#-متغیر-شرودینگر-) - - [▶ اول مرغ بوده یا تخم مرغ؟ \*](#-اول-مرغ-بوده-یا-تخم-مرغ-) - - [▶ روابط بین زیرمجموعه کلاس‌ها](#-روابط-بین-زیرمجموعه-کلاسها) - - [▶ ‫ برابری و هویت متدها](#--برابری-و-هویت-متدها) - - [▶ ‫ آل-ترو-یشن \*](#--آل-ترو-یشن-) - - [▶ ‫ رشته‌ها و بک‌اسلش‌ها](#--رشتهها-و-بکاسلشها) - - [▶ ‫ گره نیست، نَه!](#--گره-نیست-نَه) - - [▶ رشته‌های نیمه سه‌نقل‌قولی](#-رشتههای-نیمه-سهنقلقولی) - - [▶ ‫ مشکل بولین ها چیست؟](#--مشکل-بولین-ها-چیست) - - [▶ ‫ ویژگی‌های کلاس و ویژگی‌های نمونه](#--ویژگیهای-کلاس-و-ویژگیهای-نمونه) - - [▶ yielding None](#-yielding-none) - - [▶ Yielding from... return! \*](#-yielding-from-return-) - - [▶ ‫ بازتاب‌ناپذیری \*](#--بازتابناپذیری-) - - [▶ ‫ تغییر دادن اشیای تغییرناپذیر!](#--تغییر-دادن-اشیای-تغییرناپذیر) - - [▶ ‫ متغیری که از اسکوپ بیرونی ناپدید می‌شود](#--متغیری-که-از-اسکوپ-بیرونی-ناپدید-میشود) - - [▶ ‫ تبدیل اسرارآمیز نوع کلید](#--تبدیل-اسرارآمیز-نوع-کلید) - - [▶ ‫ ببینیم می‌توانید این را حدس بزنید؟](#--ببینیم-میتوانید-این-را-حدس-بزنید) - - [▶ ‫ از حد مجاز برای تبدیل رشته به عدد صحیح فراتر می‌رود](#--از-حد-مجاز-برای-تبدیل-رشته-به-عدد-صحیح-فراتر-میرود) + - [◀ اول از همه! \*](#-اول-از-همه-) + - [◀ بعضی وقت‌ها رشته‌ها می‌توانند دردسرساز شوند](#-بعضی-وقتها-رشتهها-میتوانند-دردسرساز-شوند) + - [◀ مراقب عملیات‌های زنجیره‌ای باشید](#-مراقب-عملیاتهای-زنجیرهای-باشید) + - [◀ چطور از عملگر `is` استفاده نکنیم](#-چطور-از-عملگر-is-استفاده-نکنیم) + - [◀ کلیدهای هش](#-کلیدهای-هش) + - [◀ در عمق وجود همه ما یکسان هستیم](#-در-عمق-وجود-همه-ما-یکسان-هستیم) + - [◀ بی‌نظمی در خود نظم \*](#-بینظمی-در-خود-نظم-) + - [◀ تلاش کن... \*](#-تلاش-کن-) + - [◀ برای چی؟](#-برای-چی) + - [◀ اختلاف زمانی در محاسبه](#-اختلاف-زمانی-در-محاسبه) + - [◀ هر گردی، گردو نیست](#-هر-گردی-گردو-نیست) + - [◀ یک بازی دوز که توش X همون اول برنده میشه!](#-یک-بازی-دوز-که-توش-X-همون-اول-برنده-میشه) + - [◀ متغیر شرودینگر \*](#-متغیر-شرودینگر-) + - [◀ اول مرغ بوده یا تخم مرغ؟ \*](#-اول-مرغ-بوده-یا-تخم-مرغ-) + - [◀ روابط بین زیرمجموعه کلاس‌ها](#-روابط-بین-زیرمجموعه-کلاسها) + - [◀ ‫ برابری و هویت متدها](#--برابری-و-هویت-متدها) + - [◀ ‫ آل-ترو-یشن \*](#--آل-ترو-یشن-) + - [◀ ‫ رشته‌ها و بک‌اسلش‌ها](#--رشتهها-و-بکاسلشها) + - [◀ ‫ گره نیست، نَه!](#--گره-نیست-نَه) + - [◀ رشته‌های نیمه سه‌نقل‌قولی](#-رشتههای-نیمه-سهنقلقولی) + - [◀ ‫ مشکل بولین ها چیست؟](#--مشکل-بولین-ها-چیست) + - [◀ ‫ ویژگی‌های کلاس و ویژگی‌های نمونه](#--ویژگیهای-کلاس-و-ویژگیهای-نمونه) + - [◀ yielding None](#-yielding-none) + - [◀ Yielding from... return! \*](#-yielding-from-return-) + - [◀ ‫ بازتاب‌ناپذیری \*](#--بازتابناپذیری-) + - [◀ ‫ تغییر دادن اشیای تغییرناپذیر!](#--تغییر-دادن-اشیای-تغییرناپذیر) + - [◀ ‫ متغیری که از اسکوپ بیرونی ناپدید می‌شود](#--متغیری-که-از-اسکوپ-بیرونی-ناپدید-میشود) + - [◀ ‫ تبدیل اسرارآمیز نوع کلید](#--تبدیل-اسرارآمیز-نوع-کلید) + - [◀ ‫ ببینیم می‌توانید این را حدس بزنید؟](#--ببینیم-میتوانید-این-را-حدس-بزنید) + - [◀ ‫ از حد مجاز برای تبدیل رشته به عدد صحیح فراتر می‌رود](#--از-حد-مجاز-برای-تبدیل-رشته-به-عدد-صحیح-فراتر-میرود) - [‫ بخش: شیب‌های لغزنده](#-بخش-شیبهای-لغزنده) - - [▶ ‫ تغییر یک دیکشنری هنگام پیمایش روی آن](#--تغییر-یک-دیکشنری-هنگام-پیمایش-روی-آن) - - [▶ عملیات سرسختانه‌ی `del`](#-عملیات-سرسختانهی-del) - - [▶ ‫ متغیری که از حوزه خارج است](#--متغیری-که-از-حوزه-خارج-است) - - [▶ ‫ حذف المان‌های لیست در حین پیمایش](#--حذف-المانهای-لیست-در-حین-پیمایش) - - [▶ ‫ زیپِ دارای اتلاف برای پیمایشگرها \*](#--زیپِ-دارای-اتلاف-برای-پیمایشگرها-) - - [▶ ‫ نشت کردن متغیرهای حلقه!](#--نشت-کردن-متغیرهای-حلقه) - - [▶ ‫ مراقب آرگومان‌های تغییرپذیر پیش‌فرض باشید!](#--مراقب-آرگومانهای-تغییرپذیر-پیشفرض-باشید) - - [▶ ‫ گرفتن استثناها (Exceptions)](#--گرفتن-استثناها-exceptions) - - [▶ ‫ عملوندهای یکسان، داستانی متفاوت!](#--عملوندهای-یکسان-داستانی-متفاوت) - - [▶ ‫ تفکیک نام‌ها با نادیده گرفتن حوزه‌ی کلاس](#--تفکیک-نامها-با-نادیده-گرفتن-حوزهی-کلاس) - - [▶ ‫ گرد کردن به روش بانکدار \*](#--گرد-کردن-به-روش-بانکدار-) - - [▶ ‫ سوزن‌هایی در انبار کاه \*](#--سوزنهایی-در-انبار-کاه-) - - [▶ ‫ تقسیم‌ها \*](#--تقسیمها-) - - [▶ واردسازی‌های عمومی \*](#-واردسازیهای-عمومی-) - - [▶ ‫ همه چیز مرتب شده؟ \*](#--همه-چیز-مرتب-شده-) - - [▶ ‫ زمان نیمه‌شب وجود ندارد؟](#--زمان-نیمهشب-وجود-ندارد) + - [◀ ‫ تغییر یک دیکشنری هنگام پیمایش روی آن](#--تغییر-یک-دیکشنری-هنگام-پیمایش-روی-آن) + - [◀ عملیات سرسختانه‌ی `del`](#-عملیات-سرسختانهی-del) + - [◀ ‫ متغیری که از حوزه خارج است](#--متغیری-که-از-حوزه-خارج-است) + - [◀ ‫ حذف المان‌های لیست در حین پیمایش](#--حذف-المانهای-لیست-در-حین-پیمایش) + - [◀ ‫ زیپِ دارای اتلاف برای پیمایشگرها \*](#--زیپِ-دارای-اتلاف-برای-پیمایشگرها-) + - [◀ ‫ نشت کردن متغیرهای حلقه!](#--نشت-کردن-متغیرهای-حلقه) + - [◀ ‫ مراقب آرگومان‌های تغییرپذیر پیش‌فرض باشید!](#--مراقب-آرگومانهای-تغییرپذیر-پیشفرض-باشید) + - [◀ ‫ گرفتن استثناها (Exceptions)](#--گرفتن-استثناها-exceptions) + - [◀ ‫ عملوندهای یکسان، داستانی متفاوت!](#--عملوندهای-یکسان-داستانی-متفاوت) + - [◀ ‫ تفکیک نام‌ها با نادیده گرفتن حوزه‌ی کلاس](#--تفکیک-نامها-با-نادیده-گرفتن-حوزهی-کلاس) + - [◀ ‫ گرد کردن به روش بانکدار \*](#--گرد-کردن-به-روش-بانکدار-) + - [◀ ‫ سوزن‌هایی در انبار کاه \*](#--سوزنهایی-در-انبار-کاه-) + - [◀ ‫ تقسیم‌ها \*](#--تقسیمها-) + - [◀ واردسازی‌های عمومی \*](#-واردسازیهای-عمومی-) + - [◀ ‫ همه چیز مرتب شده؟ \*](#--همه-چیز-مرتب-شده-) + - [◀ ‫ زمان نیمه‌شب وجود ندارد؟](#--زمان-نیمهشب-وجود-ندارد) - [‫ بخش: گنجینه‌های پنهان!](#-بخش-گنجینههای-پنهان) - - [▶ ‫ خب پایتون، می‌توانی کاری کنی پرواز کنم؟](#--خب-پایتون-میتوانی-کاری-کنی-پرواز-کنم) - - [▶ ‫ `goto`، ولی چرا؟](#--goto-ولی-چرا) - - [▶ ‫ خودتان را آماده کنید!](#--خودتان-را-آماده-کنید) - - [▶ ‫ بیایید با «عمو زبان مهربان برای همیشه» آشنا شویم](#--بیایید-با-عمو-زبان-مهربان-برای-همیشه-آشنا-شویم) - - [▶ ‫ حتی پایتون هم می‌داند که عشق پیچیده است](#--حتی-پایتون-هم-میداند-که-عشق-پیچیده-است) - - [▶ ‫ بله، این واقعاً وجود دارد!](#--بله-این-واقعاً-وجود-دارد) - - [▶ Ellipsis \*](#-ellipsis-) - - [▶ ‫ بی‌نهایت (`Inpinity`)](#--بینهایت-inpinity) - - [▶ ‫ بیایید خرابکاری کنیم](#--بیایید-خرابکاری-کنیم) + - [◀ ‫ خب پایتون، می‌توانی کاری کنی پرواز کنم؟](#--خب-پایتون-میتوانی-کاری-کنی-پرواز-کنم) + - [◀ ‫ `goto`، ولی چرا؟](#--goto-ولی-چرا) + - [◀ ‫ خودتان را آماده کنید!](#--خودتان-را-آماده-کنید) + - [◀ ‫ بیایید با «عمو زبان مهربان برای همیشه» آشنا شویم](#--بیایید-با-عمو-زبان-مهربان-برای-همیشه-آشنا-شویم) + - [◀ ‫ حتی پایتون هم می‌داند که عشق پیچیده است](#--حتی-پایتون-هم-میداند-که-عشق-پیچیده-است) + - [◀ ‫ بله، این واقعاً وجود دارد!](#--بله-این-واقعاً-وجود-دارد) + - [◀ Ellipsis \*](#-ellipsis-) + - [◀ ‫ بی‌نهایت (`Inpinity`)](#--بینهایت-inpinity) + - [◀ ‫ بیایید خرابکاری کنیم](#--بیایید-خرابکاری-کنیم) - [‫ بخش: ظاهرها فریبنده‌اند!](#-بخش-ظاهرها-فریبندهاند) - - [▶ ‫ خطوط را رد می‌کند؟](#--خطوط-را-رد-میکند) - - [▶ ‫ تله‌پورت کردن](#--تلهپورت-کردن) - - [▶ ‫ خب، یک جای کار مشکوک است...](#--خب-یک-جای-کار-مشکوک-است) + - [◀ ‫ خطوط را رد می‌کند؟](#--خطوط-را-رد-میکند) + - [◀ ‫ تله‌پورت کردن](#--تلهپورت-کردن) + - [◀ ‫ خب، یک جای کار مشکوک است...](#--خب-یک-جای-کار-مشکوک-است) - [بخش: متفرقه](#بخش-متفرقه) - - [‫ ▶ `+=` سریع‌تر است](#---سریعتر-است) - - [‫ ▶ بیایید یک رشته‌ی بزرگ بسازیم!](#--بیایید-یک-رشتهی-بزرگ-بسازیم) - - [▶ ‫ کُند کردن جستجوها در `dict` \*](#---کُند-کردن-جستجوها-در-dict-) - - [‫ ▶ حجیم کردن دیکشنری نمونه‌ها (`instance dicts`) \*](#--حجیم-کردن-دیکشنری-نمونهها-instance-dicts-) - - [‫ ▶ موارد جزئی \*](#---موارد-جزئی-) + - [‫ ◀ `+=` سریع‌تر است](#---سریعتر-است) + - [‫ ◀ بیایید یک رشته‌ی بزرگ بسازیم!](#--بیایید-یک-رشتهی-بزرگ-بسازیم) + - [◀ ‫ کُند کردن جستجوها در `dict` \*](#---کُند-کردن-جستجوها-در-dict-) + - [‫ ◀ حجیم کردن دیکشنری نمونه‌ها (`instance dicts`) \*](#--حجیم-کردن-دیکشنری-نمونهها-instance-dicts-) + - [‫ ◀ موارد جزئی \*](#---موارد-جزئی-) - [‫ مشارکت](#-مشارکت) - [‫ تقدیر و تشکر](#-تقدیر-و-تشکر) - [‫ چند لینک جالب!](#-چند-لینک-جالب) @@ -124,7 +124,7 @@ همه مثال‌ها به صورت زیر ساخته می‌شوند: -> ### ▶ یه اسم خوشگل +> ### ◀ یه اسم خوشگل > > ```py > # راه اندازی کد @@ -175,7 +175,7 @@ ## بخش: ذهن خود را به چالش بکشید! -### ▶ اول از همه! * +### ◀ اول از همه! * @@ -298,7 +298,7 @@ if a := some_func(): --- -### ▶ بعضی وقت‌ها رشته‌ها می‌توانند دردسرساز شوند +### ◀ بعضی وقت‌ها رشته‌ها می‌توانند دردسرساز شوند 1\. @@ -383,7 +383,7 @@ False --- -### ▶ مراقب عملیات‌های زنجیره‌ای باشید +### ◀ مراقب عملیات‌های زنجیره‌ای باشید ```py >>> (False == False) in [False] # منطقیه @@ -427,7 +427,7 @@ False --- -### ▶ چطور از عملگر `is` استفاده نکنیم +### ◀ چطور از عملگر `is` استفاده نکنیم عبارت پایین خیلی معروفه و تو کل اینترنت موجوده. @@ -552,7 +552,7 @@ False --- -### ▶ کلیدهای هش +### ◀ کلیدهای هش 1\. ```py @@ -617,7 +617,7 @@ complex --- -### ▶ در عمق وجود همه ما یکسان هستیم +### ◀ در عمق وجود همه ما یکسان هستیم ```py class WTF: @@ -667,7 +667,7 @@ True --- -### ▶ بی‌نظمی در خود نظم * +### ◀ بی‌نظمی در خود نظم * ```py from collections import OrderedDict @@ -766,7 +766,7 @@ TypeError: unhashable type: 'dict' --- -### ▶ تلاش کن... * +### ◀ تلاش کن... * ```py def some_func(): @@ -828,7 +828,7 @@ Iteration 0 --- -### ▶ برای چی؟ +### ◀ برای چی؟ ```py some_string = "wtf" @@ -880,7 +880,7 @@ for i, some_dict[i] in enumerate(some_string): --- -### ▶ اختلاف زمانی در محاسبه +### ◀ اختلاف زمانی در محاسبه 1\. ```py @@ -949,7 +949,7 @@ array_4 = [400, 500, 600] --- -### ▶ هر گردی، گردو نیست +### ◀ هر گردی، گردو نیست ```py >>> 'something' is not None @@ -966,7 +966,7 @@ False --- -### ▶ یک بازی دوز که توش X همون اول برنده میشه! +### ◀ یک بازی دوز که توش X همون اول برنده میشه! ```py @@ -1026,7 +1026,7 @@ board = [row] * 3 --- -### ▶ متغیر شرودینگر * +### ◀ متغیر شرودینگر * @@ -1105,7 +1105,7 @@ ClosureVars(nonlocals={}, globals={}, builtins={}, unbound=set()) --- -### ▶ اول مرغ بوده یا تخم مرغ؟ * +### ◀ اول مرغ بوده یا تخم مرغ؟ * 1\. ```py @@ -1157,7 +1157,7 @@ False --- -### ▶ روابط بین زیرمجموعه کلاس‌ها +### ◀ روابط بین زیرمجموعه کلاس‌ها **خروجی:** ```py @@ -1181,7 +1181,7 @@ False --- -### ▶ برابری و هویت متدها +### ◀ برابری و هویت متدها 1. @@ -1270,7 +1270,7 @@ True * ایجاد شیءهای "متد" جدید در هر بار فراخوانی متدهای نمونه و نیاز به اصلاح آرگومان‌ها برای درج `self`، عملکرد را به شدت تحت تأثیر قرار می‌داد. CPython 3.7 [این مشکل را حل کرد](https://bugs.python.org/issue26110) با معرفی opcodeهای جدیدی که فراخوانی متدها را بدون ایجاد شیء متد موقتی مدیریت می‌کنند. این به شرطی است که تابع دسترسی‌یافته واقعاً فراخوانی شود، بنابراین قطعه‌کدهای اینجا تحت تأثیر قرار نمی‌گیرند و همچنان متد ایجاد می‌کنند :) -### ▶ آل-ترو-یشن * +### ◀ آل-ترو-یشن * @@ -1308,7 +1308,7 @@ True --- -### ▶ کاما‌ی شگفت‌انگیز +### ◀ کاما‌ی شگفت‌انگیز **خروجی (< 3.6):** @@ -1340,7 +1340,7 @@ SyntaxError: invalid syntax --- -### ▶ رشته‌ها و بک‌اسلش‌ها +### ◀ رشته‌ها و بک‌اسلش‌ها **خروجی:** ```py @@ -1383,7 +1383,7 @@ True --- -### ▶ گره نیست، نَه! +### ◀ گره نیست، نَه! ```py x = True @@ -1410,7 +1410,7 @@ SyntaxError: invalid syntax --- -### ▶ رشته‌های نیمه سه‌نقل‌قولی +### ◀ رشته‌های نیمه سه‌نقل‌قولی **خروجی:** ```py @@ -1439,7 +1439,7 @@ SyntaxError: EOF while scanning triple-quoted string literal --- -### ▶ مشکل بولین ها چیست؟ +### ◀ مشکل بولین ها چیست؟ 1\. @@ -1529,7 +1529,7 @@ I have lost faith in truth! --- -### ▶ ویژگی‌های کلاس و ویژگی‌های نمونه +### ◀ ویژگی‌های کلاس و ویژگی‌های نمونه 1\. ```py @@ -1600,7 +1600,7 @@ True --- -### ▶ yielding None +### ◀ yielding None ```py some_iterable = ('a', 'b') @@ -1633,7 +1633,7 @@ def some_func(val): --- -### ▶ Yielding from... return! * +### ◀ Yielding from... return! * 1\. @@ -1698,7 +1698,7 @@ def some_func(x): --- -### ▶ بازتاب‌ناپذیری * +### ◀ بازتاب‌ناپذیری * @@ -1774,7 +1774,7 @@ True --- -### ▶ تغییر دادن اشیای تغییرناپذیر! +### ◀ تغییر دادن اشیای تغییرناپذیر! @@ -1813,7 +1813,7 @@ TypeError: 'tuple' object does not support item assignment --- -### ▶ متغیری که از اسکوپ بیرونی ناپدید می‌شود +### ◀ متغیری که از اسکوپ بیرونی ناپدید می‌شود ```py @@ -1895,7 +1895,7 @@ NameError: name 'e' is not defined --- -### ▶ تبدیل اسرارآمیز نوع کلید +### ◀ تبدیل اسرارآمیز نوع کلید ```py class SomeClass(str): @@ -1951,7 +1951,7 @@ str --- -### ▶ ببینیم می‌توانید این را حدس بزنید؟ +### ◀ ببینیم می‌توانید این را حدس بزنید؟ ```py a, b = a[b] = {}, 5 @@ -2010,7 +2010,7 @@ a, b = a[b] = {}, 5 --- -### ▶ از حد مجاز برای تبدیل رشته به عدد صحیح فراتر می‌رود +### ◀ از حد مجاز برای تبدیل رشته به عدد صحیح فراتر می‌رود ```py >>> # Python 3.10.6 >>> int("2" * 5432) @@ -2049,7 +2049,7 @@ ValueError: Exceeds the limit (4300) for integer string conversion: ## بخش: شیب‌های لغزنده -### ▶ تغییر یک دیکشنری هنگام پیمایش روی آن +### ◀ تغییر یک دیکشنری هنگام پیمایش روی آن ```py x = {0: None} @@ -2085,7 +2085,7 @@ for i in x: --- -### ▶ عملیات سرسختانه‌ی `del` +### ◀ عملیات سرسختانه‌ی `del` @@ -2130,7 +2130,7 @@ Deleted! --- -### ▶ متغیری که از حوزه خارج است +### ◀ متغیری که از حوزه خارج است 1\. @@ -2210,7 +2210,7 @@ UnboundLocalError: local variable 'a' referenced before assignment --- -### ▶ حذف المان‌های لیست در حین پیمایش +### ◀ حذف المان‌های لیست در حین پیمایش ```py list_1 = [1, 2, 3, 4] @@ -2271,7 +2271,7 @@ for idx, item in enumerate(list_4): --- -### ▶ زیپِ دارای اتلاف برای پیمایشگرها * +### ◀ زیپِ دارای اتلاف برای پیمایشگرها * ```py @@ -2320,7 +2320,7 @@ for idx, item in enumerate(list_4): --- -### ▶ نشت کردن متغیرهای حلقه! +### ◀ نشت کردن متغیرهای حلقه! 1\. ```py @@ -2384,7 +2384,7 @@ print(x, ': x in global') --- -### ▶ مراقب آرگومان‌های تغییرپذیر پیش‌فرض باشید! +### ◀ مراقب آرگومان‌های تغییرپذیر پیش‌فرض باشید! ```py @@ -2442,7 +2442,7 @@ def some_func(default_arg=[]): --- -### ▶ گرفتن استثناها (Exceptions) +### ◀ گرفتن استثناها (Exceptions) ```py some_list = [1, 2, 3] @@ -2517,7 +2517,7 @@ SyntaxError: invalid syntax --- -### ▶ عملوندهای یکسان، داستانی متفاوت! +### ◀ عملوندهای یکسان، داستانی متفاوت! 1\. ```py @@ -2558,7 +2558,7 @@ a += [5, 6, 7, 8] --- -### ▶ تفکیک نام‌ها با نادیده گرفتن حوزه‌ی کلاس +### ◀ تفکیک نام‌ها با نادیده گرفتن حوزه‌ی کلاس 1\. ```py @@ -2601,7 +2601,7 @@ class SomeClass: --- -### ▶ گرد کردن به روش بانکدار * +### ◀ گرد کردن به روش بانکدار * بیایید یک تابع ساده برای به‌دست‌آوردن عنصر میانی یک لیست پیاده‌سازی کنیم: ```py @@ -2651,7 +2651,7 @@ def get_middle(some_list): --- -### ▶ سوزن‌هایی در انبار کاه * +### ◀ سوزن‌هایی در انبار کاه * @@ -2828,7 +2828,7 @@ def similar_recursive_func(a): --- -### ▶ تقسیم‌ها * +### ◀ تقسیم‌ها * ```py >>> 'a'.split() @@ -2864,7 +2864,7 @@ def similar_recursive_func(a): --- -### ▶ واردسازی‌های عمومی * +### ◀ واردسازی‌های عمومی * @@ -2923,7 +2923,7 @@ NameError: name '_another_weird_name_func' is not defined --- -### ▶ همه چیز مرتب شده؟ * +### ◀ همه چیز مرتب شده؟ * @@ -2963,7 +2963,7 @@ False --- -### ▶ زمان نیمه‌شب وجود ندارد؟ +### ◀ زمان نیمه‌شب وجود ندارد؟ ```py from datetime import datetime @@ -3001,7 +3001,7 @@ Before Python 3.5, the boolean value for `datetime.time` object was considered t این بخش شامل چند مورد جالب و کمتر شناخته‌شده درباره‌ی پایتون است که بیشتر مبتدی‌هایی مثل من از آن بی‌خبرند (البته دیگر اینطور نیست). -### ▶ خب پایتون، می‌توانی کاری کنی پرواز کنم؟ +### ◀ خب پایتون، می‌توانی کاری کنی پرواز کنم؟ خب، بفرمایید @@ -3019,7 +3019,7 @@ Sshh... It's a super-secret. --- -### ▶ `goto`، ولی چرا؟ +### ◀ `goto`، ولی چرا؟ ```py @@ -3048,7 +3048,7 @@ Freedom! --- -### ▶ خودتان را آماده کنید! +### ◀ خودتان را آماده کنید! اگر جزو افرادی هستید که دوست ندارند در پایتون برای مشخص کردن محدوده‌ها از فضای خالی (whitespace) استفاده کنند، می‌توانید با ایمپورت کردن ماژول زیر از آکولاد `{}` به سبک زبان C استفاده کنید: @@ -3073,7 +3073,7 @@ SyntaxError: not a chance --- -### ▶ بیایید با «عمو زبان مهربان برای همیشه» آشنا شویم +### ◀ بیایید با «عمو زبان مهربان برای همیشه» آشنا شویم **خروجی (Python 3.x)** ```py @@ -3106,7 +3106,7 @@ True --- -### ▶ حتی پایتون هم می‌داند که عشق پیچیده است +### ◀ حتی پایتون هم می‌داند که عشق پیچیده است ```py import this @@ -3163,7 +3163,7 @@ True --- -### ▶ بله، این واقعاً وجود دارد! +### ◀ بله، این واقعاً وجود دارد! **عبارت `else` برای حلقه‌ها.** یک مثال معمول آن می‌تواند چنین باشد: @@ -3207,7 +3207,7 @@ Try block executed successfully... - عبارت `else` پس از بلاک `try` به عنوان «عبارت تکمیل» (`completion clause`) نیز شناخته می‌شود؛ چراکه رسیدن به عبارت `else` در ساختار `try` به این معنی است که بلاک `try` بدون رخ دادن استثنا با موفقیت تکمیل شده است. --- -### ▶ Ellipsis * +### ◀ Ellipsis * ```py def some_func(): @@ -3269,7 +3269,7 @@ Ellipsis --- -### ▶ بی‌نهایت (`Inpinity`) +### ◀ بی‌نهایت (`Inpinity`) این املای کلمه تعمداً به همین شکل نوشته شده است. لطفاً برای اصلاح آن درخواست (`patch`) ارسال نکنید. @@ -3288,7 +3288,7 @@ Ellipsis --- -### ▶ بیایید خرابکاری کنیم +### ◀ بیایید خرابکاری کنیم 1\. ```py @@ -3366,7 +3366,7 @@ AttributeError: 'A' object has no attribute '__variable' ## بخش: ظاهرها فریبنده‌اند! -### ▶ خطوط را رد می‌کند؟ +### ◀ خطوط را رد می‌کند؟ **خروجی:** ```py @@ -3402,7 +3402,7 @@ False --- -### ▶ تله‌پورت کردن +### ◀ تله‌پورت کردن @@ -3435,7 +3435,7 @@ def energy_receive(): --- -### ▶ خب، یک جای کار مشکوک است... +### ◀ خب، یک جای کار مشکوک است... ```py def square(x): @@ -3480,7 +3480,7 @@ def square(x): ## بخش: متفرقه -### ▶ `+=` سریع‌تر است +### ◀ `+=` سریع‌تر است ```py @@ -3497,7 +3497,7 @@ def square(x): --- -### ▶ بیایید یک رشته‌ی بزرگ بسازیم! +### ◀ بیایید یک رشته‌ی بزرگ بسازیم! ```py def add_string_with_plus(iters): @@ -3594,7 +3594,7 @@ timeit.timeit('add_string_with_plus(10000)', number=1000, globals=globals()) --- -### ▶ کُند کردن جستجوها در `dict` * +### ◀ کُند کردن جستجوها در `dict` * ```py some_dict = {str(i): 1 for i in range(1_000_000)} @@ -3627,7 +3627,7 @@ KeyError: 1 + این فرایند برای آن نمونه‌ی خاص از دیکشنری غیرقابل بازگشت است و حتی لازم نیست کلید موردنظر در دیکشنری موجود باشد. به همین دلیل است که حتی تلاش ناموفق برای دسترسی به کلیدی ناموجود نیز باعث ایجاد همین تأثیر (کند شدن جستجو) می‌شود. -### ▶ حجیم کردن دیکشنری نمونه‌ها (`instance dicts`) * +### ◀ حجیم کردن دیکشنری نمونه‌ها (`instance dicts`) * ```py import sys @@ -3689,7 +3689,7 @@ def dict_size(o): + نکته‌ای کوچک برای کاهش مصرف حافظه‌ی برنامه: هرگز صفات نمونه‌ها را حذف نکنید و حتماً تمام صفات را در متد `__init__` تعریف و مقداردهی اولیه کنید! -### ▶ موارد جزئی * +### ◀ موارد جزئی * * متد `join()` عملیاتی مربوط به رشته (`str`) است، نه لیست (`list`). (در نگاه اول کمی برخلاف انتظار است.)