پایتون با چاشنی سرعت

در این پست به 6 نکته می پردازیم که باعث افزایش سرعت کد های پایتون می شود

Fast & Python
Fast & Python



1. ماژول هارا به صورت کامل اضافه نکنیم

اضافه کردن ماژول ها در برنامه نویسی به خصوص با زبان پایتون چیزی اجتناب ناپذیر است اما در خیلی از مواقع ما به یک تابع یا چند کلاس خاص از آن ماژول احتیاج داریم . در چنین مواردی سعی کنید فقط آن توابع و کلاس هارا به برنامه خود اضافه کنید.

برای مثال برنامه محاسبه جذر اعداد:

import math
math.sqrt(100)
کند
کند
from math import sqrt
sqrt(100)
سریع
سریع



2.عدم استفاده از زنجیره . ها (dot)

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

نوشتن کد به این روش مرسوم نیست ولی به عنوان یک برنامه نویس پایتون خوب است بدانیم راه سریع تری هم وجود دارد

برای مثال اضافه کردن یک عدد به لیست و سپس حذف آن :

my_list = [1, 2, 3]
my_list.append(4)
my_list.remove(4)
کند
کند
my_list = [1, 2, 3]
append = my_list.append
remove = my_list.remove
append(4)
remove(4)


سریع
سریع



3. از + برای چسباندن رشته ها به یکدیگر استفاده نکنید

از آنجا که رشته ها در پایتون تغییر ناپذیر (immutable) هستند اینکار بسیار عملکرد برنامه را کاهش میدهد

ممکن است در خیلی از مواقع ما فقط قصد اضافه کردن دو رشته را به هم داشته باشیم در این موارد استفاده از + طول کد را کمتر و خوانایی آن را بیشتر می کند

برای مثال:

strs = ['Life', 'is', 'short,', 'I', 'use', 'Python']
def join_strs(strs):
    result = ''
    for s in strs:
        result += s + ' '
    return result
کند
کند
def join_strs_better(strs):
    return ' '.join(strs)
join_strs_better(strs)
سریع
سریع



4. استفاده نکردن از متغیر اضافه (temp) برای تبادل مقادیر

در بسیاری از زبان ها ما برای عوض کردن مقدار دو متغییر از یک متغییر واسط استفاده میکنیم

ولی پایتون به ما این امکان را میدهد که بدون متغییر اضافی این کار را انجام دهیم

a = 1
b = 2
temp = a
a = b
b = temp 
کند
کند
a = 1
b = 2
a, b = b, a
سریع
سریع




5. استفاده درست چند شرط در if

این مورد در اکثر زبان های برنامه نویسی کاربرد دارد و بهتر است آنرا با یک مثال توضیح دهیم :

فرض کنید لیستی از اسامی و سن آنها داریم و قصد داریم افرادی که سن آنها بزرگتر مساوی 30 و اسمشان با حرف 'C' شروع میشود را جدا کنیم

my_dict = [
{
'name': 'Alice',
'age': 28
},
{
'name': 'Bob',
'age': 23
},
{
'name': 'Chris',
'age': 33
},
{
'name': 'Chelsea',
'age': 2
},
{
'name': 'Carol',
'age': 24
}
]

در نتیجه ما در اینجا دو شرط داریم

  1. سن مساوی یا بالای 30
  2. شروع اسم با حرف 'C'

به دو صورت میتوانیم if مورد نظر را بنویسیم:

در حالت اول ابتدا اسم را چک کرده و سپس سن را . در این حالت در شرط اول که چک کردن اسامی است سه اسم True میشوند و شرط دوم که چک کردن سن است برای هر سه اسم تکرار خواهد شد

در حالت دوم اول سن را چک می کنیم که تنها یک نفر True میشود و سپس اسم آن فرد هم چک میشود

به داخل کد برویم:

filtered_list = []
for person in my_dict:
    if person['name'].startswith('C') and person['age'] >= 30:
        filtered_list.append(person)
کند
کند
سریع
سریع



6. از حلقه while استفاده نکن

ساختار زبان پایتون به صورتی پیاده سازی شده است که حلقه for عملکرد بهتری دارد

پس در مواردی که میتوان از حلقه for استفاده کرد از حلقه while استفاده نکنید

حلقه for علاوه بر عملکرد بهتر زیبایی و خوانایی بیشتری نیز دارد

مثالی برای مورد آخر :

result = 0
max_number = 10
i = 0
while i < 10:
    result += i
    i +=1
کند
کند
result = 0
max_number = 10
for i in range(max_number):
result += i
سریع
سریع



ممنون از همراهیت ❤️

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

https://towardsdatascience.com/6-bad-manners-makes-your-python-program-slower-15b6fce62927