You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> یک دستور انتساب ابتدا فهرست عبارتها (expression list) را ارزیابی میکند (توجه کنید این عبارت میتواند یک عبارت تکی یا فهرستی از عبارتها جداشده با ویرگول باشد که دومی به یک تاپل منجر میشود)، سپس شیء حاصل را به هریک از اهداف انتساب از **چپ به راست** تخصیص میدهد.
@@ -2264,7 +2266,7 @@ for idx, item in enumerate(list_4):
2264
2266
```
2265
2267
2266
2268
**تفاوت بین `del`، `remove` و `pop`:**
2267
-
* `del var_name` فقط اتصال `var_name` را از فضای نام محلی یا سراسری حذف میکند (به همین دلیل است که `list_1` تحت تأثیر قرار نمیگیرد).
2269
+
* اینجا، `del var_name` فقط اتصال `var_name` را از فضای نام محلی یا سراسری حذف میکند (به همین دلیل است که `list_1` تحت تأثیر قرار نمیگیرد).
2268
2270
* متد `remove` اولین مقدار مطابق را حذف میکند، نه یک اندیس خاص را؛ اگر مقدار مورد نظر پیدا نشود، خطای `ValueError` ایجاد میشود.
2269
2271
* متد `pop` عنصری را در یک اندیس مشخص حذف کرده و آن را برمیگرداند؛ اگر اندیس نامعتبری مشخص شود، خطای `IndexError` ایجاد میشود.
2270
2272
@@ -2290,7 +2292,7 @@ for idx, item in enumerate(list_4):
2290
2292
>>> numbers_iter = iter(numbers)
2291
2293
>>> list(zip(numbers_iter, first_three))
2292
2294
[(0, 0), (1, 1), (2, 2)]
2293
-
# so far so good, let's zip the remaining
2295
+
# تاحالا که خوب بوده، حالا روی باقی مانده های زیپ رو امتحان می کنیم.
2294
2296
>>> list(zip(numbers_iter, remaining))
2295
2297
[(4, 3), (5, 4), (6, 5)]
2296
2298
```
@@ -2299,6 +2301,7 @@ for idx, item in enumerate(list_4):
2299
2301
#### 💡 توضیح:
2300
2302
2301
2303
- بر اساس [مستندات](https://docs.python.org/3.3/library/functions.html#zip) پایتون، پیادهسازی تقریبی تابع `zip` به شکل زیر است:
2304
+
2302
2305
```py
2303
2306
def zip(*iterables):
2304
2307
sentinel = object()
@@ -2311,9 +2314,11 @@ for idx, item in enumerate(list_4):
2311
2314
result.append(elem)
2312
2315
yield tuple(result)
2313
2316
```
2317
+
2314
2318
- بنابراین این تابع تعداد دلخواهی از اشیای قابل پیمایش (*iterable*) را دریافت میکند، و با فراخوانی تابع `next` روی آنها، هر یک از عناصرشان را به لیست `result` اضافه میکند. این فرایند زمانی متوقف میشود که اولین پیمایشگر به انتها برسد.
2315
2319
- نکته مهم اینجاست که هر زمان یکی از پیمایشگرها به پایان برسد، عناصر موجود در لیست `result` نیز دور ریخته میشوند. این دقیقاً همان اتفاقی است که برای عدد `3` در `numbers_iter` رخ داد.
2316
2320
- روش صحیح برای انجام عملیات بالا با استفاده از تابع `zip` چنین است:
2321
+
2317
2322
```py
2318
2323
>>> numbers = list(range(7))
2319
2324
>>> numbers_iter = iter(numbers)
@@ -2322,6 +2327,7 @@ for idx, item in enumerate(list_4):
2322
2327
>>> list(zip(remaining, numbers_iter))
2323
2328
[(3, 3), (4, 4), (5, 5), (6, 6)]
2324
2329
```
2330
+
2325
2331
اولین آرگومانِ تابع `zip` باید پیمایشگری باشد که کمترین تعداد عنصر را دارد.
2326
2332
2327
2333
---
@@ -2482,7 +2488,8 @@ SyntaxError: invalid syntax
2482
2488
2483
2489
#### 💡 توضیح
2484
2490
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 ایجادشده را به آن متصل میکند. برای مثال:
* برای مورد ۲، عبارت صحیح برای رفتار مورد انتظار این است:
2799
-
`t = ('one',)` یا `t = 'one',` (ویرگول از قلم افتاده است). در غیر این صورت مفسر `t` را به عنوان یک `str` در نظر گرفته و به صورت کاراکتر به کاراکتر روی آن پیمایش میکند.
2813
+
اینجا، `t = ('one',)` یا `t = 'one',` (ویرگول از قلم افتاده است). در غیر این صورت مفسر `t` را به عنوان یک `str` در نظر گرفته و به صورت کاراکتر به کاراکتر روی آن پیمایش میکند.
2800
2814
2801
2815
* علامت `()` یک توکن خاص است و نشاندهندهی یک `tuple` خالی است.
> اگر `sep` مشخص نشده یا برابر با `None` باشد، یک الگوریتم متفاوت برای جدا کردن اعمال میشود: رشتههایی از فاصلههای متوالی به عنوان یک جداکنندهی واحد در نظر گرفته شده و در نتیجه، هیچ رشتهی خالیای در ابتدا یا انتهای لیست خروجی قرار نمیگیرد، حتی اگر رشتهی اولیه دارای فاصلههای اضافی در ابتدا یا انتها باشد. به همین دلیل، تقسیم یک رشتهی خالی یا رشتهای که فقط شامل فضای خالی است با جداکنندهی `None` باعث بازگشت یک لیست خالی `[]` میشود.
2860
2874
> اگر `sep` مشخص شود، جداکنندههای متوالی در کنار هم قرار نمیگیرند و هر جداکننده، یک رشتهی خالی جدید ایجاد میکند. (مثلاً `'1,,2'.split(',')` مقدار `['1', '', '2']` را برمیگرداند.) تقسیم یک رشتهی خالی با یک جداکنندهی مشخصشده نیز باعث بازگشت `['']` میشود.
2861
2875
- توجه به اینکه چگونه فضای خالی در ابتدا و انتهای رشته در قطعهی کد زیر مدیریت شده است، این مفهوم را روشنتر میکند:
2876
+
2862
2877
```py
2863
2878
>>> ' a '.split(' ')
2864
2879
['', 'a', '']
@@ -2992,11 +3007,11 @@ if noon_time:
2992
3007
```py
2993
3008
('Time at noon is', datetime.time(12, 0))
2994
3009
```
2995
-
The midnight time is not printed.
3010
+
زمان نیمهشب چاپ نمیشود.
2996
3011
2997
3012
#### 💡 توضیح:
2998
3013
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:` برای بررسی تهی بودن شیء یا برابر بودن آن با مقدار "خالی"، ممکن است باعث بروز خطا شود.
- عبارت `else` پس از بلاک `try` به عنوان «عبارت تکمیل» (`completion clause`) نیز شناخته میشود؛ چراکه رسیدن به عبارت `else` در ساختار `try` به این معنی است که بلاک `try` بدون رخ دادن استثنا با موفقیت تکمیل شده است.
3214
3229
3215
3230
---
3216
-
### ◀ Ellipsis *
3231
+
### ◀ عملگر Ellipsis *
3217
3232
<!-- Example ID: 969b7100-ab3d-4a7d-ad7d-a6be16181b2b --->
3218
3233
```py
3219
3234
def some_func():
@@ -3240,7 +3255,7 @@ Ellipsis
3240
3255
>>> ...
3241
3256
Ellipsis
3242
3257
```
3243
-
- `Ellipsis` میتواند برای چندین منظور استفاده شود:
3258
+
- عملگر `Ellipsis` میتواند برای چندین منظور استفاده شود:
3244
3259
+ به عنوان یک نگهدارنده برای کدی که هنوز نوشته نشده است (مانند دستور `pass`)
3245
3260
+ در سینتکس برش (`slicing`) برای نمایش برش کامل در ابعاد باقیمانده
0 commit comments