9 быстрых уловок, чтобы ваш код на Python был аккуратным.

9 быстрых уловок, чтобы ваш код на Python был аккуратным.


Благодаря прекрасной простоте Python предлагает множество способов выполнения одной и той же задачи. Кроме того, это очень интуитивный и простой язык для чтения и письма. Тем не менее, с Python легко увлечься и сделать так, чтобы всё выглядело сложнее, чем должно быть. PEP8, руководство в стиле Python, содержит некоторые рекомендации по поддержанию чистоты на Python. Вот краткий список из 10 пунктов, которые вы можете сразу же начать делать в своём коде.

1.Изпользуйте строки документации

Используйте """Тройные двойные кавычки”"", чтобы написать строки, которые ясно объясняют назначение вашей функции, модуля и скрипта в целом, даже если вы комментируете его в противном случае. Не забудьте закончить свои строки-документы точкой. (.)

def get_percent_sales(product,sales,region):

“““Return the product Sales volumes in percent of total in country.
Get percentage of product sales of the region.
This function gets the product and corresponding sales by region and returns a percent sales of the region by total sales in that country. Region input is accepted only by city. Districts are not accepted. If city name is not found, exception is thrown.
         Parameters: 
             product (str) : Product name
             sales (int) : Sales Volume
         Returns: 
             percent_sales (float): Percent of total sales of    
                                    product.
"""

2. Сделайте ваши логические утверждения интуитивно понятными для чтения

Так не надо:

if is_white == False

if not is_white == False

Так надо:

is_white = True

if is_white:
else: 

3. Использовать .join вместо + для выполнения конкатенирования строк

Так не надо:

my_name = ‘firstname’+ ‘ ‘ + ‘lastname’

Так надо:

my_name = " ".join(['firstname','lastname'])

4.Если вы присваиваете значение переменной, используйте функции def вместо lambda

Оставьте lambda-функции для вычисления внутри выражений.

Так не надо:

squared = lamdba x: x**2

Так надо:

def squared(x):
   return x**2

5.Ломайте эти длинные строки

Обратите внимание на строку обертки текста. Оставайтесь внутри оберточной строки в редакторе.

Так не надо:

df = pd.read_excel('This/extremely/long/file/path/that/extends/ /to/the/next/line/and/screws/with/indentation.xlsx')

mylist = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20000,30000,3100000320000]

Делайте backslash и неявное продолжение:

 filepath = "this/sweet/line/" \
           "continued/prettily/"\
           "looksbetter.xlsx"

df = pd.read_excel(filepath)
my_list = [1,2,3,4,5,6,7,8,9,10,11,
          12,13,14,15,16,17,18,19,
          20000,30000,3100000,320000]
if this_happens or that_happens \
   or these_happen:
      print('blah')
else:
   print('the other blah')
Image for post

6.Используйте диапазон вместо списка, где это возможно

Так не надо:

indices = [0,2,4,6,8,10]

for idX in indices:
    print(name[idX])

Так надо:

for idX in range(0,12,2):

    print(name[idX])

7.Держите минимальное количество кода под Try блоками

Так не надо:

try:

   names = get_data(students, classroom)
   numbers = get_scores(students, classroom)
   return names,numbers
except KeyError: 

Так надо:

try:

    names = get_data(students, classroom)
    numbers = get_scores(students, classroom)
except KeyError:
    print('That's not a student in this classroom!')
return names, numbers

8.Используйте наборы немного больше, чем вы уже делаете

Комплекты ставят производительность над функциональностью. Если в текущей ситуации вам не требуется много функциональности, предпочитайте наборы другим структурам данных.

data = {‘find_this’, ‘among’, ‘all_the’,'other',’data’}

if‘find_this’ in data:
   print(‘this exists!’)
long_stuff = [‘this’,’list’,’list’,’is’,
             ’enormous’,’oh’,’my’,’god’,
             ’god’,’what’,’is’,
             ’unique’,’unique’]
unique_values = set(long_stuff) 
Image for post

9.Используйте zip для итераций по нескольким спискам

students = [‘tom’,’dick’,’harry’,’larry’,’tim’,’benny’]

scores = [100,20,40,60,30,40]

Так не надо:

for i in range(len(students)):

    print(student[i],scores[i]

Так надо:

for student,score in zip(students,scores):
    print(student,score)

Вот так легко и просто вы можете улучшить свой сценарий с помощью Python. Следуйте руководству по стилю и будьте дружелюбным программистом!






Report Page