Module فایلی است که حاوی مجموعه ای از توابع می باشد و شما برای استفاده از آن باید آن را در پروژه خود وارد کنید. به زبان ساده تر ماژول های پایتون معادل همان کتابخانه ها (library) در زبان های دیگر هستند. برای ساخت ماژول های پایتون تنها باید کدهای خود را در فایلی با پسوند py.
ذخیره کنید. به طور مثال کد ساده زیر را در فایل mymodule.py قرار داده و ذخیره می کنیم:
def greeting(name): print("Hello, " + name)
حالا می توانیم با استفاده از دستور import
از ماژول خودمان استفاده کنیم:
import mymodule mymodule.greeting("Jonathan")
خروجی:
Hello, Jonathan
همانطور که می بینید برای استفاده از توابع درون ماژول باید از قالب module_name.function_name
(نام ماژول + علامت نقطه + نام تابع) استفاده کنید. البته ماژول ها علاوه بر توابع می توانند حاوی متغیر ها نیز باشند، به طور مثال کد زیر را در فایل mymodule.py
کپی کرده و آن را ذخیره می کنیم:
person1 = { "name": "John", "age": 36, "country": "Norway" }
حالا می توانیم آن را در یک فایل دیگر import کرده و از آن استفاده کنیم:
import mymodule a = mymodule.person1["age"] print(a)
خروجی عدد 36 (سن فرد) خواهد بود.
برخی اوقات ماژول های مورد استفاده مان را خودمان ننوشته ایم و نویسنده اصلی نام طولانی برای ماژول انتخاب کرده است (یک مثال اغراق آمیز می تواند به شل HandlingExceptionsWhileWorkingWithPythonObjects باشد). به نظر شما راهی وجود دارد که بدون تغییر نام ماژول از آن با نام دیگری استفاده کنیم؟ حدستان درست است. کلیدواژه as
به ما اجازه میدهد که در هنگام import نام ماژول را تغییر دهیم:
import mymodule as mx a = mx.person1["age"] print(a)
در مثال بالا نام ماژول در اسکریپت به mx تغییر می کند بنابراین می توانید به جای mymodule.person1 بگویید mx.person1 و هیچ خطایی نیز رخ نمیدهد.
در زبان پایتون ماژول های از قبل تعریف شده ای وجود دارند که شما بر حسب نیاز خود می توانید از آن ها استفاده کنید. یکی از این ماژول ها platform
نام دارد:
import platform x = platform.system() print(x)
یکی از توابع درون این ماژول ()dir نام دارد که نام تمامی متغیر ها و توابع موجود در یک ماژول را (چه خودتان ماژول را ساخته باشید چه ماژول های دیگران) برایتان لیست می کند. به طور مثال ما از این تابع روی خود ماژول platform استفاده می کنیم:
import platform x = dir(platform) print(x)
خروجی:
['DEV_NULL', '_UNIXCONFDIR', 'WIN32_CLIENT_RELEASES', 'WIN32_SERVER_RELEASES', '__builtins__', '__cached__', '__copyright__', '__doc__', '__file__', '__loader__', '__name__', '__package __', '__spec__', '__version__', '_default_architecture', '_dist_try_harder', '_follow_symlinks', '_ironpython26_sys_version_parser', '_ironpython_sys_version_parser', '_java_getprop', '_libc_search', '_linux_distribution', '_lsb_release_version', '_mac_ver_xml', '_node', '_norm_version', '_perse_release_file', '_platform', '_platform_cache', '_pypy_sys_version_parser', '_release_filename', '_release_version', '_supported_dists', '_sys_version', '_sys_version_cache', '_sys_version_parser', '_syscmd_file', '_syscmd_uname', '_syscmd_ver', '_uname_cache', '_ver_output', 'architecture', 'collections', 'dist', 'java_ver', 'libc_ver', 'linux_distribution', 'mac_ver', 'machine', 'node', 'os', 'platform', 'popen', 'processor', 'python_branch', 'python_build', 'python_compiler', 'python_implementation', 'python_revision', 'python_version', 'python_version_tuple', 're', 'release', 'subprocess', 'sys', 'system', 'system_aliases', 'uname', 'uname_result', 'version', 'warnings', 'win32_ver']
شما می توانید با جست و جو در مورد هر کدام از این توابع و متغیرها اطلاعات کاملی از آن ها به دست بیاورید.
همچنین به یاد داشته باشید که اگر به تمام این توابع نیازی ندارید، می توانید با استفاده از کلیدواژه from
فقط قسمت هایی از ماژول را وارد پروژه خود کنید. به طور مثال ماژول ما (mymodule
) تا این لحظه یک تابع و یک dictionary دارد:
def greeting(name): print("Hello, " + name) person1 = { "name": "John", "age": 36, "country": "Norway" }
اگر بخواهیم فقط person1 را از آن وارد یک پروژه دیگر کنیم می توانیم بگوییم:
from mymodule import person1 print(person1["age"])
حالا فقط person1 وارد کد ها می شود (تابع وارد نخواهد شد). خروجی عدد 36 خواهد بود.
هشدار: هنگام استفاده از کلیدواژه from
و وارد کردن قسمت هایی خاص از ماژولی خاص، نباید از نام ماژول استفاده کنید. بنابراین کد بالا به صورت ["mymodule.person1["age
کاملا غلط است و به جای آن باید از ["person1["age
استفاده کنید.
برخلاف بسیاری از زبان های برنامه نویسی دیگر، تاریخ و زمان در پایتون data type مخصوص خودش را ندارد و برای کار با تاریخ و زمان باید از ماژولی به نام datetime
استفاده کنیم تا بتوانیم با تاریخ های پایتون به صورت اشیاء Date کار کنیم. مثال:
import datetime x = datetime.datetime.now() print(x)
خروجی این کد زمان فعلی خواهد بود (هر زمانی که کد اجرا شود). در واقع date شامل سال، ماه، روز، ساعت، دقیقه، ثانیه و میکرو ثانیه است. ماژول datetime
متدهای بسیار زیادی برای کار با تاریخ و زمان دارد که بررسی همه آن ها در یک مقاله ممکن نیست اما من سعی کرده ام مهم ترین موارد آن را برایتان بیاورم. مثال زیر سال و روز هفته را به ما برمی گرداند:
import datetime x = datetime.datetime.now() print(x.year) print(x.strftime("%A"))
خروجی (در هنگام نوشتن این مقاله):
2019
Tuesday
برای ساخت شیء date باید از تابعی به نام ()datetime
در ماژول datetime
استفاده کنیم. این تابع برای ساخت یک تاریخ به سه پارامتر احتیاج دارد: سال، ماه و روز. مثالی از ساخته شدن شیء Date را در کد زیر برایتان آورده ام:
import datetime x = datetime.datetime(2020, 5, 17) print(x)
خروجی:
2020-05-17 00:00:00
البته این تابع پارامترهای دیگری نیز می گیرد. لیست کامل این پارامترها بدین شکل است:
hour, minute, second, microsecond, tzone
یعنی ساعت، دقیقه، ثانیه، میکروثانیه و منطفه زمانی (time zone) اما دو مورد آخر به ترتیب مقادیر پیش فرض 0 و None
را دارند و اجباری نیستند.
شیء datetime
متدی برای تبدیل زمان به رشته های قابل خواندن (برای انسان ها) دارد. نام این متد ()strftime
است که یک پارامتر می گیرد و این پارامتر مشخص کننده قالب رشته زمان خواهد بود. به طور مثال:
import datetime x = datetime.datetime(2018, 6, 1) print(x.strftime("%B"))
خروجی ماه June است. مقادیر ممکن این پارامتر را در لیست زیر می بینید:
دستور | توضیحات | مثال |
%a | روز هفته - حالت خلاصه | Wed (چهار شنبه) |
%A | روز هفته - حالت کامل | Wednesday |
%w | روز هفته - به صورت عدد | 3 |
%d | روز ماه - عددی بین 01 تا 31 | 31 |
%b | نام ماه - به صورت خلاصه | Dec (ماه دسامبر) |
%B | نام ماه - به صورت کامل | December |
%m | نام ماه - به صورت یک عدد | 12 |
%y | سال - به صورت خلاصه، بدون قرن | 18 |
%Y | سال به صورت کامل | 2018 |
%H | ساعت - عددی بین 00 و 23 | 17 |
%I | ساعت - عددی بین 00 و 12 | 05 |
%p | مشخص کردن AM/PM | PM |
%M | دقیقه - عددی بین 00 و 59 | 41 |
%S | ثانیه - عددی بین 00 و 59 | 08 |
%f | میکرو ثانیه - عددی بین 000000 و 999999 | 548513 |
%z | offset برای UTC | +0100 |
%Z | منطقه زمانی | CST |
%j | روز سال به صورت عددی بین 001 و 366 | 365 |
%U | هفته سال (شروع با یکشنبه) - عددی بین 00 و 53 | 52 |
%W | هفته سال (شروع با دوشنبه) - عددی بین 00 و 53 | 52 |
%c | نسخه محلی زمان و تاریخ | Mon Dec 31 17:41:00 2018 |
%x | نسخه محلی تاریخ | 12/31/18 |
%X | نسخه محلی زمان | 17:41:00 |
%% | کاراکتر % | % |
لیست کامل این دستورات به زبان انگلیسی
در درس بعد با JSON کار خواهیم کرد. از پائین همین مقاله، می توانید به درس های بعدی دسترسی داشته باشید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.