mirror of
https://github.com/satwikkansal/wtfpython
synced 2025-05-19 18:53:46 +02:00
add first example in farsi
This commit is contained in:
parent
ed79efdb4e
commit
1280f9c670
60
translations/fa-farsi/README.md
vendored
60
translations/fa-farsi/README.md
vendored
@ -42,10 +42,10 @@
|
|||||||
- [فهرست مطالب](#فهرست-مطالب)
|
- [فهرست مطالب](#فهرست-مطالب)
|
||||||
- [ساختار مثالها](#structure-of-the-examples)
|
- [ساختار مثالها](#structure-of-the-examples)
|
||||||
- [استفاده](#استفاده)
|
- [استفاده](#استفاده)
|
||||||
- [👀 Examples](#-examples)
|
- [👀 مثالها](#-مثالها)
|
||||||
- [Section: Strain your brain!](#section-strain-your-brain)
|
- [بخش: ذهن خود را به چالش بکشید!](#بخش-ذهن-خود-را-به-چالش-بکشید)
|
||||||
- [▶ First things first! \*](#-first-things-first-)
|
- [▶ اول از همه! \*](#-اول-از-همه-)
|
||||||
- [💡 Explanation](#-explanation)
|
- [💡 توضیحات](#-توضیحات)
|
||||||
- [▶ بعضی وقتها رشتهها میتوانند دردسرساز شوند](#-بعضی-وقتها-رشتهها-میتوانند-دردسرساز-شوند)
|
- [▶ بعضی وقتها رشتهها میتوانند دردسرساز شوند](#-بعضی-وقتها-رشتهها-میتوانند-دردسرساز-شوند)
|
||||||
- [💡 Explanation:](#-explanation-1)
|
- [💡 Explanation:](#-explanation-1)
|
||||||
- [▶ Be careful with chained operations](#-be-careful-with-chained-operations)
|
- [▶ Be careful with chained operations](#-be-careful-with-chained-operations)
|
||||||
@ -234,16 +234,16 @@
|
|||||||
- اگه میدونید، به افتخار خودتون یه دست محکم بزنید و برید سراغ مثال بعدی.
|
- اگه میدونید، به افتخار خودتون یه دست محکم بزنید و برید سراغ مثال بعدی.
|
||||||
---
|
---
|
||||||
|
|
||||||
# 👀 Examples
|
# 👀 مثالها
|
||||||
|
|
||||||
## Section: Strain your brain!
|
## بخش: ذهن خود را به چالش بکشید!
|
||||||
|
|
||||||
### ▶ First things first! *
|
### ▶ اول از همه! *
|
||||||
|
|
||||||
<!-- Example ID: d3d73936-3cf1-4632-b5ab-817981338863 -->
|
<!-- Example ID: d3d73936-3cf1-4632-b5ab-817981338863 -->
|
||||||
<!-- read-only -->
|
<!-- read-only -->
|
||||||
|
|
||||||
For some reason, the Python 3.8's "Walrus" operator (`:=`) has become quite popular. Let's check it out,
|
به دلایلی، عملگر "Walrus" (`:=`) که در نسخه ۳.۸ پایتون معرفی شد، خیلی محبوب شده. بیاید بررسیش کنیم.
|
||||||
|
|
||||||
1\.
|
1\.
|
||||||
|
|
||||||
@ -260,7 +260,7 @@ File "<stdin>", line 1
|
|||||||
^
|
^
|
||||||
SyntaxError: invalid syntax
|
SyntaxError: invalid syntax
|
||||||
|
|
||||||
>>> (a := "wtf_walrus") # This works though
|
>>> (a := "wtf_walrus") # ولی این کار میکنه
|
||||||
'wtf_walrus'
|
'wtf_walrus'
|
||||||
>>> a
|
>>> a
|
||||||
'wtf_walrus'
|
'wtf_walrus'
|
||||||
@ -280,19 +280,19 @@ SyntaxError: invalid syntax
|
|||||||
>>> a
|
>>> a
|
||||||
6
|
6
|
||||||
|
|
||||||
>>> a, b = 6, 9 # Typical unpacking
|
>>> a, b = 6, 9 # باز کردن معمولی
|
||||||
>>> a, b
|
>>> a, b
|
||||||
(6, 9)
|
(6, 9)
|
||||||
>>> (a, b = 16, 19) # Oops
|
>>> (a, b = 16, 19) # آخ آخ
|
||||||
File "<stdin>", line 1
|
File "<stdin>", line 1
|
||||||
(a, b = 16, 19)
|
(a, b = 16, 19)
|
||||||
^
|
^
|
||||||
SyntaxError: invalid syntax
|
SyntaxError: invalid syntax
|
||||||
|
|
||||||
>>> (a, b := 16, 19) # This prints out a weird 3-tuple
|
>>> (a, b := 16, 19) # این یه تاپل ۳تایی چاپ میکنه رو صفحه
|
||||||
(6, 16, 19)
|
(6, 16, 19)
|
||||||
|
|
||||||
>>> a # a is still unchanged?
|
>>> a # هنوز تغییر نکرده؟
|
||||||
6
|
6
|
||||||
|
|
||||||
>>> b
|
>>> b
|
||||||
@ -301,33 +301,35 @@ SyntaxError: invalid syntax
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### 💡 Explanation
|
#### 💡 توضیحات
|
||||||
|
|
||||||
**Quick walrus operator refresher**
|
**مرور سریع بر عملگر Walrus**
|
||||||
|
|
||||||
The Walrus operator (`:=`) was introduced in Python 3.8, it can be useful in situations where you'd want to assign values to variables within an expression.
|
عملگر Walrus همونطور که اشاره شد، در نسخه ۳.۸ پایتون معرفی
|
||||||
|
شد. این عملگر میتونه تو مقعیتهایی کاربردی باشه که شما میخواید داخل یه عبارت، مقادیری رو به متغیرها اختصاص بدید
|
||||||
|
|
||||||
```py
|
```py
|
||||||
def some_func():
|
def some_func():
|
||||||
# Assume some expensive computation here
|
# فرض کنید اینجا یک سری محاسبه سنگین انجام میشه
|
||||||
# time.sleep(1000)
|
# time.sleep(1000)
|
||||||
return 5
|
return 5
|
||||||
|
|
||||||
# So instead of,
|
# پس به جای اینکه این کارو بکنید:
|
||||||
if some_func():
|
if some_func():
|
||||||
print(some_func()) # Which is bad practice since computation is happening twice
|
print(some_func()) # که خیلی راه نادرستیه چون محاسبه دوبار انجام میشه
|
||||||
|
|
||||||
# or
|
# یا حتی این کارو کنید (که کار بدی هم نیست)
|
||||||
a = some_func()
|
a = some_func()
|
||||||
if a:
|
if a:
|
||||||
print(a)
|
print(a)
|
||||||
|
|
||||||
# Now you can concisely write
|
# میتونید از این به بعد به طور مختصر بنویسید:
|
||||||
if a := some_func():
|
if a := some_func():
|
||||||
print(a)
|
print(a)
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**Output (> 3.8):**
|
**خروجی (+۳.۸):**
|
||||||
|
|
||||||
```py
|
```py
|
||||||
5
|
5
|
||||||
@ -335,15 +337,15 @@ if a := some_func():
|
|||||||
5
|
5
|
||||||
```
|
```
|
||||||
|
|
||||||
This saved one line of code, and implicitly prevented invoking `some_func` twice.
|
این باعث میشه که یک خط کمتر کد بزنیم و از دوبار فراخوندن `some_func` جلوگیری کرد.
|
||||||
|
|
||||||
- Unparenthesized "assignment expression" (use of walrus operator), is restricted at the top level, hence the `SyntaxError` in the `a := "wtf_walrus"` statement of the first snippet. Parenthesizing it worked as expected and assigned `a`.
|
- "عبارت اختصاصدادن مقدار" بدون پرانتز (نحوه استفاده عملگر Walrus)، در سطح بالا محدود است، `SyntaxError` در عبارت `a := "wtf_walrus"` در قطعهکد اول به همین دلیل است. قرار دادن آن داخل پرانتز، همانطور که میخواستیم کار کرد و مقدار را به `a` اختصاص داد.
|
||||||
|
|
||||||
- As usual, parenthesizing of an expression containing `=` operator is not allowed. Hence the syntax error in `(a, b = 6, 9)`.
|
- به طور معمول، قرار دادن عبارتی که دارای `=` است داخل پرانتز مجاز نیست. به همین دلیل عبارت `(a, b = 6, 9)` به ما خطای سینتکس داد.
|
||||||
|
|
||||||
- The syntax of the Walrus operator is of the form `NAME:= expr`, where `NAME` is a valid identifier, and `expr` is a valid expression. Hence, iterable packing and unpacking are not supported which means,
|
- قائده استفاده از عملگر Walrus به صورت `NAME:= expr` است، به طوری که `NAME` یک شناسه صحیح و `expr` یک عبارت صحیح است. به همین دلیل باز و بسته کردن با تکرار (iterable) پشتیبانی نمیشوند. پس،
|
||||||
|
|
||||||
- `(a := 6, 9)` is equivalent to `((a := 6), 9)` and ultimately `(a, 9) ` (where `a`'s value is 6')
|
- عبارت `(a := 6, 9)` معادل عبارت `((a := 6), 9)` و در نهایت `(a, 9)` است. (که مقدار `a` عدد 6 است)
|
||||||
|
|
||||||
```py
|
```py
|
||||||
>>> (a := 6, 9) == ((a := 6), 9)
|
>>> (a := 6, 9) == ((a := 6), 9)
|
||||||
@ -351,11 +353,11 @@ This saved one line of code, and implicitly prevented invoking `some_func` twice
|
|||||||
>>> x = (a := 696, 9)
|
>>> x = (a := 696, 9)
|
||||||
>>> x
|
>>> x
|
||||||
(696, 9)
|
(696, 9)
|
||||||
>>> x[0] is a # Both reference same memory location
|
>>> x[0] is a # هر دو به یک مکان در حافظه دستگاه اشاره میکنند
|
||||||
True
|
True
|
||||||
```
|
```
|
||||||
|
|
||||||
- Similarly, `(a, b := 16, 19)` is equivalent to `(a, (b := 16), 19)` which is nothing but a 3-tuple.
|
- به طور مشابه، عبارت `(a, b := 16, 19)` معادل عبارت `(a, (b := 16), 19)` است که چیزی جز یک تاپل ۳تایی نیست.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user