ترفند‌های کاربردی پایتون در سال 1401 - بی کد

ترفند‌های کاربردی پایتون در سال 1401

نویسنده : زهرا حیدری

27

برنامه نویسی

15آبان1401|30:11

زمان مطالعه: 15 دقیقه

ترفند‌های کاربردی پایتون

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

همه یا هر کدام (all or any)

یکی از دلایل بسیار محبوبیت زبان پایتون این است که بسیار خوانا و رسا است.

مردم اغلب به شوخی می‌گویند که پایتون یک شبه کد اجرایی است. وقتی می‌توانید کدی به این شکل بنویسید، بحث در مورد آن سخت است.

x = [True, True, False]

: if any(x)

 (“حداقل یکTrue”)print

: if all(x)

    (“همه درستTrue”)print

: if any(x) and not all(x)

    (“حداقل یک Trueو یک  False”)print

مجموعه‌ها (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 = “221b 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 commits 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)

یکی از موارد مورد علاقه من در مورد برنامه نویسی پایتون، درک لیست آن است .

این عبارات نوشتن کدهای بسیار روان را تقریباً مانند زبان طبیعی آسان می‌کند.

numbers = [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 to “+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 __lt__(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://randomuser.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 __repr__(self)

        “<return “<some description here

()someInstance = someClass

 <some description here> # چاپ

print(someInstance)

sh

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

کتابخانه SH به شما امکان می‌دهد هر برنامه‌ای را مانند یک تابع عادی فراخوانی کنید – برای خودکارسازی گردش کار و وظایف مفید است.

import sh

()sh.pwd

sh.mkdir(‘new_folder’)

sh.touch(‘new_file.txt’)

()sh.whoami

sh.echo(‘This is great!’)

پایتون یک زبان بسیار متنوع و توسعه یافته است، بنابراین باید ویژگی‌های زیادی وجود داشته باشد که ما به بخشی از آن‌ها اشاره کردیم.

 

 

اشتراک گذاری این مقاله در شبکه های اجتماعی