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

۱۵۲ بازدید
آخرین به‌روزرسانی: ۲۸ خرداد ۱۴۰۱
زمان مطالعه: ۴ دقیقه
مفیدترین ترفندهای پایتون — فهرست کاربردی

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

خارج کردن آیتم‌های آرایه از حالت فشرده

با استفاده از روش معرفی‌شده در مثال زیر می‌توانید آیتم‌های آرایه را برحسب نامشان مورد دسترس قرار دهید:

1first_name, last_name = ['Farhad', 'Malik']
2print(first_name) #It will print Farhad
3print(last_name) #It will print Malik

تعویض متغیرها

در مثال زیر با روشی آشنا می‌شوید که امکان تعویض متغیرها را فراهم می‌سازد:

1first_name, last_name = ['Farhad', 'Malik']
2last_name, first_name = first_name, last_name
3print(first_name) #It will print Malik
4print(last_name) #It will print Farhad

پروفایل و آمار کد

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

1import cProfile, pstats, StringIO
2
3pr = cProfile.Profile()
4
5pr.enable()
6
7# ... do something ... pr.disable()
8
9s = StringIO.StringIO()
10
11ps = pstats.Stats(pr, stream=s).sort_stats(‘cumulative’)
12
13ps.print_stats()
14
15print s.getvalue()
16

تکرار رشته

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

1'A'*3 will repeat A three times: AAA

برش دادن

با استفاده از روش ساده معرفی‌شده در کد زیر می‌توانید یک رشته را به هر نوع و طولی که دوست دارید برش دهید:

1y = 'Abc'
2y[:2] = ab
3y[1:] = bc
4y[:-2] = a
5y[-2:] = bc

معکوس‌سازی

در کد زیر مثالی از روش معکوس سازی یک رشته را مشاهده می‌کنید:

1x = 'abc'
2x = x[::-1]

اندیس منفی

اگر می‌خواهید از آخرین کاراکتر یک رشته آغاز کنید، می‌توانید از اندیس منفی استفاده کنید:

1y = 'abc'
2print(y[-1]) # will return c

مجموعه‌های متقاطع

برای این که بتوانید آیتم‌های مشترک دو مجموعه را به دست آورید، می‌توانید از کد زیر استفاده کنید:

1a = {1,2,3}
2b = {3,4,5}
3c = a.intersection(b)

تفاوت مجموعه‌ها

برای به دست آوردن اختلاف بین مجموعه‌ها، یعنی آیتم‌هایی که در اشتراک دو مجموعه نیستند به روش زیر عمل می‌کنیم:

1a = {1,2,3}
2b = {3,4,5}
3c = a.difference(b)

اجتماع کالکشن‌ها

برای به دست آوردن ترکیب صریح دو مجموعه از کد زیر استفاده می‌کنیم:

1a = {1,2,3}
2b = {3,4,5}
3c = a.union(b)

آرگومان‌های اختیاری

با ارائه یک مقدار پیش‌فرض برای یک آرگومان می‌توان آرگومان‌های اختیاری ارسال کرد:

1def my_new_function(my_value='hello'):
2print(my_value)
3#Calling
4
5my_new_function() => prints hello
6my_new_function('test') => prints test

آرگومان‌های ناشناس با استفاده از arguments*

اگر تابع شما می‌تواند هر تعداد آرگومان دریافت کند در این صورت می‌توانید یک کاراکتر ستاره (*) در ابتدای نام پارامتر قرار دهید:

1def myfunc(*arguments):
2 for a in arguments:
3   print a
4myfunc(a)
5myfunc(a,b)
6myfunc(a,b,c)

دیکشنری به عنوان آرگومان با استفاده از arguments**

با بهره‌گیری از arguments** می‌توان تعداد متغیری از آرگومان‌های کلیدواژه را به یک تابع ارسال کرد. بدین ترتیب می‌توان مقادیر دیکشنری را به عنوان آرگومان‌های کلیدواژه ارسال کرد:

1def myfunc(**arguments):
2  return arguments['key']

تابع با خروجی‌های چندگانه

اگر تابعی الزام به بازگشت مقادیر چندگانه داشته باشد، در این صورت:

1resultA, resultB = get_result()
2get_result() can return ('a', 1) which is a tuple

ترفندهای پایتون

حلقه‌های تک‌خطی

با استفاده از روش زیر می‌توانید حلقه‌های تک‌خطی بنویسید:

1[Variable] AggregateFunction([Value] for [item] in [collection])

ترکیب کردن لیست‌ها با استفاده از Zip

در مثال زیر روشی مشاهده می‌کنید که:

  • چند کالکشن می‌گیرد و یک کالکشن جدید بازمی‌گرداند.
  • کالکشن جدید شامل آیتم‌هایی است که در آن هر آیتم شامل عناصری از هر کالکشن ورودی است.
  • این روش امکان پیمایش چند کالکشن را به طور همزمان فراهم می‌سازد:
1name = 'farhad'
2suffix = [1,2,3,4,5,6]
3zip(name, suffix)
4--> returns (f,1), (a,2), (r,3), (h,4), (a,5), (d,6)

آزادسازی حافظه

فرایند garbage collection دستی را می‌توان به صورت زمان‌بندی‌شده یا با سازوکاری مبتنی بر رویداد اجرا کرد:

1import gc
2collected_objects = gc.collect()

استفاده از دکوراتورها

  • دکوراتورها می‌توانند بر کارکرد کد بیفزایند. آن‌ها اساساً تابع‌هایی هستند که شیءها / تابع‌های دیگر را فراخوانی می‌کنند. آن‌ها تابع‌های قابل فراخوانی هستند و از این رو شیئی بازگشت می‌دهند که می‌توان در ادامه هنگامی که تابع دکوراتور اجرا می‌شود، فراخوانی شود.
  • دکوراتورها امکان برنامه‌نویسی «جنبه گرا» (aspect-oriented) را فراهم می‌سازند.
  • ما می‌توانیم یک کلاس/تابع را پوشش دهیم و سپس هر زمان که تابعی فراخوانی شود، یک کد خاص اجرا می‌‌شود.

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

1def my_logger(function):
2   
3    @functools.wraps(function)
4    
5def logger(*args, **kwargs):
6        print(function.__name__)
7        
8return function(*args, **kwargs)
9    
10return logger

اکنون از آن در تابع خود استفاده می‌کنیم:

1@my_logger
2def hi():
3  print 'hi'
4@my_logger
5def bye(a):
6  print 'bye' + a

Unzip کردن

در کد زیر با روش Unzip کردن آشنا می‌شویم:

1name = 'farhad'
2suffix = [1,2,3,4,5,6]
3result = zip(name, suffix)
4--> returns (f,1),(a,2),(r,3),(h,4),(a,5),(d,6)
5unzipped = zip(*result)

الحاق کالکشن

در این بخش با کد مرتبط با روش الحاق دو کالکشن مختلف با هم آشنا می‌شویم:

1name = ["FinTech", "Explained"]
2print(" ".join(name))

دسترسی به حافظه یک شیء

در برخی موارد لازم است که مستقیماً به آدرس حافظه یک متغیر دسترسی داشته باشیم:

1import sys
2x = 'farhadmalik'
3print(sys.getsizeof(x))

نمایش دایرکتوری جاری

برای نمایش دایرکتوری کنونی که در آن قرار دارید‌، می‌توانید از کد زیر استفاده کنید:

1import os
2print(os.getcwd())

نمایش ماژول‌های ایمپورت شده

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

1import sys
2imported_modules = [m.__name__ for m in sys.modules.values() if m]

دریافت شناسه پردازش جاری

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

1import os
2os.getpid()

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

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۲ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
fintechexplained
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *