همانطور که در مقالات پیشین مطالعه کردید، زبان برنامه نویسی پایتون، از زبانهای محبوب و مشهور برای برنامه نویسان چه مبتدی، چه حرفهای، در حوزه های مختلف میباشد. بسیاری از برنامه نویسان بعد از یادگیری این زبان، به دنبال ترفندهای کاربردی پایتون هستند تا با این ترفندها کدنویسی بهتر و راحت تری با توابع و کتابخانه ها و … داشته باشند. در این مقاله سعی کردیم ترفندهای اساسی پایتون را که کمتر جایی میتوانید آنها را بیابید، برایتان آماده و در اختیار شما عزیزان قرار دهیم.
ترفندهای کاربردی پایتون
همه یا هر کدام (all or any)
یکی از دلایل بسیار محبوبیت زبان پایتون این است که بسیار خوانا و رسا است. مردم اغلب به شوخی میگویند که پایتون یک شبه کد اجرایی است. وقتی میتوانید کدی به این شکل بنویسید، بحث در مورد آن سخت است.
x = [True, True, False] #اگر حداقل یکی درست باشد if any(x) : print("At least one is True") #اگر همه درست باشد if all(x) : print("All True") #حداقل یکی درست و یکی غلط if any(x) and not all(x) : print("At least one True and one False")
مجموعهها (collections)
پایتون دارای انواع دادههای پیش فرض عالی است، اما گاهی اوقات دقیقاً آنطور که شما انتظار دارید رفتار نمیکنند. خوشبختانه کتابخانه استاندارد پایتون ماژول مجموعهها را فراهم میکند. این افزونه مفید انواع دادههای بیشتری را در اختیار شما قرار میدهد.
from collections import OrderedDict, Counter #ترتیب اضافه شدن کلیدها را به خاطر بسپارید! x = OrderedDict(a=1,b=2,c=3) #تعداد دفعات ظاهر شدن هر کاراکتر را بشمارید y = Counter("Hello World!")
کارگردان (dir)
آیا تا به حال به این فکر کردهاید که چگونه به داخل یک شی پایتون نگاه کنید و ببینید چه ویژگیهایی دارد؟ در خط فرمان وارد کنید:
dir() dir("Hello World") dir(dir)
ایموجی
Emoji یک نماد احساس بصری است که در ارتباطات بیسیم در ژاپن استفاده میشود. طراحی به تصاویر اشاره دارد و متن به شخصیتها اشاره دارد. میتوان از آن برای نشان دادن عبارات مختلفی مانند صورتک برای لبخند، کیک برای غذا و غیره استفاده کرد. در سرزمین اصلی چین، ایموجیها را معمولا «صورت زرد کوچک» یا به سادگی «ایموجی» مینامند.
#ماژول را نصب کنید pip install emoji #امتحان کن from emoji import emojize print(emojize(":thumbs_up:"))
from __future__ import
یکی از نتایج محبوبیت پایتون این است که همیشه نسخههای جدیدی در حال توسعه وجود دارد. نسخه جدید به معنای ویژگیهای جدید است – مگر اینکه نسخه شما قدیمی باشد.
اما نگران نباشید. از ماژول future برای کمک به وارد کردن توابع با نسخههای آینده پایتون استفاده کنید. به معنای واقعی کلمه، مانند سفر در زمان، جادو یا چیزی است.
from__future__import print_function print("Hello World!")
geogy
جغرافیا یک زمینه چالش برانگیز برای اکثر برنامه نویسان است. همچنین هنگام به دست آوردن اطلاعات جغرافیایی یا ترسیم نقشه مشکلات زیادی وجود دارد. ماژول geopy محتوای مرتبط با جغرافیا را بسیار آسان میکند.
pip install geopy
این با انتزاع API طیف وسیعی از خدمات رمزگذاری جغرافیایی مختلف کار میکند. با آن میتوانید آدرس کامل خیابان، عرض جغرافیایی، طول جغرافیایی و حتی ارتفاع یک مکان را دریافت کنید.
یک کلاس مسافت مفید نیز وجود دارد. فاصله بین دو مکان را در واحد اندازه گیری دلخواه شما محاسبه میکند.
from geopy import GoogleV3 Place = "221 Baker Street London" location = GoogleV3().geocode(place) print(location.address) print(location.location)
چطور میتونم (howdoi)
هنگامی که از ترمینال ترمینال برای برنامهنویسی استفاده میکنید، پس از مواجه شدن با مشکل، پاسخها را در StackOverflow جستجو میکنید و سپس برای ادامه برنامهنویسی به ترمینال باز میگردید. در این زمان ممکن است راه حلی را که قبلا پیدا کردهاید به یاد نیاورید و باید StackOverflow را دوباره بررسی کنید، اما نمیخواهید ترمینال را ترک کنید، پس به این ابزار مفید خط فرمان howdoi نیاز دارید.
pip install howdoi
هر سوالی که دارید، میتوانید آن را بپرسید و تمام تلاش خود را میکند تا پاسخ دهد.
howdoi vertical align css howdoi for loop in java howdoi undo cormmits in git
اما هشدار میدهد کد را از بهترین پاسخ در StackOverflow حذف میکند. ممکن است همیشه مفیدترین اطلاعات را ارائه نکند…
howdoi exit vim
بازرسی (inspect)
ماژول بازرسی پایتون برای درک آنچه در پشت صحنه میگذرد عالی است. حتی میتونی روش خودش رو صدا کنی!
مثال کد زیر ()inspect. getsource کد منبع خود را چاپ میکند. ()inspect. getmodule نیز برای چاپ ماژولی که آن را تعریف میکند، استفاده میشود.
آخرین خط کد شماره خط خود را چاپ میکند.
import inspect print(inspect.getsource(inspect.getsource)) print(inspect.getmodule(inspect.getmodule)) print(inspect.currentframe().f_lineno)
البته، جدا از این کاربردهای بیاهمیت، ماژول inspect میتواند برای درک اینکه کد شما چه کاری انجام میدهد، مفید باشد. همچنین میتوانید از آن برای نوشتن کدهای خود مستند استفاده کنید.
Jedi
کتابخانه Jedi یک کتابخانه تکمیل خودکار و تجزیه و تحلیل کد است. نوشتن کد را سریعتر و کارآمدتر میکند.
مگر اینکه در حال توسعه IDE خود باشید، ممکن است علاقهمند به استفاده از Jedi به عنوان یک افزونه ویرایشگر باشید.
کوارگ (kwargs)
هنگام یادگیری هر زبانی، نقاط عطف بسیاری وجود دارد. استفاده از Python و درک نحو محرمانه **kwargs ممکن است به عنوان یک نقطه عطف مهم به حساب آید.
ستاره دوتایی **kwargs در جلوی شی دیکشنری به شما امکان میدهد محتویات فرهنگ لغت را به عنوان آرگومانهای نامگذاری شده به تابع منتقل کنید.
کلیدهای فرهنگ لغت نام پارامترها و مقادیر مقادیر ارسال شده به تابع هستند. حتی لازم نیست آن را کوارگ بنامید!
dictionary = {"a": 1, "b":2} def someFunction(a,b): print(a + b) return #اینها هم این کار را میکنند: someFunction(**dictionary) someFunction(a=1, b=2)
این زمانی مفید است که میخواهید توابعی بنویسید که بتواند آرگومانهای نامگذاری شده را که از پیش تعریف نشدهاند، مدیریت کنند.
درک لیست (list)
یکی از موارد مورد علاقه من در مورد برنامه نویسی پایتون، درک لیست آن است .
این عبارات نوشتن کدهای بسیار روان را تقریباً مانند زبان طبیعی آسان میکند.
number = [1,2,3,4,5,6,7] evens = [x for x in numbers if x % 2 is 0] odds = [y for y in numbers if y not in evens] cities = ['London','Dublin','Oslo'] def visit(city): print("Welcome"+city) for city in cities visit(city)
نقشه (map)
پایتون از برنامهنویسی تابعی با بسیاری از ویژگیهای داخلی پشتیبانی میکند. یکی از کاربردیترین ویژگیهای ()map توابع هستند؛ بهویژه وقتی با توابع لامبدا ترکیب شوند.
x = [1,2,3] y = map(lambda x : x + 1, x) #چاپ [2,3,4] print(list(y))
در مثال بالا، ()map یک تابع لامبدا ساده را به x اعمال میکند. یک شی نقشه را برمیگرداند که میتواند به مقداری تکرار مانند لیست یا تاپل تبدیل شود.
روزنامه k3 (newspaper3k)
اگر آن را ندیدهاید، آماده شوید که توسط ماژول روزنامه پایتون غرق شوید. این به شما امکان میدهد مقالات خبری و ابردادههای مرتبط را از طیف وسیعی از نشریات بین المللی برجسته بازیابی کنید. شما میتوانید تصاویر، متن و نام نویسنده را بازیابی کنید. حتی دارای برخی از قابلیتهای NLP داخلی است.
بنابراین، اگر در پروژه بعدی خود به استفاده از BeautifulSoup یا سایر کتابخانههای DIY web scraping فکر میکنید، استفاده از این ماژول میتواند در زمان و تلاش خود صرفه جویی زیادی کند.
pip install newspaper3k
بارگذاری بیش از حد اپراتور (Operator overloading)
پایتون را از بارگذاری بیش از حد اپراتور پشتیبانی میکند، که یکی از آن اصطلاحاتی است که باعث میشود شما مانند یک دانشمند کامپیوتر قانونی به نظر برسید.
در واقع یک مفهوم ساده است. تا به حال فکر کردهاید که چرا پایتون به شما اجازه میدهد از عملگر + برای اضافه کردن اعداد و به هم پیوستن رشتهها استفاده کنید؟ این کاری است که بارگذاری بیش از حد اپراتور انجام میدهد.
شما میتوانید اشیایی را که از نماد عملگر استاندارد پایتون استفاده میکنند به روش خاص خود تعریف کنید. و میتوانید از آنها در زمینه مربوط به شی مورد استفاده خود استفاده کنید.
class Thing: def__init__(self, value): self.__value = value def__gt__(self, other): return self.__value > other.__value def__it__(self, other): return self.__value < other.__value something = Thing(100) nothing = Thing(0) #True something > nothing #False something < nothing #Error something + nothing pprint
تابع چاپ پیش فرض پایتون کار خود را انجام میدهد. اما اگر سعی کنید از تابع چاپ برای چاپ هر شیء تو در تو بزرگ استفاده کنید، نتیجه نسبتاً زشت خواهد بود. ماژول چاپ زیبای کتابخانه استاندارد pprint میتواند اشیاء ساختار یافته پیچیده را در قالبی آسان برای خواندن چاپ کند.
این برای هر توسعهدهنده پایتونی که با ساختارهای دادهای غیر ضروری کار میکند، ضروری است.
import requests import pprint url = 'https://randomser.me/api/?results=1' users = requests.get(url).json() pprint.pprint(users)
صف
پیادهسازی ماژول Queue کتابخانه استاندارد پایتون از multithreading پشتیبانی میکند. این ماژول به شما امکان میدهد ساختارهای داده صف را پیادهسازی کنید. اینها ساختارهای دادهای هستند که به شما امکان میدهند طبق قوانین خاصی ورودیها را اضافه و بازیابی کنید.
صف «اولین ورود، اولین خروج» (FIFO) به شما امکان میدهد اشیاء را به ترتیب اضافه شده بازیابی کنید. صفهای Last-in-First-out (LIFO) به شما امکان میدهد ابتدا به اشیاء اضافه شده اخیر دسترسی داشته باشید.
در نهایت، صفهای اولویت به شما امکان میدهند اشیاء را بر اساس ترتیب مرتب شده آنها بازیابی کنید. در اینجا مثالی از نحوه استفاده از صف صف برای برنامه نویسی چند رشتهای در پایتون آورده شده است.
__repr__
هنگام تعریف یک کلاس یا شی در پایتون، ارائه یک روش «رسمی» برای نمایش شی به عنوان یک رشته مفید است. به عنوان مثال:
>>>file = open('file.txt','r') >>>print(file) <open file 'file.txt', mode 'r' at 0x10d30aaf0>
این کار اشکالزدایی کد را آسانتر میکند. این را به این شکل به تعریف کلاس خود اضافه کنید:
class someClass : def__repe__(self): return "<some description here>" someinstance = someClass() #چاپ print(someinstance)
sh
پایتون یک زبان برنامهنویسی عالی است. گاهی اوقات استفاده از کتابخانههای استاندارد سیستم عامل و فرآیندهای فرعی میتواند کمی دردسرساز باشد.
کتابخانه SH به شما امکان میدهد هر برنامهای را مانند یک تابع عادی فراخوانی کنید – برای خودکارسازی گردش کار و وظایف مفید است.
import sh sh.pwd() sh.mkdir('new_folder') sh.touch('new_file.txt') sh.whoami() sh.echo('this is great!')
پایتون یک زبان بسیار متنوع و توسعه یافته است، بنابراین باید ویژگیهای زیادی وجود داشته باشد که ما به بخشی از آنها اشاره کردیم.
سخن پایانی
هرچند این مقاله تخصصی بوده و مورد پسند برنامه نویسان سطح متوسط است اما برای مبتدیان نیز جهت آشنایی میتواند مفید واقع گردد. اگر ترفند جالب دیگری شما میدانید، در قسمت دیدگاه آن را با ما و همراهان عزیز بی کد به اشتراک بگذارید.
دیدگاه ها
0 دیدگاه