آموزش پایتون
2 subscribers
3 photos
35 links
Download Telegram
اگر بخواهید یک متغیر سراسری (global) ایجاد کنید، اما در دامنه محلی گیر کرده‌اید، می‌توانید از کلمه کلیدی global استفاده کنید.

کلمه کلیدی global باعث می‌شود متغیر به دامنه سراسری تعلق گیرد.

مثال:
اگر از کلمه کلیدی global استفاده کنید، متغیر متعلق به دامنه سراسری خواهد بود:

def myfunc():
global x
x = 300

myfunc()

print(x)

خروجی:

300


همچنین، از کلمه کلیدی global استفاده کنید اگر می‌خواهید درون یک تابع تغییری در متغیر سراسری ایجاد کنید.

مثال:
برای تغییر مقدار یک متغیر سراسری درون یک تابع، با استفاده از کلمه کلیدی global به متغیر ارجاع دهید:

x = 300

def myfunc():
global x
x = 200

myfunc()

print(x)

خروجی:

200

با استفاده از کلمه کلیدی global، تغییری در متغیر سراسری x صورت گرفته و مقدار آن به 200 تغییر کرده است.
ماژول چیست؟
می‌توانید یک ماژول را به عنوان یک کتابخانه کد مشابه در نظر بگیرید.

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

ساخت ماژول
برای ساخت یک ماژول، کد مورد نظر را در یک فایل با پسوند .py ذخیره کنید:

مثال
کد زیر را در فایلی به نام mymodule.py ذخیره کنید.


def greeting(name):
  print("Hello, " + name)


استفاده از ماژول
حالا می‌توانیم از ماژولی که تازه ساختیم استفاده کنیم، با استفاده از دستور import:

مثال
ماژولی به نام mymodule را وارد کنید و تابع greeting را فراخوانی کنید:


import mymodule

mymodule.greeting("Jonathan")


توجه: هنگام استفاده از یک تابع از یک ماژول، از نحو module_name.function_name استفاده کنید.

متغیرها در ماژول
ماژول می‌تواند شامل توابعی باشد، همانطور که قبلاً توضیح داده شد، اما همچنین می‌تواند شامل متغیرهایی از هر نوعی (آرایه‌ها، دیکشنری‌ها، اشیاء و غیره) باشد:

مثال
کد زیر را در فایل mymodule.py ذخیره کنید:


person1 = {
  "name": "John",
  "age": 36,
  "country": "Norway"
}


مثال
ماژولی به نام mymodule را وارد کنید و به دیکشنری person1 دسترسی پیدا کنید:


import mymodule

a = mymodule.person1["age"]
print(a)


خروجی:


36
تعیین نام یک ماژول
می‌توانید فایل ماژول را با هر نامی که دوست دارید نامگذاری کنید، اما باید دارای پسوند فایل .py باشد.

تغییر نام یک ماژول
می‌توانید هنگام وارد کردن یک ماژول، با استفاده از کلیدواژه as، یک نام مستعار ایجاد کنید:

مثال
یک نام مستعار برای ماژول mymodule به نام mx ایجاد کنید:

import mymodule as mx

a = mx.person1["age"]
print(a)


ماژول‌های داخلی
در پایتون چندین ماژول داخلی وجود دارد که هر زمان که می‌خواهید می‌توانید آن‌ها را وارد کنید.

مثال
ماژول platform را وارد کنید و استفاده کنید:

import platform

x = platform.system()
print(x)


خروجی:


Windows
استفاده از تابع dir()
یک تابع داخلی به نام dir وجود دارد که تمام نام‌های تعریف شده (یا نام‌های متغیر) در یک ماژول را لیست می‌کند. تابع dir():

مثال
لیست تمام نام‌های تعریف شده در ماژول platform را نمایش دهید:


import platform

x = dir(platform)
print(x)


خروجی:


['Linux', 'Windows', 'posix', 'system', 'uname', 'version']


توجه: تابع dir را می‌توان بر روی تمامی ماژول‌ها استفاده کرد، حتی بر روی ماژول‌هایی که خودتان ایجاد می‌کنید.

وارد کردن از ماژول
می‌توانید تنها بخشی از یک ماژول را وارد کنید، با استفاده از کلیدواژه from.

مثال
ماژولی به نام mymodule دارای یک تابع و یک دیکشنری است:


def greeting(name):
print("Hello, " + name)

person1 = {
"name": "John",
"age": 36,
"country": "Norway"
}


مثال
فقط دیکشنری person1 را از ماژول وارد کنید:


from mymodule import person1

print(person1["age"])


خروجی:


36


توجه: هنگامی که با استفاده از کلیدواژه from وارد می‌کنید، نیازی به استفاده از نام ماژول برای ارجاع به عناصر درون ماژول نیست. مثال: person1["age"]، نه mymodule.person1["age"]
Datetime
تاریخ در پایتون نوع داده‌ای مجزا نیست، اما می‌توانیم یک ماژول به نام datetime را وارد کنیم تا با تاریخ‌ها به عنوان شیء تاریخ کار کنیم.

مثال
وارد کردن ماژول datetime و نمایش تاریخ فعلی:

import datetime

x = datetime.datetime.now()
print(x)


خروجی تاریخ:

2023-09-23 09:40:37.106838


تاریخ شامل سال، ماه، روز، ساعت، دقیقه، ثانیه و میکروثانیه است.

ماژول datetime دارای بسیاری از متدها برای بازگرداندن اطلاعات درباره شیء تاریخ است.

در اینجا چند مثال وجود دارد، که بیشتر در مورد آنها در این فصل خواهید آموخت:

مثال
بازگرداندن سال و نام روز هفته:

import datetime

x = datetime.datetime.now()

print(x.year)
print(x.strftime("%A"))

خروجی:
2023
Saturday

ایجاد آبجکت تاریخ
برای ایجاد یک تاریخ، می‌توانیم از کلاس datetime() (سازنده) ماژول datetime استفاده کنیم.

کلاس datetime() سه پارامتر برای ایجاد تاریخ نیاز دارد: سال، ماه، روز.

مثال
ایجاد یک شیء تاریخ:

import datetime

x = datetime.datetime(2020, 5, 17)

print(x)
خروجی:
2020-05-17 00:00:00

کلاس datetime() همچنین پارامترهایی برای زمان و منطقه زمانی (ساعت، دقیقه، ثانیه، میکروثانیه، منطقه زمانی) قبول می‌کند، اما آنها اختیاری هستند و مقدار پیش‌فرض آنها 0 است (برای منطقه زمانی None).
The strftime() Method

شیء datetime دارای یک متد برای قالب‌بندی شیء‌های تاریخ به رشته‌های قابل خواندن است.

این متد strftime() نام دارد و یک پارامتر به نام format را می‌گیرد که برای مشخص کردن قالب رشته برگردانده شده استفاده می‌شود:

مثال
نام ماه را نمایش دهید:


import datetime

x = datetime.datetime(2018, 6, 1)

print(x.strftime("%B"))


خروجی:


June


پارامتر format می‌تواند ترکیبی از کدهای قالب‌بندی مختلف را شامل شود برای نمایش قسمت‌های مختلف تاریخ و زمان مانند سال، ماه، روز، ساعت، دقیقه و غیره.
این فرمت های قانونی برای نمایش تاریخ و زمان در پایتون هستند:

%a -
نام روز هفته به صورت کوتاه (مثل Wed)
%A -
نام روز هفته به صورت کامل (مثل Wednesday)
%w -
شماره روز هفته به صورت 0 تا 6 که 0 یکشنبه است
%d -
شماره روز ماه به صورت 01 تا 31
%b -
نام ماه به صورت کوتاه (مثل Dec)
%B -
نام ماه به صورت کامل (مثل December)
%m -
شماره ماه به صورت 01 تا 12
%y -
سال به صورت دو رقمی بدون قرن (مثل 18)
%Y -
سال کامل به صورت چهار رقمی (مثل 2018)
%H -
ساعت به صورت 00 تا 23
%I -
ساعت به صورت 00 تا 12
%p -
نمایش AM/PM
%M -
دقیقه به صورت 00 تا 59
%S -
ثانیه به صورت 00 تا 59
%f -
میکروثانیه 000000 تا 999999
%z -
اختلاف زمانی نسبت به UTC
%Z -
منطقه زمانی مثل CST
%j -
شماره روز سال به صورت 001 تا 366
%U -
شماره هفته سال با شروع از یکشنبه، 00 تا 53
%W -
شماره هفته سال با شروع از دوشنبه، 00 تا 53
%c -
نمایش محلی تاریخ و زمان
%C -
قرن به صورت عدد (مثل 20 برای قرن 21)
%x -
نمایش محلی تاریخ
%X -
نمایش محلی زمان
%% -
نمایش خود کاراکتر درصد %
%G -
سال به صورت ISO 8601
%u -
روز هفته به صورت ISO 8601 (1 تا 7)
%V -
شماره هفته سال به صورت ISO 8601 (01 تا 53)
توابع ریاضی درون‌ساخته در پایتون

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

توابع ریاضی درون‌ساخته

🔹توابع min() و max() برای پیدا کردن کوچکترین و بزرگترین مقدار در یک دنباله استفاده می‌شوند:

مثال:

x = min(5, 10, 25)
y = max(5, 10, 25)

print(x)
خروجی 5
print(y)
خروجی 25


🔹تابع abs() مقدار مطلق (مثبت) عدد مشخص شده را برمی‌گرداند:

مثال:

x = abs(-7.25)
print(x)
خروجی 7.25

🔹تابع pow(x, y) مقدار x به توان y را برمی‌گرداند.

مثال:

مقدار 4 به توان 3 (معادل 4 * 4 * 4) را برمی‌گرداند:

x = pow(4, 3)
print(x)
خروجی 64

به این ترتیب توابع ریاضی درون‌ساخته پایتون به راحتی انجام عملیات ریاضی پیچیده را ممکن می‌سازند.
🔵 ماژول math

پایتون دارای یک ماژول درون‌ساخته به نام math است که لیست توابع ریاضی را گسترش می‌دهد.

برای استفاده از آن باید ماژول math را import کنید:

import math

وقتی ماژول math را import کردید، می‌توانید از متدها و ثابت‌های آن استفاده کنید.

برای مثال متد math.sqrt() جذر یک عدد را برمی‌گرداند:

مثال:

import math

x = math.sqrt(64)

print(x)
خروجی: 8

متد math.ceil() یک عدد را به بالاترین عدد صحیح می‌رساند و متد math.floor() آن را به پایین‌ترین عدد صحیح می‌رساند:

مثال:

import math

x = math.ceil(1.4)
y = math.floor(1.4)

print(x)
خروجی: 2
print(y)
خروجی: 1

ثابت math.pi مقدار عدد پی (3.14...) را برمی‌گرداند:

مثال:

import math

x = math.pi

print(x)
خروجی: 3.141592653589793

با استفاده از ماژول math می‌توان عملیات پیچیده ریاضی را به راحتی انجام داد.
math.acos()
آرک کسینوس یک عدد را برمی‌گرداند
math.acosh()
آرک کسینوس معکوس هایپربولیک یک عدد را برمی‌گرداند
math.asin()
آرک سینوس یک عدد را برمی‌گرداند
math.asinh() -
آرک سینوس معکوس هایپربولیک یک عدد را برمی‌گرداند
math.atan()
آرک تانژانت یک عدد را به رادیان برمی‌گرداند
math.atan2()
آرک تانژانت y/x را به رادیان برمی‌گرداند
math.atanh()
آرک تانژانت معکوس هایپربولیک یک عدد را برمی‌گرداند
math.ceil()
یک عدد را به بالاترین عدد صحیح می‌رساند
math.comb()
تعداد راه‌های انتخاب k مورد از n مورد بدون تکرار و ترتیب را برمی‌گرداند
math.copysign()
عددی متشکل از مقدار پارامتر اول و علامت پارامتر دوم را برمی‌گرداند
math.cos()
کسینوس یک عدد را برمی‌گرداند
math.cosh()
کسینوس هایپربولیک یک عدد را برمی‌گرداند
math.degrees()
زاویه‌ای را از رادیان به درجه تبدیل می‌کند
math.dist()
فاصله اقلیدسی بین دو نقطه p و q را برمی‌گرداند
math.erf()
تابع خطای یک عدد را برمی‌گرداند
math.erfc()
تابع خطای مکمل یک عدد را برمی‌گرداند
math.exp()
این متد E به توان x را برمی‌گرداند
math.expm1()
این متد Ex - 1 را برمی‌گرداند
math.fabs()
مقدار مطلق یک عدد را برمی‌گرداند
math.factorial()
فاکتوریل یک عدد را برمی‌گرداند
math.floor()
یک عدد را به پایین‌ترین عدد صحیح می‌رساند
math.fmod()
باقی‌مانده تقسیم x/y را برمی‌گرداند
math.frexp()
مانتیس و نماینده یک عدد مشخص را برمی‌گرداند
math.fsum()
مجموع همه موارد در هر قابل تکراری (تاپل، آرایه، لیست و غیره) را برمی‌گرداند
math.gamma()
تابع گاما در x را برمی‌گرداند
math.gcd()
بزرگ‌ترین مقسوم‌علیه مشترک دو عدد صحیح را برمی‌گرداند
math.hypot()
نرم اقلیدسی را برمی‌گرداند
math.isclose()
بررسی می‌کند دو مقدار به هم نزدیک هستند یا خیر
math.isfinite()
بررسی می‌کند عدد متناهی است یا خیر
math.isinf()
بررسی می‌کند عدد بی‌نهایت است یا خیر
math.isnan()
بررسی می‌کند مقدار یک عدد نیست یا خیر
math.isqrt()
یک عدد ریشه‌دوم را به پایین‌ترین عدد صحیح می‌رساند
math.ldexp()
معکوس math.frexp یعنی x * (2**i) اعداد داده شده x و i را برمی‌گرداند
math.lgamma()
مقدار لگاریتم گامای x را برمی‌گرداند
math.log()
لگاریتم طبیعی یک عدد یا لگاریتم عدد بر پایه را برمی‌گرداند
math.log10()
لگاریتم پایه 10 x را برمی‌گرداند
math.log1p()
لگاریتم طبیعی 1+x را برمی‌گرداند
math.log2()
لگاریتم پایه 2 x را برمی‌گرداند
math.perm()
تعداد راه‌های انتخاب k مورد از n مورد با ترتیب و بدون تکرار را برمی‌گرداند
math.pow()
مقدار x به توان x را برمی‌گرداند
math.prod()
حاصلضرب همه عناصر در یک قابل تکرار را برمی‌گرداند
math.radians()
یک مقدار درجه را به رادیان تبدیل می‌کند
math.remainder()
نزدیک‌ترین مقداری که می‌تواند صورت را کاملاً قابل قسمت بر مخرج کند برمی‌گرداند
math.sin()
سینوس یک عدد را برمی‌گرداند
math.sinh()
سینوس هایپربولیک یک عدد را برمی‌گرداند
math.sqrt()
ریشه دوم یک عدد را برمی‌گرداند
math.tan()
تانژانت یک عدد را برمی‌گرداند
math.tanh()
تانژانت هایپربولیک یک عدد را برمی‌گرداند
math.trunc()
اعداد صحیح قطع شده یک عدد را برمی‌گرداند
ثابت های ریاضی:

math.e
عدد اویلر (2.7182...) را برمی‌گرداند
math.inf
بی‌نهایت مثبت شناور را برمی‌گرداند
math.nan
مقدار شناور NaN (عدد نیست) را برمی‌گرداند
math.pi
عدد پی (3.1415...) را برمی‌گرداند
math.tau
عدد تائو (6.2831...) را برمی‌گرداند
🔵 JSON

جیسون یک نوع سینتکس برای ذخیره کردن و تبادل اطلاعات است. JSON در واقع متنی است که با استفاده از شیء جاوا اسکریپت نوشته شده است.

برای کار با داده‌های JSON در پایتون از ماژول json استفاده می‌شود.

مثال:
ابتدا ماژول json را وارد کنید:


import json


🔹 تجزیه JSON - تبدیل از JSON به پایتون
اگر یک رشته JSON دارید، می‌توانید آن را با استفاده از متد json.loads() تجزیه کنید.

نتیجه یک دیکشنری پایتون خواهد بود.

مثال:
تبدیل از JSON به پایتون:


import json

#یک_رشته_JSON:
x = '{ "name":"John", "age":30, "city":"New York"}'

#_تجزیه_x:
y = json.loads(x)

#_نتیجه_یک_دیکشنری_پایتون_است:
print(y["age"])


خروجی:

30


در این مثال، یک رشته JSON به نام x داریم. سپس از متد json.loads() استفاده می‌کنیم تا آن را تجزیه کنیم و در متغیر y ذخیره کنیم. سپس مقدار سن (age) را از دیکشنری پایتون در متغیر y چاپ می‌کنیم.


🔹 تبدیل یک شیء پایتون به یک رشته JSON با استفاده از متد json.dumps()

مثال:

import json

#_یک_شیء_پایتون_(دیکشنری):
x = {
"name": "John",
"age": 30,
"city": "New York"
}

#_تبدیل_به_JSON:
y = json.dumps(x)

#_نتیجه_یک_رشته_JSON_است:
print(y)


خروجی:

{"name": "John", "age": 30, "city": "New York"}


در این مثال، یک شیء پایتون به نام x داریم که یک دیکشنری است. سپس از متد json.dumps() استفاده کرده و آن را به یک رشته JSON تبدیل می‌کنیم و در متغیر y ذخیره می‌کنیم. سپس مقدار y را چاپ می‌کنیم که نتیجه یک رشته JSON است.
تبدیل اشیاء پایتون به رشته‌های JSON و چاپ مقادیر:

import json

print(json.dumps({"name": "John", "age": 30}))
print(json.dumps(["apple", "bananas"]))
print(json.dumps(("apple", "bananas")))
print(json.dumps("hello"))
print(json.dumps(42))
print(json.dumps(31.76))
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))


خروجی:

{"name": "John", "age": 30}
["apple", "bananas"]
["apple", "bananas"]
"hello"
42
31.76
true
false
null


هر نوع اشیاء پایتون (دیکشنری، لیست، تاپل، رشته، عدد صحیح، عدد اعشاری، True، False و None) به نوع متناظر در JSON تبدیل می‌شوند.
☑️ وقتی از پایتون به JSON تبدیل می‌کنید، اشیاء پایتون به معادل JSON (JavaScript) تبدیل می‌شوند:

🔸 دیکشنری (dict) به Object تبدیل می‌شود.
🔸 لیست (list) به Array تبدیل می‌شود.
🔸 تاپل (tuple) به Array تبدیل می‌شود.
🔸 رشته (str) به String تبدیل می‌شود.
🔸 عدد صحیح (int) به Number تبدیل می‌شود.
🔸 عدد اعشاری (float) به Number تبدیل می‌شود.
🔸 و True به true تبدیل می‌شود.
🔸 و False به false تبدیل می‌شود.
🔸 و None به null تبدیل می‌شود.


این تبدیل ها نشان می‌دهند که پایتون و JSON در بیان داده‌ها تفاوت‌هایی دارند. وقتی اشیاء پایتون را به JSON تبدیل می‌کنید، سعی می‌شود معادل JSON متناظر با هر نوع پایتونی ایجاد شود تا بتوانید آن را در سایر زبان‌ها و پلتفرم‌ها که از JSON پشتیبانی می‌کنند، استفاده کنید.
مثال زیر نمونه‌ای است که یک شیء پایتونی حاوی تمام انواع مجاز داده‌ها را به JSON تبدیل می‌کند:

import json

x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann", "Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}

print(json.dumps(x))


خروجی:

{"name": "John", "age": 30, "married": true, "divorced": false, "children": ["Ann", "Billy"], "pets": null, "cars": [{"model": "BMW 230", "mpg": 27.5}, {"model": "Ford Edge", "mpg": 24.1}]}


در این مثال، یک شیء پایتونی به نام x تعریف شده است که حاوی تمام انواع مجاز داده‌ها است، از جمله رشته، عدد صحیح، مقدار بولی، تاپل، None و لیستی از دیکشنری‌ها است. با استفاده از json.dumps()، این شیء به یک رشته JSON تبدیل شده و چاپ می‌شود.
مثال بالا یک رشته JSON را چاپ می‌کند، اما با عدم وجود تورفتگی و شکست خطوط، خوانایی آن به مراتب کاهش می‌یابد.

متد json.dumps() دارای پارامترهایی است که امکان بهبود خوانایی خروجی را فراهم می‌کنند:

مثال
از پارامتر indent برای تعیین تعداد فاصله‌های تورفتگی استفاده کنید:

json.dumps(x, indent=4)


همچنین می‌توانید جداکننده‌ها را تعیین کنید، مقدار پیش‌فرض (", ", ": ") است که به معنی استفاده از کاما و یک فاصله برای جدا کردن هر شیء، و نقطه و یک فاصله برای جدا کردن کلیدها از مقادیر است:

مثال
از پارامتر separators برای تغییر جداکننده‌های پیش‌فرض استفاده کنید:

json.dumps(x, indent=4, separators=(". ", " = "))


ترتیب کلیدها را مشخص کنید
متد json.dumps() دارای پارامترهایی است که امکان مشخص کردن ترتیب کلیدها در خروجی را فراهم می‌کنند:

مثال
از پارامتر sort_keys برای مشخص کردن اینکه خروجی باید مرتب شود یا خیر استفاده کنید:


json.dumps(x, indent=4, sort_keys=True)