@@ -123,6 +123,18 @@ msgid ""
123123"the caller will see the change --- this eliminates the need for two "
124124"different argument passing mechanisms as in Pascal."
125125msgstr ""
126+ "اشیاء هویت فردی دارند و چندین نام (در چندین محدوده) میتوانند به یک شیء "
127+ "مشخص متصل شوند. این در زبانهای دیگر با نام «اسمهای مستعار» (aliasing) شناخته میشود. "
128+ "این ویژگی معمولاً در نگاه اول به پایتون چندان جلب توجه نمیکند و هنگام کار با "
129+ "انواع پایهی تغییرناپذیر (اعداد، رشتهها، تاپلها) میتوان آن را نادیده گرفت. "
130+ "با این حال، نامهای مستعار میتوانند تأثیری شگفتآور بر معناشناسی کد پایتونی "
131+ "داشته باشند، بهویژه هنگامی که با اشیاء تغییرپذیر مانند لیستها، دیکشنریها و "
132+ "بیشتر انواع دیگر سروکار داریم. این ویژگی معمولاً به سود برنامه تمام میشود، "
133+ "چون نامهای مستعار از برخی جهات مانند اشارهگرها (pointer) رفتار میکنند. "
134+ "برای مثال، ارسال یک شیء بهعنوان آرگومان ارزان است، چون پیادهسازی فقط یک اشارهگر را "
135+ "ارسال میکند؛ و اگر تابعی شیءای را که بهعنوان آرگومان دریافت کرده تغییر دهد، "
136+ "فراخواننده تغییر را مشاهده خواهد کرد --- این کار نیاز به دو مکانیزم متفاوت "
137+ "برای ارسال آرگومان (مانند آنچه در پاسکال وجود دارد) را از بین میبرد."
126138
127139#: ../../tutorial/classes.rst:61
128140msgid "Python Scopes and Namespaces"
@@ -267,6 +279,8 @@ msgid ""
267279"the scopes of any enclosing functions, which are searched starting with the "
268280"nearest enclosing scope, contain non-local, but also non-global names"
269281msgstr ""
282+ "محدودههای هر تابع محاطشونده (enclosing functions)، که جستجو از نزدیکترین "
283+ "محدودهی محاطشونده آغاز میشود، شامل نامهای غیرمحلی (non-local) و همچنین غیرسراسری (non-global) هستند."
270284
271285#: ../../tutorial/classes.rst:123
272286msgid "the next-to-last scope contains the current module's global names"
@@ -277,6 +291,8 @@ msgid ""
277291"the outermost scope (searched last) is the namespace containing built-in "
278292"names"
279293msgstr ""
294+ "بیرونیترین محدوده (که آخر از همه جستجو میشود) فضای نامی است که شامل "
295+ "نامهای توکار است."
280296
281297#: ../../tutorial/classes.rst:126
282298msgid ""
@@ -288,6 +304,12 @@ msgid ""
288304"simply create a *new* local variable in the innermost scope, leaving the "
289305"identically named outer variable unchanged)."
290306msgstr ""
307+ "اگر یک نام بهعنوان سراسری اعلام شود، تمام ارجاعها و تخصیصها مستقیماً به "
308+ "محدودهی یکیماندهبهآخر که شامل نامهای سراسری ماژول است، میروند. برای "
309+ "اتصال مجدد متغیرهایی که در خارج از درونیترین محدوده یافت میشوند، "
310+ "میتوان از دستور :keyword:`nonlocal` استفاده کرد؛ اگر بهعنوان nonlocal اعلام نشوند، "
311+ "آن متغیرها فقطخواندنی هستند (تلاش برای نوشتن در چنین متغیری، صرفاً یک متغیر محلی *جدید* در "
312+ "درونیترین محدوده ایجاد میکند و متغیر بیرونی با همان نام را بدون تغییر باقی میگذارد)."
291313
292314#: ../../tutorial/classes.rst:133
293315msgid ""
@@ -296,6 +318,9 @@ msgid ""
296318"namespace as the global scope: the module's namespace. Class definitions "
297319"place yet another namespace in the local scope."
298320msgstr ""
321+ "معمولاً، محدودهی محلی به نامهای محلی تابع جاری (از نظر متنی) ارجاع میدهد. "
322+ "در خارج از توابع، محدودهی محلی به همان فضای نامی ارجاع میدهد که محدودهی سراسری "
323+ "به آن ارجاع میدهد: فضای نام ماژول. تعاریف کلاسها، فضای نام دیگری را در محدودهی محلی قرار میدهند."
299324
300325#: ../../tutorial/classes.rst:138
301326msgid ""
@@ -307,6 +332,12 @@ msgid ""
307332"at \" compile\" time, so don't rely on dynamic name resolution! (In fact, "
308333"local variables are already determined statically.)"
309334msgstr ""
335+ "درک این نکته مهم است که محدودهها بهصورت متنی (بر اساس جایگاه در کد) تعیین میشوند: محدودهی سراسری "
336+ "تابعی که در یک ماژول تعریف شده است، همان فضای نام آن ماژول است، "
337+ "فرقی نمیکند که تابع از کجا یا با چه نام مستعاری فراخوانی شود. از سوی "
338+ "دیگر، جستجوی واقعی برای نامها بهصورت پویا (داینامیک) و در زمان اجرا انجام میشود --- "
339+ "با این حال، تعریف زبان به سمت و سوی حلِ ایستا (استاتیک) نامها در زمان «کامپایل» پیش میرود، "
340+ "پس به حلِ پویای نامها اعتماد نکنید! (در واقع، متغیرهای محلی از قبل بهصورت ایستا تعیین میشوند.)"
310341
311342#: ../../tutorial/classes.rst:146
312343msgid ""
@@ -319,6 +350,13 @@ msgid ""
319350"scope: in particular, :keyword:`import` statements and function definitions "
320351"bind the module or function name in the local scope."
321352msgstr ""
353+ "یک ویژگی خاص پایتون این است که --- اگر دستور :keyword:`global` "
354+ "یا :keyword:`nonlocal` فعال نباشد --- تخصیصهای (مقداردهیهای) نامها همیشه "
355+ "به درونیترین محدوده (محلیترین) میروند. تخصیصها دادهها را کپی نمیکنند --- "
356+ "بلکه فقط نامها را به اشیاء متصل میکنند. همین موضوع در مورد حذفها نیز صادق است: "
357+ "دستور ``del x`` اتصال ``x`` را از فضای نامی که توسط محدودهی محلی ارجاع داده شده است، حذف میکند. "
358+ "در واقع، تمام عملیاتی که نامهای جدیدی معرفی میکنند از محدودهی محلی استفاده میکنند: "
359+ "بهویژه، دستورات :keyword:`import` و تعاریف توابع، نام ماژول یا تابع را در محدودهی محلی متصل میکنند."
322360
323361#: ../../tutorial/classes.rst:154
324362msgid ""
@@ -327,10 +365,14 @@ msgid ""
327365"the :keyword:`nonlocal` statement indicates that particular variables live "
328366"in an enclosing scope and should be rebound there."
329367msgstr ""
368+ "از دستور :keyword:`global` میتوان برای نشان دادن این استفاده کرد که متغیرهای خاصی "
369+ "در محدودهی سراسری (global) قرار دارند و باید در همان محدوده دوباره متصل (rebind) شوند؛ "
370+ "دستور :keyword:`nonlocal` نشان میدهد که متغیرهای خاصی در یک محدودهی محاطشونده (enclosing) قرار دارند "
371+ "و باید در آن محدوده دوباره متصل شوند."
330372
331373#: ../../tutorial/classes.rst:162
332374msgid "Scopes and Namespaces Example"
333- msgstr ""
375+ msgstr "مثال محدودهها و فضای نامها "
334376
335377#: ../../tutorial/classes.rst:164
336378msgid ""
0 commit comments