در برخی کشورها، طول با واحد «متر» اندازهگیری میشود، در حالی که در برخی کشورهای دیگر این اندازهگیری با واحد «فوت» انجام مییابد. اگر بخواهید این 1 را به همدیگر 1 کنید، باید این کار را با دقت مضاعفی انجام دهید، چون ممکن است همه چیز به هم بریزد. اگر با 1 برنامهنویسی 1 کار میکنید، خبر خوب این است که یک پکیج اختصاصی به این منظور توسعه یافته است که «پاینت» (Pint) نام دارد. در این مطلب با روش تبدیل واحدها در پایتون آشنا خواهیم شد.
همچنین اگر به تازگی شروع به یادگیری پایتون کردهاید و به دنبال انتخاب بهترین مسیر برای بدل شدن به یک برنامهنویس پایتون عالی هستید، توصیه میکنیم بعد از این نوشتار، سری نیز به مطلب یادگیری پایتون بزنید که در مجله فرادرس و به همین منظور تهیه شده است.

پاینت یک پکیج پایتون است که برای کار کردن و دستکاری کردن کمیتهای فیزیکی ساخته شده است. میدانیم که کمیتهای فیزیکی حاصل ضرب یک مقدار عددی در یک واحد اندازهگیری هستند. با استفاده از پاینت میتوانید بین این واحدهای مختلف تبدیل کنید و یا مستقیماً عملیات ریاضی را روی کمیتهای متفاوت انجام دهید.
پاینت به همراه فهرستی جامعی از واحدهای فیزیکی، پیشوندها و ثوابت توزیع یافته است. با این حال به دلیل ماهیت ماژولارش میتوانید این فهرست را بدون نیاز به دست بردن در سورس کد، بسط داده و یا حتی بازنویسی کنید. پاینت از بسیاری از عملیات ریاضی «نامپای» (Numpy) نیز پشتیبانی میکند.
برای نصب پاینت از دستور زیر استفاده کنید:
pip install pint
پس از نصب میتوانید از رجیستری واحد درون این پکیج بهره بگیرید.
import pint
ureg = pint.UnitRegistry()
این «رجیستری واحد» شیء اصلی است که با آن تعامل پیدا میکنیم. با استفاده از آن میتوانیم کمیتهایی را تعریف کنیم که بزرگی دارند و واحدی نیز به آنها الصاق شده است. برای نمونه میتوانید با چند عمل حسابی 1 واحدهای متر و سانتیمتر را با هم جمع بزنید.
3 * ureg.meter + 4 * ureg.cm
# 3.04 meter
نتیجه کد فوق، یک شیء است که میتواند برای تبدیل کمیت به واحد دیگری استفاده شود.
(3 * ureg.meter + 4 * ureg.cm).to(ureg.feet)
# 9.9737 foot
پکیج پاینت امکان ایجاد واحدها را به طور پویا نیز فراهم ساخته است. برای نمونه سرعت بر حسب مسافت تقسیم بر زمان تعریف میشود.
60 * ureg.miles / ureg.hour
# 60.0 mile/hour
شما میتوانید این کمیت را به واحد متر بر دقیقه تبدیل کنید.
(60 * ureg.miles / ureg.hour).to(ureg.meters/ureg.minute)
# 1609.344 meter/minute
همچنین میتوانید از رشتهها برای تعریف واحد استفاده کنید. شاید گاهی اوقات انجام این کار آسانتر باشد.
ureg("meter/second**2") * 10 * ureg("seconds")
# 10.0 meter/second
نکته دیگری که در زمان استفاده از پکیج پاینت بهتر است به آن توجه کنیم، این است که امکان تعریف واحدهای جدید نیز وجود دارد.
ureg.define("dog_year = 52 * day = dy")
(5 * ureg("years").to(ureg("dog_year")))
# 35.1201 dog_year
این کتابخانه، واحدهای زیادی دارد و با کمی کاوش در آن شگفتزده خواهید شد. همچنین میتوانید خصوصیات یک واحد را به شیوه زیر به دست آورید.
(60 * ureg.miles / ureg.hour).magnitude
# 60.0
(60 * ureg.miles / ureg.hour).units
# mile/hour
(60 * ureg.miles / ureg.hour).dimensionality
# <UnitsContainer({'[length]': 1, '[time]': -1})>

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