Skip to content

Commit b62ac15

Browse files
committed
Final fixes for the translations
1 parent 17046d4 commit b62ac15

1 file changed

Lines changed: 31 additions & 16 deletions

File tree

translations/fa-farsi/README.md

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1916,7 +1916,7 @@ some_dict = {'s': 42}
19161916
str
19171917
>>> s = SomeClass('s')
19181918
>>> some_dict[s] = 40
1919-
>>> some_dict # expected: Two different keys-value pairs
1919+
>>> some_dict # دو عدد کلید-مقدار توقع می رود.
19201920
{'s': 40}
19211921
>>> type(list(some_dict.keys())[0])
19221922
str
@@ -1972,9 +1972,11 @@ a, b = a[b] = {}, 5
19721972
#### 💡 توضیح:
19731973
19741974
* طبق [مرجع زبان پایتون](https://docs.python.org/3/reference/simple_stmts.html#assignment-statements)، دستورات انتساب فرم زیر را دارند:
1975+
19751976
```
19761977
(target_list "=")+ (expression_list | yield_expression)
19771978
```
1979+
19781980
و
19791981
19801982
> یک دستور انتساب ابتدا فهرست عبارت‌ها (expression list) را ارزیابی می‌کند (توجه کنید این عبارت می‌تواند یک عبارت تکی یا فهرستی از عبارت‌ها جداشده با ویرگول باشد که دومی به یک تاپل منجر می‌شود)، سپس شیء حاصل را به هریک از اهداف انتساب از **چپ به راست** تخصیص می‌دهد.
@@ -2264,7 +2266,7 @@ for idx, item in enumerate(list_4):
22642266
```
22652267
22662268
**تفاوت بین `del`، `remove` و `pop`:**
2267-
* `del var_name` فقط اتصال `var_name` را از فضای نام محلی یا سراسری حذف می‌کند (به همین دلیل است که `list_1` تحت تأثیر قرار نمی‌گیرد).
2269+
* اینجا، `del var_name` فقط اتصال `var_name` را از فضای نام محلی یا سراسری حذف می‌کند (به همین دلیل است که `list_1` تحت تأثیر قرار نمی‌گیرد).
22682270
* متد `remove` اولین مقدار مطابق را حذف می‌کند، نه یک اندیس خاص را؛ اگر مقدار مورد نظر پیدا نشود، خطای `ValueError` ایجاد می‌شود.
22692271
* متد `pop` عنصری را در یک اندیس مشخص حذف کرده و آن را برمی‌گرداند؛ اگر اندیس نامعتبری مشخص شود، خطای `IndexError` ایجاد می‌شود.
22702272
@@ -2290,7 +2292,7 @@ for idx, item in enumerate(list_4):
22902292
>>> numbers_iter = iter(numbers)
22912293
>>> list(zip(numbers_iter, first_three))
22922294
[(0, 0), (1, 1), (2, 2)]
2293-
# so far so good, let's zip the remaining
2295+
# تاحالا که خوب بوده، حالا روی باقی مانده های زیپ رو امتحان می کنیم.
22942296
>>> list(zip(numbers_iter, remaining))
22952297
[(4, 3), (5, 4), (6, 5)]
22962298
```
@@ -2299,6 +2301,7 @@ for idx, item in enumerate(list_4):
22992301
#### 💡 توضیح:
23002302
23012303
- بر اساس [مستندات](https://docs.python.org/3.3/library/functions.html#zip) پایتون، پیاده‌سازی تقریبی تابع `zip` به شکل زیر است:
2304+
23022305
```py
23032306
def zip(*iterables):
23042307
sentinel = object()
@@ -2311,9 +2314,11 @@ for idx, item in enumerate(list_4):
23112314
result.append(elem)
23122315
yield tuple(result)
23132316
```
2317+
23142318
- بنابراین این تابع تعداد دلخواهی از اشیای قابل پیمایش (*iterable*) را دریافت می‌کند، و با فراخوانی تابع `next` روی آن‌ها، هر یک از عناصرشان را به لیست `result` اضافه می‌کند. این فرایند زمانی متوقف می‌شود که اولین پیمایشگر به انتها برسد.
23152319
- نکته مهم اینجاست که هر زمان یکی از پیمایشگرها به پایان برسد، عناصر موجود در لیست `result` نیز دور ریخته می‌شوند. این دقیقاً همان اتفاقی است که برای عدد `3` در `numbers_iter` رخ داد.
23162320
- روش صحیح برای انجام عملیات بالا با استفاده از تابع `zip` چنین است:
2321+
23172322
```py
23182323
>>> numbers = list(range(7))
23192324
>>> numbers_iter = iter(numbers)
@@ -2322,6 +2327,7 @@ for idx, item in enumerate(list_4):
23222327
>>> list(zip(remaining, numbers_iter))
23232328
[(3, 3), (4, 4), (5, 5), (6, 6)]
23242329
```
2330+
23252331
اولین آرگومانِ تابع `zip` باید پیمایشگری باشد که کمترین تعداد عنصر را دارد.
23262332
23272333
---
@@ -2482,7 +2488,8 @@ SyntaxError: invalid syntax
24822488
24832489
#### 💡 توضیح
24842490
2485-
* To add multiple Exceptions to the except clause, you need to pass them as parenthesized tuple as the first argument. The second argument is an optional name, which when supplied will bind the Exception instance that has been raised. Example,
2491+
* برای افزودن چندین استثنا به عبارت `except`، باید آن‌ها را به صورت یک تاپل پرانتزدار به عنوان آرگومان اول وارد کنید. آرگومان دوم یک نام اختیاری است که در صورت ارائه، نمونهٔ Exception ایجادشده را به آن متصل می‌کند. برای مثال:
2492+
24862493
```py
24872494
some_list = [1, 2, 3]
24882495
try:
@@ -2492,20 +2499,25 @@ SyntaxError: invalid syntax
24922499
print("Caught again!")
24932500
print(e)
24942501
```
2502+
24952503
**خروجی (Python 2.x):**
2504+
24962505
```
24972506
Caught again!
24982507
list.remove(x): x not in list
24992508
```
2509+
25002510
**خروجی (Python 3.x):**
2511+
25012512
```py
25022513
File "<input>", line 4
25032514
except (IndexError, ValueError), e:
25042515
^
25052516
IndentationError: unindent does not match any outer indentation level
25062517
```
25072518
2508-
* Separating the exception from the variable with a comma is deprecated and does not work in Python 3; the correct way is to use `as`. Example,
2519+
* جدا کردن استثنا از متغیر با استفاده از ویرگول منسوخ شده و در پایتون 3 کار نمی‌کند؛ روش صحیح استفاده از `as` است. برای مثال:
2520+
25092521
```py
25102522
some_list = [1, 2, 3]
25112523
try:
@@ -2515,7 +2527,9 @@ SyntaxError: invalid syntax
25152527
print("Caught again!")
25162528
print(e)
25172529
```
2530+
25182531
**خروجی:**
2532+
25192533
```
25202534
Caught again!
25212535
list.remove(x): x not in list
@@ -2796,7 +2810,7 @@ def similar_recursive_func(a):
27962810
`x, y = (0, 1) if True else (None, None)`
27972811
27982812
* برای مورد ۲، عبارت صحیح برای رفتار مورد انتظار این است:
2799-
`t = ('one',)` یا `t = 'one',` (ویرگول از قلم افتاده است). در غیر این صورت مفسر `t` را به عنوان یک `str` در نظر گرفته و به صورت کاراکتر به کاراکتر روی آن پیمایش می‌کند.
2813+
اینجا، `t = ('one',)` یا `t = 'one',` (ویرگول از قلم افتاده است). در غیر این صورت مفسر `t` را به عنوان یک `str` در نظر گرفته و به صورت کاراکتر به کاراکتر روی آن پیمایش می‌کند.
28002814
28012815
* علامت `()` یک توکن خاص است و نشان‌دهنده‌ی یک `tuple` خالی است.
28022816
@@ -2840,15 +2854,15 @@ def similar_recursive_func(a):
28402854
>>> 'a'.split()
28412855
['a']
28422856
2843-
# is same as
2857+
# معادل است با
28442858
>>> 'a'.split(' ')
28452859
['a']
28462860
2847-
# but
2861+
# اما
28482862
>>> len(''.split())
28492863
0
28502864
2851-
# isn't the same as
2865+
# معادل نیست با
28522866
>>> len(''.split(' '))
28532867
1
28542868
```
@@ -2859,6 +2873,7 @@ def similar_recursive_func(a):
28592873
> اگر `sep` مشخص نشده یا برابر با `None` باشد، یک الگوریتم متفاوت برای جدا کردن اعمال می‌شود: رشته‌هایی از فاصله‌های متوالی به عنوان یک جداکننده‌ی واحد در نظر گرفته شده و در نتیجه، هیچ رشته‌ی خالی‌ای در ابتدا یا انتهای لیست خروجی قرار نمی‌گیرد، حتی اگر رشته‌ی اولیه دارای فاصله‌های اضافی در ابتدا یا انتها باشد. به همین دلیل، تقسیم یک رشته‌ی خالی یا رشته‌ای که فقط شامل فضای خالی است با جداکننده‌ی `None` باعث بازگشت یک لیست خالی `[]` می‌شود.
28602874
> اگر `sep` مشخص شود، جداکننده‌های متوالی در کنار هم قرار نمی‌گیرند و هر جداکننده، یک رشته‌ی خالی جدید ایجاد می‌کند. (مثلاً `'1,,2'.split(',')` مقدار `['1', '', '2']` را برمی‌گرداند.) تقسیم یک رشته‌ی خالی با یک جداکننده‌ی مشخص‌شده نیز باعث بازگشت `['']` می‌شود.
28612875
- توجه به اینکه چگونه فضای خالی در ابتدا و انتهای رشته در قطعه‌ی کد زیر مدیریت شده است، این مفهوم را روشن‌تر می‌کند:
2876+
28622877
```py
28632878
>>> ' a '.split(' ')
28642879
['', 'a', '']
@@ -2992,11 +3007,11 @@ if noon_time:
29923007
```py
29933008
('Time at noon is', datetime.time(12, 0))
29943009
```
2995-
The midnight time is not printed.
3010+
زمان نیمه‌شب چاپ نمی‌شود.
29963011
29973012
#### 💡 توضیح:
29983013
2999-
Before Python 3.5, the boolean value for `datetime.time` object was considered to be `False` if it represented midnight in UTC. It is error-prone when using the `if obj:` syntax to check if the `obj` is null or some equivalent of "empty."
3014+
پیش از پایتون 3.5، مقدار بولی برای شیء `datetime.time` اگر نشان‌دهندهٔ نیمه‌شب به وقت UTC بود، برابر با `False` در نظر گرفته می‌شد. این رفتار در استفاده از دستور `if obj:` برای بررسی تهی بودن شیء یا برابر بودن آن با مقدار "خالی"، ممکن است باعث بروز خطا شود.
30003015
30013016
---
30023017
---
@@ -3118,7 +3133,7 @@ True
31183133
import this
31193134
```
31203135
3121-
Wait, what's **this**? `this` is love :heart:
3136+
صبر کن، **این** چیه؟ `this` عشقه :heart:
31223137
31233138
**خروجی:**
31243139
```
@@ -3213,7 +3228,7 @@ Try block executed successfully...
32133228
- عبارت `else` پس از بلاک `try` به عنوان «عبارت تکمیل» (`completion clause`) نیز شناخته می‌شود؛ چراکه رسیدن به عبارت `else` در ساختار `try` به این معنی است که بلاک `try` بدون رخ دادن استثنا با موفقیت تکمیل شده است.
32143229
32153230
---
3216-
### ◀ Ellipsis *
3231+
### ◀ عملگر Ellipsis *
32173232
<!-- Example ID: 969b7100-ab3d-4a7d-ad7d-a6be16181b2b --->
32183233
```py
32193234
def some_func():
@@ -3240,7 +3255,7 @@ Ellipsis
32403255
>>> ...
32413256
Ellipsis
32423257
```
3243-
- `Ellipsis` می‌تواند برای چندین منظور استفاده شود:
3258+
- عملگر `Ellipsis` می‌تواند برای چندین منظور استفاده شود:
32443259
+ به عنوان یک نگه‌دارنده برای کدی که هنوز نوشته نشده است (مانند دستور `pass`)
32453260
+ در سینتکس برش (`slicing`) برای نمایش برش کامل در ابعاد باقی‌مانده
32463261
@@ -3810,9 +3825,9 @@ def dict_size(o):
38103825
```py
38113826
>>> some_str = "wtfpython"
38123827
>>> some_list = ['w', 't', 'f', 'p', 'y', 't', 'h', 'o', 'n']
3813-
>>> some_list is some_list[:] # False expected because a new object is created.
3828+
>>> some_list is some_list[:] # انتظار می‌رود False باشد چون یک شیء جدید ایجاد شده است.
38143829
False
3815-
>>> some_str is some_str[:] # True because strings are immutable, so making a new object is of not much use.
3830+
>>> some_str is some_str[:] # True چون رشته‌ها تغییرناپذیر هستند، بنابراین ساختن یک شیء جدید فایده‌ای ندارد.
38163831
True
38173832
```
38183833

0 commit comments

Comments
 (0)