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

در این مقاله به بررسی ترفندهای مفید و مهم زبان برنامهنویسی پایتون میپردازیم. شما با بهرهگیری از این ترفندهای پایتون میتوانید در زمان و تلاش خود صرفهجویی زیادی بکنید.
خارج کردن آیتمهای آرایه از حالت فشرده
با استفاده از روش معرفیشده در مثال زیر میتوانید آیتمهای آرایه را برحسب نامشان مورد دسترس قرار دهید:
first_name, last_name = ['Farhad', 'Malik'] print(first_name) #It will print Farhad print(last_name) #It will print Malik
تعویض متغیرها
در مثال زیر با روشی آشنا میشوید که امکان تعویض متغیرها را فراهم میسازد:
first_name, last_name = ['Farhad', 'Malik'] last_name, first_name = first_name, last_name print(first_name) #It will print Malik print(last_name) #It will print Farhad
پروفایل و آمار کد
با استفاده از کتابخانههای معرفیشده در کد زیر میتوانید به برخی آمار مرتبط با کد پایتون خود دسترسی پیدا کنید:
import cProfile, pstats, StringIO pr = cProfile.Profile() pr.enable() # ... do something ... pr.disable() s = StringIO.StringIO() ps = pstats.Stats(pr, stream=s).sort_stats(‘cumulative’) ps.print_stats() print s.getvalue()
تکرار رشته
شاید برخی اوقات لازم باشد که یک رشته را به مقدار معینی تکرار کنیم. البته انجام این کار در مورد تعداد پایین به صورت دستی بهصرفهتر است، اما زمانی که تعداد بالا باشد، میتوانید از روش زیر برای تکرار رشته کمک بگیرید:
'A'*3 will repeat A three times: AAA
برش دادن
با استفاده از روش ساده معرفیشده در کد زیر میتوانید یک رشته را به هر نوع و طولی که دوست دارید برش دهید:
y = 'Abc' y[:2] = ab y[1:] = bc y[:-2] = a y[-2:] = bc
معکوسسازی
در کد زیر مثالی از روش معکوس سازی یک رشته را مشاهده میکنید:
x = 'abc' x = x[::-1]
اندیس منفی
اگر میخواهید از آخرین کاراکتر یک رشته آغاز کنید، میتوانید از اندیس منفی استفاده کنید:
y = 'abc' print(y[-1]) # will return c
مجموعههای متقاطع
برای این که بتوانید آیتمهای مشترک دو مجموعه را به دست آورید، میتوانید از کد زیر استفاده کنید:
a = {1,2,3} b = {3,4,5} c = a.intersection(b)
تفاوت مجموعهها
برای به دست آوردن اختلاف بین مجموعهها، یعنی آیتمهایی که در اشتراک دو مجموعه نیستند به روش زیر عمل میکنیم:
a = {1,2,3} b = {3,4,5} c = a.difference(b)
اجتماع کالکشنها
برای به دست آوردن ترکیب صریح دو مجموعه از کد زیر استفاده میکنیم:
a = {1,2,3} b = {3,4,5} c = a.union(b)
آرگومانهای اختیاری
با ارائه یک مقدار پیشفرض برای یک آرگومان میتوان آرگومانهای اختیاری ارسال کرد:
def my_new_function(my_value='hello'): print(my_value) #Calling my_new_function() => prints hello my_new_function('test') => prints test
آرگومانهای ناشناس با استفاده از arguments*
اگر تابع شما میتواند هر تعداد آرگومان دریافت کند در این صورت میتوانید یک کاراکتر ستاره (*) در ابتدای نام پارامتر قرار دهید:
def myfunc(*arguments): for a in arguments: print a myfunc(a) myfunc(a,b) myfunc(a,b,c)
دیکشنری به عنوان آرگومان با استفاده از arguments**
با بهرهگیری از arguments** میتوان تعداد متغیری از آرگومانهای کلیدواژه را به یک تابع ارسال کرد. بدین ترتیب میتوان مقادیر دیکشنری را به عنوان آرگومانهای کلیدواژه ارسال کرد:
def myfunc(**arguments): return arguments['key']
تابع با خروجیهای چندگانه
اگر تابعی الزام به بازگشت مقادیر چندگانه داشته باشد، در این صورت:
resultA, resultB = get_result() get_result() can return ('a', 1) which is a tuple
حلقههای تکخطی
با استفاده از روش زیر میتوانید حلقههای تکخطی بنویسید:
[Variable] AggregateFunction([Value] for [item] in [collection])
ترکیب کردن لیستها با استفاده از Zip
در مثال زیر روشی مشاهده میکنید که:
- چند کالکشن میگیرد و یک کالکشن جدید بازمیگرداند.
- کالکشن جدید شامل آیتمهایی است که در آن هر آیتم شامل عناصری از هر کالکشن ورودی است.
- این روش امکان پیمایش چند کالکشن را به طور همزمان فراهم میسازد:
name = 'farhad' suffix = [1,2,3,4,5,6] zip(name, suffix) --> returns (f,1), (a,2), (r,3), (h,4), (a,5), (d,6)
آزادسازی حافظه
فرایند garbage collection دستی را میتوان به صورت زمانبندیشده یا با سازوکاری مبتنی بر رویداد اجرا کرد:
import gc collected_objects = gc.collect()
استفاده از دکوراتورها
- دکوراتورها میتوانند بر کارکرد کد بیفزایند. آنها اساساً تابعهایی هستند که شیءها / تابعهای دیگر را فراخوانی میکنند. آنها تابعهای قابل فراخوانی هستند و از این رو شیئی بازگشت میدهند که میتوان در ادامه هنگامی که تابع دکوراتور اجرا میشود، فراخوانی شود.
- دکوراتورها امکان برنامهنویسی «جنبه گرا» (aspect-oriented) را فراهم میسازند.
- ما میتوانیم یک کلاس/تابع را پوشش دهیم و سپس هر زمان که تابعی فراخوانی شود، یک کد خاص اجرا میشود.
مثال زیر شیوه نمایش نام تابع را نمایش میدهد. این تنها یک کد مثالی است که نشان میدهد چگونه میتوانیم یک دکوراتور را فراخوانی کنیم. میتوان از دکوراتورها برای فراخوانی لاگرها، اجرای عملیات امنیتی و موارد دیگر استفاده کرد.
def my_logger(function): @functools.wraps(function) def logger(*args, **kwargs): print(function.__name__) return function(*args, **kwargs) return logger
اکنون از آن در تابع خود استفاده میکنیم:
@my_logger def hi(): print 'hi' @my_logger def bye(a): print 'bye' + a
Unzip کردن
در کد زیر با روش Unzip کردن آشنا میشویم:
name = 'farhad' suffix = [1,2,3,4,5,6] result = zip(name, suffix) --> returns (f,1),(a,2),(r,3),(h,4),(a,5),(d,6) unzipped = zip(*result)
الحاق کالکشن
در این بخش با کد مرتبط با روش الحاق دو کالکشن مختلف با هم آشنا میشویم:
name = ["FinTech", "Explained"] print(" ".join(name))
دسترسی به حافظه یک شیء
در برخی موارد لازم است که مستقیماً به آدرس حافظه یک متغیر دسترسی داشته باشیم:
import sys x = 'farhadmalik' print(sys.getsizeof(x))
نمایش دایرکتوری جاری
برای نمایش دایرکتوری کنونی که در آن قرار دارید، میتوانید از کد زیر استفاده کنید:
import os print(os.getcwd())
نمایش ماژولهای ایمپورت شده
برای دیدن این که کدام ماژولها در برنامه ایمپورت شدهاند میتوانید از کد زیر استفاده کنید:
import sys imported_modules = [m.__name__ for m in sys.modules.values() if m]
دریافت شناسه پردازش جاری
برای این که شناسه پردازش جاری را به دست آورید میتوانید از کد زیر استفاده کنید:
import os os.getpid()
بدین ترتیب به پایان این مقاله میرسیم. امیدواریم از مطالعه این نکات و ترفندهای زبان برنامهنویسی پایتون لذت برده باشید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون Python
- گنجینه آموزشهای برنامهنویسی پایتون (Python)
- مجموعه آموزشهای برنامهنویسی
- زبان برنامه نویسی پایتون (Python) — از صفر تا صد
- ترفندهای پایتون که باید آنها را بدانید — راهنمای کاربردی
==