وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

مقدمه ای بر سبک کدنویسی پایتون

0 3
زمان لازم برای مطالعه: 6 دقیقه


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

این مقاله تمرکز دارد روی دستورالعمل های ذکر شده در بالا برای نوشتن کد معتبر که نشان دهنده یک روش برنامه نویسی پایتونیک تر است. این مجموعه ای از دستورالعمل هایی است که تمرکز دارد روی استفاده عملی و دستورالعمل‌های بیشتر را می‌توانید در این مقاله بخوانید راهنمای سفر به پایتون و راهنمای سبک PEP8.

تیم پیترز – توسعه‌دهنده پایتون آمریکایی – اصول این زبان را به صورت طنز در Zen of Python ترکیب می‌کند. این قوانین شامل اهداف و سبک اصلی زبان است. امیدواریم که این قوانین به شما کمک کند تا به عنوان یک توسعه دهنده جهت گیری کنید.

ذن پایتون


    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than right now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea -- let's do more of those!
    --Tim Peters

دستورالعمل های برنامه نویسی عمومی

به دنبال Zen of Python، خوانایی کد به حساب می آید. برای اطمینان از قالب بندی مناسب کد، زبان پایتون دارای برخی دستورالعمل های برنامه نویسی است که در PEP8 مشخص شده است – به عنوان مثال تورفتگی ثابت، طول خط خاص، نوشتن یک عبارت در هر خط تنها، و فرمول بندی قطعات کد به روشی نه صریح و نه ضمنی. در ادامه این قوانین را مرحله به مرحله توضیح خواهیم داد.

تورفتگی

تورفتگی برای کلاس ها، توابع (یا متدها)، حلقه ها، شرایط و لیست ها مورد نیاز است. می توانید از جدولگرها یا فاصله ها استفاده کنید، اما نباید هر دو را در یک اسکریپت ترکیب کنید. برای پایتون 3، فاصله ها روش تورفتگی ترجیحی هستند و به طور خاص، چهار فاصله مورد نظر است. به عنوان مثال، یک لیست توصیه می شود به یکی از این دو روش به شرح زیر تعریف شود:

نوشتن لیست ها


numbers = (
    1, 2, 3,
    4, 5, 6
    )


numbers = (
    1, 2, 3,
    4, 5, 6
)

همانطور که در PEP8 اشاره شد، براکت بسته می‌تواند در زیر اولین نویسه بدون فاصله آخرین خط فهرست، مانند “نسخه 1″، یا زیر اولین کاراکتر خطی که لیست را به عنوان شروع می‌کند، ردیف شود. در “نسخه 2”.

استفاده از فاصله ها مستلزم این است که با همان تعداد فاصله در هر سطح تورفتگی کار کنیم. مثال بعدی به شما نشان می دهد که چگونه نه برای نوشتن کد خود، که جدولگرها و تعداد متفاوتی از فاصله ها را با هم ترکیب می کند روی هر خط.

پیشنهاد می‌کنیم بخوانید:  پایتون: بررسی کنید که آیا متغیر یک لیست است یا خیر

مثال بد

def draw_point(x, y):
  """draws a point at position x,y"""
    
    if (x > 0):
      set_point(x, y)
  return

به منظور تورفتگی بلوک های کد به درستی، مثال بعدی از چهار فاصله در هر سطح تورفتگی استفاده می کند، در نتیجه:

مثال خوب

def draw_point(x, y):
    """draws a point at position x,y"""

    if (x > 0):
        set_point(x, y)
    return

یک بیانیه در هر خط

مثال بالا از قانون مهم دیگری در مورد نوشتن کد پیروی می کند: فقط از یک عبارت در هر خط استفاده کنید. اگرچه، زبان پایتون به شما اجازه می‌دهد تا در هر خط چندین دستور بنویسید که با یک نیم‌کولون به صورت زیر از هم جدا می‌شوند:

بد

print ("Berlin"); print ("Cape Town")

if x == 1: print ("Amsterdam")

برای وضوح بهتر کد را به این صورت بنویسید:

خوب

print ("Berlin")
print ("Cape Town")

if x == 1:
    print ("Amsterdam")

این به استفاده از ماژول های پایتون نیز اشاره دارد. بسیاری از مثال های برنامه نویسی دو یا چند ماژول را نشان می دهند که وارد شده اند روی یک خط به صورت زیر:

عمل بد

import sys, os

خیلی بهتر است که import یک ماژول در هر خط، در عوض:

تمرین خوب

import sys
import os

قرار دادن import عبارات در ابتدای فایل، پس از اطلاعات حق چاپ، و رشته های اسناد. علاوه بر این، معمولاً گروه بندی می شود import عبارات به ماژول های استاندارد از کتابخانه Python، ماژول های شخص ثالث مرتبط، و در نهایت واردات ویژه کتابخانه. درج یک خط خالی و همچنین نظرات به خوانایی و درک بهتر کد کمک می کند.

وارد کردن ماژول های خارجی


import os


import re


from xml.sax import make_parser, handler
...

طول خط

یک خط نباید از تعداد 79 کاراکتر تجاوز کند، در حالی که یک رشته مستند یا نظر بیش از 72 کاراکتر نیست. خطوط کد را می توان با استفاده از بک اسلش (\) به شرح زیر است:

کد با خط شکستن

with open('/path/to/some/file/you/want/to/read') as file_1, \
     open('/path/to/some/file/being/written', 'w') as file_2:
    file_2.write(file_1.read())

کد صریح در مقابل کد ضمنی

پایتون به عنوان یک زبان برنامه نویسی به اندازه کافی انعطاف پذیر است که به شما امکان می دهد از “ترفندها” در سراسر کد خود استفاده کنید. اگرچه باید در نظر داشته باشید که چندین بار کد شما توسط توسعه دهندگان دیگر خوانده می شود. برای بهبود خوانایی، بهتر است به جای ایجاد فرضیات ضمنی، مانند استفاده از یک خط یا ترفند، کد واضح بنویسید.

در مثال زیر تابع calculation() دو مقدار را پنهان می کند x و y در یک پارامتر واحد به نام args. این روش نوشتن همچنین به تماس گیرندگان اجازه می دهد تا در صورت تمایل بیشتر یا کمتر از این مقادیر را به تابع ارسال کنند، اما در نگاه اول مشخص نیست.

بد

def calculation(*args):
    """calculation of the total"""

    x, y = args
    return (x+y)

print(calculation(3, 4))

برای وضوح بیشتر توصیه می شود به جای آن، آن را به این صورت بنویسید:

خوب

def calculation(x,y):
    """calculation of the total"""

    total = x + y
    return (total)

print(calculation(3, 4))

کنوانسیون های نامگذاری

تغییرات زیادی برای نام گذاری ماژول ها، کلاس ها، روش ها/توابع و متغیرها وجود دارد. این شامل استفاده از حروف کوچک و بزرگ با یا بدون زیرخط، کلمات بزرگ و سبک های ترکیبی است. با توجه به تنوع زیاد توسعه دهندگان، همه این سبک ها را خواهید یافت، و هماهنگی کمی بین ماژول ها وجود دارد.

پیشنهاد می‌کنیم بخوانید:  خواندن فایل ها با پایتون

تغییرات سبک نامگذاری

shoppingcart = ()  
shopping_cart = () 
SHOPPINGCART = ()  
SHOPPING_CART = () 
ShoppingCart = ()  
shoppingCart = ()  

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

  • نام شناسه ها باید با ASCII سازگار باشد
  • ماژول ها باید دارای نام های کوتاه و تمام حروف کوچک باشند
  • کلاس ها از قرارداد کلمات بزرگ پیروی می کنند
  • استثناها از قرارداد کلمات با حروف بزرگ پیروی می کنند و انتظار می رود این موارد را داشته باشند Error پسوند اگر به خطا اشاره می کنند
  • ثابت ها با حروف بزرگ نوشته می شوند

برای جزئیات بیشتر به استاندارد PEP8 نگاهی بیندازید.

همچنین باید به این نکته اشاره کنیم که هنگام نامگذاری متغیرها در پایتون، استفاده از رویکرد “حروف کوچک با زیرخط” بیشتر “پایتونیک” در نظر گرفته می شود، اگرچه هر رویکردی مجاز است.

اعتبار سنجی سبک کد

دستورالعمل ها برای دستیابی به کدهایی که از شرایط خاصی پیروی می کنند عالی هستند. به عنوان یک برنامه نویس می خواهید مطمئن شوید که تا آنجا که ممکن است آنها را دنبال می کنید. ابزارهای خودکار برای کمک به اعتبار کد خود عالی هستند.

همانطور که در بالا ذکر شد، دستورالعمل ها در PEP8 توضیح داده شده است. در نتیجه، زبان پایتون حاوی یک ابزار خط فرمان متناظر است که به شما کمک می‌کند کد خود را بر اساس دستورالعمل‌ها بررسی کنید. در اصل به عنوان شناخته شده است pep8، این جستجوگر کد به تغییر نام داده شد pycodestyle در سال 2016. توسط مرجع کیفیت کد پایتون نگهداری می شود و به تعدادی از ابزارها مانند تحلیلگرهای کد منبع تعلق دارد. ستون و پی فلکس، بررسی کننده پیچیدگی مک کابی و همچنین بررسی رشته مستندات pydocstyle.

pycodestyle کد پایتون شما را تجزیه و تحلیل می‌کند و تخلفاتی را گزارش می‌کند که خطاهای تورفتگی، خطوط خالی غیرضروری و استفاده از جدول‌سازها به جای فاصله‌ها را پوشش می‌دهد. مثال زیر حاوی یک نمونه خروجی با برخی از خطاها و هشدارهای معمولی است:

$ pycodestyle --first stack.py
stack.py:3:1: E265 block comment should start with '# '
stack.py:12:1: E302 expected 2 blank lines, found 1
stack.py:13:1: W191 indentation contains tabs

در دبیان GNU/لینوکس، ابزار به صورت بسته در دسترس است python-pycodestyle (برای Python 2.x)، و python3-pycodestyle (برای پایتون 3.x). هر دوی آنها دارای تعدادی پارامتر مفید هستند، به عنوان مثال:

  • --first: نمایش اولین وقوع هر خطا (همانطور که در بالا مشاهده می شود). خروجی فایلی را که خطا در آن شناسایی شده است و همچنین شماره خط و ستون را نشان می دهد.
  • --show-source: نمایش کد منبع برای هر خطا
$ pycodestyle --show-source stack.py
stack.py:3:1: E265 block comment should start with '# '

^
stack.py:12:1: E302 expected 2 blank lines, found 1
class Stack:
^
stack.py:13:1: W191 indentation contains tabs
    def __init__(self):
^
...
  • --statistics: شمارش خطاها و هشدارها. در مثال زیر، pycodestyle شناسایی دو خطا – E265 و E302 – و همچنین 30 هشدار (W191).
$ pycodestyle --statistics stack.py
...
1       E265 block comment should start with '# '
1       E302 expected 2 blank lines, found 1
30      W191 indentation contains tabs

همین ابزار نیز هست آنلاین موجود است. فقط کد خود را کپی کرده و در ابزار قرار دهید و نتیجه اعتبار سنجی را ببینید.

نتیجه تایید pep8online.com

نتیجه

نوشتن کد پایتون مناسب همیشه آسان نیست. اما خوشبختانه دستورالعمل هایی وجود دارد که کمک می کند، و همچنین ابزارهای خط فرمان برای اطمینان از اینکه کد شما با این دستورالعمل ها مطابقت دارد. با منابع مختلف در دسترس می تواند بسیار آسان باشد 🙂

سپاسگزاریها

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

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-27 21:48:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید