آموزش PEP پایتون - فاصله در جملات و اصطلاحات

May 2020

ویدیویی وجود ندارد

در شرایط زیر از بکار بردن فاصله اضافی خودداری کنید:

دقیقا بعد از پرانتز، براکت یا آکولاد:

درست:

spam(ham[1], {eggs: 2})

نادرست:

spam( ham[ 1 ], { eggs: 2 } )

 

بین کاما تمام شونده و پرانتز بسته:

درست:

foo = (0,)

نادرست:

bar = (0, )

 

دقیقا قبل از کاما، سمیکالن یا دوتقطه:

درست:

if x == 4: print x, y; x, y = y, x

نادرست:

if x == 4 : print x , y ; x , y = y , x

 

البته کاراکتر دونقطه در زمان تکه کردن مجموعه‌ها خود به شکل یک عملگر کار میکند و باید به اندازه بقیه فاصله داشته باشد. اگر پارامتر slice حذف شد، فاصله نیز حذف میشود.

درست:

ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]
ham[lower:upper], ham[lower:upper:], ham[lower::step]
ham[lower+offset : upper+offset]
ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]
ham[lower + offset : upper + offset]

نادرست:

ham[lower + offset:upper + offset]
ham[1: 9], ham[1 :9], ham[1:9 :3]
ham[lower : : upper]
ham[ : upper]

 

دقیقا قبل از پرانتز باز برای زمانی که قرار است پارامترهای فانکشن را ارسال کنیم:

درست:

spam(1)

نادرست:

spam (1)

 

دقیقا قبل از براکت باز که برای تکه کردن یا ایندکس کردن بکار میرود:

درست:

dct['key'] = lst[index]

نادرست:

dct ['key'] = lst [index]

 

اطراف کاراکتر = در زمانی که برای انتساب بکار میرود فقط یک فاصله استفاده کنید:

درست:

x = 1
y = 2
long_variable = 3

نادرست:

x             = 1
y             = 2
long_variable = 3

 

توصیه‌های دیگر

همیشه در قبل و بعد از عملگرهای زیر از یک فاصله استفاده کنید.

انتساب(=)، انتساب‌های تکمیلی(+=, -= و غیره)، مقایسه(==, <, >, !=, <>, <=, >=, in, not in, is, is not

Booleans (and, or, not)

 

اگر از عملگرهایی با اولویت متفاوت استفاده میکنید در اطراف عملگرهایی با اولویت پایین از فاصله استفاده کنید.

درست:

i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)

نادرست:

i=i+1
submitted +=1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)

 

زمانی که از = برای مشخص کردن keyword arguement استفاده میشود، در اطراف = از فاصله استفاده نکنید.

درست:

def complex(real, imag=0.0):
    return magic(r=real, i=imag)

نادرست:

def complex(real, imag = 0.0):
    return magic(r = real, i = imag)

 

در زمان استفاده از annotationها بعد از علامت دونقطه و <- حتما از فاصله استفاده کنید:

درست:

def munge(input: AnyStr): ...
def munge() -> AnyStr: ...

نادرست:

def munge(input:AnyStr): ...
def munge()->PosInt: ...

 

زمانی که از annotationها در کنار مقدار پیشفرض استفاده میکنید قبل و بعد از = فاصله بگذارید:

درست:

def munge(sep: AnyStr = None): ...
def munge(input: AnyStr, sep: AnyStr = None, limit=1000): ...

نادرست:

def munge(input: AnyStr=None): ...
def munge(input: AnyStr, limit = 1000): ...

 

استفاده از دستورات تک خطی پیشنهاد نمیشود:

پیشنهاد میشود:

if foo == 'blah':
    do_blah_thing()
do_one()
do_two()
do_three()

پیشنهاد نمیشود:

if foo == 'blah': do_blah_thing()
do_one(); do_two(); do_three()

 

هر چند که اشکالی ندارد زمانی که از if/while/for با بدنه کوتاه استفاده میکند آن را در یک خط بنویسید، اما در صورت چند دستوری بودن اینکار را انجام ندهید:

پیشنهاد نمیشود:

if foo == 'blah': do_blah_thing()
for x in lst: total += x
while t < 10: t = delay()

اصلا پیشنهاد نمیشود:

if foo == 'blah': do_blah_thing()
else: do_non_blah_thing()

try: something()
finally: cleanup()

do_one(); do_two(); do_three(long, argument,
                             list, like, this)

if foo == 'blah': one(); two(); three()

 

ارسال نظر

اگر قراره سوالی بپرسید که داخلش کد هست، بهتره از کدتون عکس بگیرید و به ایمیلی که پایین نوشتم بفرستید