🐍 فصل سوم — پایتون مقدماتی — عملگرها
—————————————-
Operator یا عملگر یعنی نمادی که به Python میگوید چه عملی روی دادهها انجام دهد.
مثلاً:
علامت
———————
1. عملگرهای حسابی — Arithmetic Operators
فرض کنیم:
جمع
خروجی:
——————————-
تفریق
خروجی:
——————
ضرب
خروجی:
————————-
تقسیم
خروجی:
⚠️ نکته مهم:
—————————
تقسیم صحیح
خروجی:
یعنی قسمت اعشاری را کنار میگذارد.
——————————-
باقیمانده
خروجی:
چون:
سه تا 3 میشود 9 و 1 باقی میماند.
این عملگر خیلی کاربردی است؛ مثلاً برای تشخیص زوج و فرد:
اگر نتیجه
—————————-
2. عملگرهای مقایسهای — Comparison Operators
اینجا نتیجه مقایسه همیشه یکی از این دو است:
مثلاً:
خروجی:
——————
یعنی:
⚠️ خیلی مهم:
با:
فرق دارد.
——————————-
یعنی:
یعنی:
مثلاً:
یعنی:
یعنی:
در جزوه نوشته بود:
❌ اشتباه است.
درست:
مثلاً:
—————————
3. نتیجه Comparison چه Data Typeای دارد؟
مثلاً:
خروجی:
نوع داده:
Boolean (
است.
Boolean فقط دو مقدار دارد:
———————-
4. Assignment Operators
Assignment یعنی مقداردهی یا تغییر مقدار متغیر.
مثلاً:
حالا:
یعنی:
پس:
خروجی:
———————
روش کوتاهتر
به جای:
میتوانیم بنویسیم:
یا
تفریق:
یا
ضرب:
یا
تقسیم:
یا
تقسیم صحیح:
یا
باقیمانده:
نتیجه یکی است.
———————————-
5. Logical Operators 🧠
این قسمت همان:
AND / OR / NOT
است.
این عملگرها معمولاً برای ترکیب چند شرط استفاده میشوند.
—————————
AND
مثلاً:
شرط اول:
شرط دوم:
پس:
خروجی:
مثال دیگر:
اینجا:
پس:
———————-
OR
مثلاً:
داریم:
چون یکی True است:
————————————
NOT
مثلاً:
اول:
پس:
بعد not آن را برعکس میکند:
not True → False
پس خروجی:
False
—————————————-
Operator یا عملگر یعنی نمادی که به Python میگوید چه عملی روی دادهها انجام دهد.
مثلاً:
x + y
علامت
+ یک عملگر است.———————
1. عملگرهای حسابی — Arithmetic Operators
فرض کنیم:
x = 10
y = 3
جمع
+print(x + y)
خروجی:
13
——————————-
تفریق
-print(x - y)
خروجی:
7
——————
ضرب
*print(x * y)
خروجی:
30
————————-
تقسیم
/print(x / y)
خروجی:
3.3333333333333335
⚠️ نکته مهم:
/ نتیجه را به صورت Float برمیگرداند.—————————
تقسیم صحیح
//print(x // y)
خروجی:
3
یعنی قسمت اعشاری را کنار میگذارد.
10 ÷ 3 = 3.333...
10 // 3 = 3
——————————-
باقیمانده
%print(x % y)
خروجی:
1
چون:
10 ÷ 3
سه تا 3 میشود 9 و 1 باقی میماند.
این عملگر خیلی کاربردی است؛ مثلاً برای تشخیص زوج و فرد:
number = 10
print(number % 2)
اگر نتیجه
0 باشد، عدد زوج است.—————————-
2. عملگرهای مقایسهای — Comparison Operators
اینجا نتیجه مقایسه همیشه یکی از این دو است:
True
False
مثلاً:
a = 8
b = 8
print(a == b)
خروجی:
True
——————
== برابر بودنa = 8
b = 8
print(a == b)
یعنی:
آیا a و b برابر هستند؟
⚠️ خیلی مهم:
=
با:
==
فرق دارد.
= برای Assignment است.== برای مقایسه است.——————————-
> بزرگترprint(a > b)
یعنی:
آیا a از b بزرگتر است؟
< کوچکترprint(a < b)
یعنی:
آیا a از b کوچکتر است؟
!= نابرابرa != b
مثلاً:
print(a != b)
یعنی:
آیا a و b با هم برابر نیستند؟
<= کوچکتر یا مساویprint(a <= b)
یعنی:
آیا a کوچکتر یا مساوی b است؟
>= بزرگتر یا مساویدر جزوه نوشته بود:
a => b
❌ اشتباه است.
درست:
a >= b
مثلاً:
print(a >= b)
—————————
3. نتیجه Comparison چه Data Typeای دارد؟
مثلاً:
a = 8
b = 8
c = a < b
print(c)
print(type(c))
خروجی:
False
<class 'bool'>
نوع داده:
Boolean (
bool)است.
Boolean فقط دو مقدار دارد:
True
False
———————-
4. Assignment Operators
Assignment یعنی مقداردهی یا تغییر مقدار متغیر.
مثلاً:
x = 10
حالا:
x = x + 5
یعنی:
10 + 5 = 15
پس:
print(x)
خروجی:
15
———————
روش کوتاهتر
به جای:
x = x + 5
میتوانیم بنویسیم:
x += 5
یا
تفریق:
x -= 5
یا
ضرب:
x *= 5
یا
تقسیم:
x /= 5
یا
تقسیم صحیح:
x //= 5
یا
باقیمانده:
x %= 5
نتیجه یکی است.
———————————-
5. Logical Operators 🧠
این قسمت همان:
AND / OR / NOT
است.
این عملگرها معمولاً برای ترکیب چند شرط استفاده میشوند.
—————————
AND
and یعنی:هر دو شرط باید True باشند.
مثلاً:
x = 5
print(x > 3 and x < 10)
شرط اول:
5 > 3 → True
شرط دوم:
5 < 10 → True
پس:
True AND True → True
خروجی:
True
مثال دیگر:
x = 5
print(x > 6 and x < 10)
اینجا:
5 > 6 → False
5 < 10 → True
پس:
False AND True → False
———————-
OR
or یعنی:حداقل یکی از شرطها True باشد.
مثلاً:
x = 5
print(x > 6 or x < 10)
داریم:
5 > 6 → False
5 < 10 → True
چون یکی True است:
False OR True → True
————————————
NOT
not نتیجه را برعکس میکند.مثلاً:
x = 5
print(not(x > 3 and x < 10))
اول:
x > 3 → True
x < 10 → True
پس:
True AND True → True
بعد not آن را برعکس میکند:
not True → False
پس خروجی:
False
🐍 فصل چهارم — پایتون مقدماتی — ورودی و خروجی ها
—————————————-
1. Output چیست؟
Output یعنی خروجی برنامه؛ یعنی برنامه اطلاعاتی را به کاربر نمایش دهد.
مهمترین دستور برای خروجی گرفتن:
مثلاً:
خروجی:
———————
2. Escape Character چیست؟ 🔤
گاهی میخواهیم داخل یک String کار خاصی انجام دهیم؛ مثلاً:
رفتن به خط بعد
ایجاد فاصله Tab
نمایش کوتیشن
نمایش
برای این کار از Escape Character استفاده میکنیم.
علامت اصلی آن:
است.
—————
مثلاً:
چون بیرون String از
اما اگر بخواهیم خود String با
خروجی:
———————
3.
خروجی:
یعنی:
——————-
4.
خروجی تقریباً:
یعنی:
———————
5.
به صورت پیشفرض
مثلاً:
خروجی:
اما میتوانیم رفتار پایان
خروجی:
چون به جای رفتن به خط بعد،
————————
6. Input چیست؟ ⌨️
Input یعنی گرفتن اطلاعات از کاربر.
برای این کار از:
استفاده میکنیم.
مثلاً:
برنامه منتظر میماند تا کاربر چیزی وارد کند.
—————————-
7. ذخیره کردن Input در Variable
اگر بخواهیم ورودی کاربر را نگه داریم:
حالا اطلاعات داخل متغیرها ذخیره شدهاند.
میتوانیم نمایششان بدهیم:
——————
⚠️ نکته خیلی مهم درباره input
هر چیزی که با
مثلاً:
اگر کاربر وارد کند:
مقدار
است.
نه:
پس اگر بخواهیم با آن محاسبات ریاضی انجام دهیم، باید تبدیلش کنیم.
_———————-
8. ساخت ماشینحساب ساده 🧮
در جزوهات نوشتی:
اما اینجا یک نکته مهم وجود دارد.
فرض کنیم کاربر وارد کند:
و:
چون هر دو String هستند:
میشود:
و نتیجه:
❌ نه 30!
————————
راه درست
باید ورودی را تبدیل کنیم:
اگر کاربر وارد کند:
خروجی:
اینجا:
یعنی:
_—————————-
9. f-string چیست؟ 🔥
یکی از بهترین روشهای نمایش متغیرها داخل متن، f-string است.
مثلاً:
خروجی:
قسمت مهم:
حرف
و متغیر را داخل:
قرار میدهیم.
_————————
10. روش قدیمیتر
در جزوهات این را هم داشتی:
اینجا:
این روش قدیمیتر است.
امروزه معمولاً f-string خواناتر و راحتتر است:
پس برای Python جدید، f-string را خوب یاد بگیر.
————————
11. ترکیب Input + تبدیل نوع داده
مثال کامل:
فرض کن کاربر وارد کند:
خروجی:
اینجا:
یعنی سن را به Integer تبدیل کردیم.
و:
یعنی نمره را به Float تبدیل کردیم.
—————————————-
1. Output چیست؟
Output یعنی خروجی برنامه؛ یعنی برنامه اطلاعاتی را به کاربر نمایش دهد.
مهمترین دستور برای خروجی گرفتن:
print()
مثلاً:
print("Hello Ali")خروجی:
Hello Ali
———————
2. Escape Character چیست؟ 🔤
گاهی میخواهیم داخل یک String کار خاصی انجام دهیم؛ مثلاً:
رفتن به خط بعد
ایجاد فاصله Tab
نمایش کوتیشن
نمایش
\برای این کار از Escape Character استفاده میکنیم.
علامت اصلی آن:
\
است.
—————
\" نمایش Double Quoteمثلاً:
print('ali reza "python" nima')چون بیرون String از
' استفاده کردهایم، مشکلی نداریم.اما اگر بخواهیم خود String با
" باشد:print("ali reza \"python\" nima")خروجی:
ali reza "python" nima
\" یعنی:این
"را به عنوان بخشی از متن در نظر بگیر.
———————
3.
\n رفتن به خط بعدprint('ali reza "python" \nnima')خروجی:
ali reza "python"
nima
یعنی:
\n = New Line
——————-
4.
\t ایجاد Tabprint('ali reza "python" \tnima')خروجی تقریباً:
ali reza "python" nima
یعنی:
\t = Tab
———————
5.
end در printبه صورت پیشفرض
print() بعد از نمایش متن به خط بعد میرود.مثلاً:
print("Ali")
print("Reza")خروجی:
Ali
Reza
اما میتوانیم رفتار پایان
print را با end تغییر دهیم:print("Ali", end=" . ")
print("Reza")خروجی:
Ali . Reza
چون به جای رفتن به خط بعد،
end مشخص کردهایم:end=" . "
————————
6. Input چیست؟ ⌨️
Input یعنی گرفتن اطلاعات از کاربر.
برای این کار از:
input()
استفاده میکنیم.
مثلاً:
input("Enter your name: ")برنامه منتظر میماند تا کاربر چیزی وارد کند.
—————————-
7. ذخیره کردن Input در Variable
اگر بخواهیم ورودی کاربر را نگه داریم:
first_name = input("Enter your name: ")
last_name = input("Enter your lastname: ")
age = input("Enter age: ")حالا اطلاعات داخل متغیرها ذخیره شدهاند.
میتوانیم نمایششان بدهیم:
print("Your name:", first_name)
print("Lastname:", last_name)
print("Your age:", age)——————
⚠️ نکته خیلی مهم درباره input
هر چیزی که با
input() دریافت میکنیم، به صورت String (str) وارد برنامه میشود.مثلاً:
age = input("Enter age: ")اگر کاربر وارد کند:
25
مقدار
age در واقع:"25"
است.
نه:
25
پس اگر بخواهیم با آن محاسبات ریاضی انجام دهیم، باید تبدیلش کنیم.
_———————-
8. ساخت ماشینحساب ساده 🧮
در جزوهات نوشتی:
x = input("num1")
y = input("num2")
print("my answer:", x + y)اما اینجا یک نکته مهم وجود دارد.
فرض کنیم کاربر وارد کند:
10
و:
20
چون هر دو String هستند:
x + y
میشود:
"10" + "20"
و نتیجه:
1020
❌ نه 30!
————————
راه درست
باید ورودی را تبدیل کنیم:
x = int(input("num1: "))
y = int(input("num2: "))
print("My answer:", x + y)اگر کاربر وارد کند:
10
20
خروجی:
My answer: 30
اینجا:
int(input())
یعنی:
ورودی را بگیر و آن را به Integer تبدیل کن.
_—————————-
9. f-string چیست؟ 🔥
یکی از بهترین روشهای نمایش متغیرها داخل متن، f-string است.
مثلاً:
name = "Ali"
age = 25
score = 19.7
print(f"name: {name} and age: {age} and score: {score}")
خروجی:
name: Ali and age: 25 and score: 19.7
قسمت مهم:
f"... {name} ..."حرف
f به Python میگوید:داخل این String ممکن است Expression یا Variable داشته باشیم.
و متغیر را داخل:
{ }قرار میدهیم.
_————————
10. روش قدیمیتر
%در جزوهات این را هم داشتی:
print("name: %s, age: %d" % (name, age))اینجا:
%s → String
%d → Integer
این روش قدیمیتر است.
امروزه معمولاً f-string خواناتر و راحتتر است:
print(f"name: {name}, age: {age}")پس برای Python جدید، f-string را خوب یاد بگیر.
————————
11. ترکیب Input + تبدیل نوع داده
مثال کامل:
name = input("Enter your name: ")
age = int(input("Enter your age: "))
score = float(input("Enter your score: "))
print(f"name: {name}")
print(f"age: {age}")
print(f"score: {score}")فرض کن کاربر وارد کند:
Ali
25
19.7
خروجی:
name: Ali
age: 25
score: 19.7
اینجا:
age = int(input(...))
یعنی سن را به Integer تبدیل کردیم.
و:
score = float(input(...))
یعنی نمره را به Float تبدیل کردیم.
🧠 یک مثال واقعی برای مسیر امنیت
فرض کن بعداً میخواهیم ابزار امنیتی بنویسیم که IP از کاربر بگیرد:
کاربر:
برنامه:
بعداً همین Input را میتوانیم وارد بخشهای شبکه، Socket و ابزارهای امنیتی کنیم. 🔥
فرض کن بعداً میخواهیم ابزار امنیتی بنویسیم که IP از کاربر بگیرد:
ip = input("Enter target IP: ")
print(f"Target IP is: {ip}")کاربر:
192.168.1.10
برنامه:
Target IP is: 192.168.1.10
بعداً همین Input را میتوانیم وارد بخشهای شبکه، Socket و ابزارهای امنیتی کنیم. 🔥
🔥1
🐍 فصل پنجم — پایتون مقدماتی — ساختار داده
—————————————-
1️⃣ لیست —
لیست را زمانی استفاده میکنیم که بخواهیم چند مقدار را کنار هم نگه داریم و امکان تغییر آنها را داشته باشیم.
مثلاً سن چند نفر:
هر عضو یک Index دارد.
⚠️ نکته مهم: شمارهگذاری از 0 شروع میشود.
پس:
خروجی:
و:
خروجی:
🔹 داخل List چه چیزی میتوانیم قرار دهیم؟
تقریباً هر نوع دادهای:
حتی میتوانیم لیست داخل لیست داشته باشیم.
2️⃣ اضافه کردن به List
اگر بخواهیم چیزی را به انتهای لیست اضافه کنیم:
اگر بخواهیم در یک Index مشخص چیزی اضافه کنیم:
یعنی
3️⃣ حذف از List
اگر Index را بدانیم:
عضو Index شماره 2 را حذف میکند.
اگر Index را ندانیم ولی خود مقدار را بدانیم:
اولین مقدار
پس تفاوت:
یعنی:
ولی:
یعنی:
—————————————
مثال کاربردی — محاسبه نمرات
فرض کنیم میخواهیم نمرات 4 درس را از کاربر بگیریم.
ولی یک نکته مهم وجود دارد.
ما اصلاً لازم نیست برای تعداد درسها عدد
از
———————————————
5️⃣ تابع
مثلاً:
خروجی:
بنابراین:
یعنی:
این روش بهتر است چون اگر بعداً 5 نمره داشتیم، لازم نیست
—————————
6️⃣ Tuple — تاپل
Tuple شبیه List است، اما یک تفاوت بسیار مهم دارد:
مثلاً:
میتوانیم:
اما نمیتوانیم بگوییم:
و Python خطا میدهد.
چرا Tuple؟
وقتی اطلاعاتی داریم که نباید تغییر کنند.
مثلاً:
اگر این اطلاعات قرار است ثابت باشند، Tuple انتخاب مناسبی است.
———————————-
7️⃣ Tuple Unpacking
یکی از قابلیتهای جالب Tuple، Unpacking است.
مثلاً:
میتوانیم مقدارها را جداگانه داخل متغیرها بریزیم:
حالا:
خروجی:
یعنی:
⚠️ تعداد متغیرها باید با تعداد مقادیر هماهنگ باشد.
مثلاً این اشتباه است:
چون 3 مقدار داریم ولی فقط 2 متغیر.
————————-
8️⃣ Packing
برعکس Unpacking را میتوانیم به شکل ساده Packing در نظر بگیریم.
یعنی چند مقدار را در یک Tuple قرار دهیم:
Python آن را به شکل Tuple در نظر میگیرد:
البته بهتر است برای خوانایی بنویسیم:
—————————
9️⃣ Set — مجموعه
Set برای نگهداری مجموعهای از دادهها استفاده میشود که:
ترتیب مشخصی ندارند
عضو تکراری نگه نمیدارند
قابل تغییر هستند
مثلاً:
نتیجه:
عدد
کاربرد واقعی
مثلاً از یک سیستم لاگ گرفتهایم و IPهای مختلف داریم:
اگر بخواهیم فقط IPهای منحصربهفرد را داشته باشیم، Set خیلی مناسب است.
—————————————-
🔟 اضافه کردن به Set
با
نتیجه:
1️⃣1️⃣ حذف از Set
عدد
اما اگر
اگر
اگر وجود نداشته باشد:
⚠️ در جزوهات
است.
1️⃣2️⃣ اجتماع Setها — Union
فرض کنیم:
با:
اجتماع دو مجموعه را میگیریم:
یعنی:
1️⃣3️⃣ اشتراک — Intersection
با:
اعضای مشترک را پیدا میکنیم.
نتیجه:
یعنی فقط چیزهایی که هم در A هستند و هم در B.
1️⃣4️⃣ تفاضل — Difference
یعنی:
نتیجه:
اما اگر بنویسیم:
نتیجه:
پس ترتیب مهم است.
1️⃣5️⃣ Dictionary — دیکشنری
دیکشنری یکی از مهمترین ساختارهای Python است.
در Dictionary اطلاعات به صورت:
ذخیره میشوند.
مثلاً:
اینجا:
1️⃣6️⃣ دسترسی به Dictionary
مثلاً:
خروجی:
یا:
خروجی:
————————————————
—————————————-
1️⃣ لیست —
listلیست را زمانی استفاده میکنیم که بخواهیم چند مقدار را کنار هم نگه داریم و امکان تغییر آنها را داشته باشیم.
مثلاً سن چند نفر:
ages = [20, 10, 1, 15, 16]
هر عضو یک Index دارد.
⚠️ نکته مهم: شمارهگذاری از 0 شروع میشود.
Index: 0 1 2 3 4
Value: 20 10 1 15 16
پس:
print(ages[0])
خروجی:
20
و:
print(ages[1])
خروجی:
10
🔹 داخل List چه چیزی میتوانیم قرار دهیم؟
تقریباً هر نوع دادهای:
data = [10, "Ali", 19.5, True]
حتی میتوانیم لیست داخل لیست داشته باشیم.
2️⃣ اضافه کردن به List
append()اگر بخواهیم چیزی را به انتهای لیست اضافه کنیم:
ages.append("Reza")2️⃣insert()اگر بخواهیم در یک Index مشخص چیزی اضافه کنیم:
ages.insert(0, "Zahra")
یعنی
"Zahra" را در Index شماره 0 قرار بده.3️⃣ حذف از List
pop()اگر Index را بدانیم:
ages.pop(2)
عضو Index شماره 2 را حذف میکند.
remove()اگر Index را ندانیم ولی خود مقدار را بدانیم:
ages.remove(10)
اولین مقدار
10 را پیدا میکند و حذف میکند.پس تفاوت:
ages.pop(2)
یعنی:
عضو شماره 2 را حذف کن.
ولی:
ages.remove(10)
یعنی:
مقدار 10 را پیدا کن و حذف کن.
—————————————
مثال کاربردی — محاسبه نمرات
فرض کنیم میخواهیم نمرات 4 درس را از کاربر بگیریم.
scores = []
score_1 = int(input("1 score: "))
score_2 = int(input("2 score: "))
score_3 = int(input("3 score: "))
score_4 = int(input("4 score: "))
scores.append(score_1)
scores.append(score_2)
scores.append(score_3)
scores.append(score_4)
result = score_1 + score_2 + score_3 + score_4
print(result / 4)
ولی یک نکته مهم وجود دارد.
ما اصلاً لازم نیست برای تعداد درسها عدد
4 را دستی بنویسیم.از
len() استفاده میکنیم.———————————————
5️⃣ تابع
len()len() تعداد اعضای یک ساختار داده را به ما میدهد.مثلاً:
scores = [18, 19, 20, 17]
print(len(scores))
خروجی:
4
بنابراین:
print(result / len(scores))
یعنی:
مجموع نمرات را بر تعداد نمرات تقسیم کن.
این روش بهتر است چون اگر بعداً 5 نمره داشتیم، لازم نیست
4 را دستی تغییر دهیم.—————————
6️⃣ Tuple — تاپل
Tuple شبیه List است، اما یک تفاوت بسیار مهم دارد:
Tuple بعد از ساخته شدن قابل تغییر نیست.
مثلاً:
colors = ("red", "blue", "white", "black")میتوانیم:
print(colors[0])
اما نمیتوانیم بگوییم:
colors[0] = "green"
و Python خطا میدهد.
چرا Tuple؟
وقتی اطلاعاتی داریم که نباید تغییر کنند.
مثلاً:
server_info = ("192.168.1.10", 22, "SSH")اگر این اطلاعات قرار است ثابت باشند، Tuple انتخاب مناسبی است.
———————————-
7️⃣ Tuple Unpacking
یکی از قابلیتهای جالب Tuple، Unpacking است.
مثلاً:
student = ("Ali", 25, 19.5)میتوانیم مقدارها را جداگانه داخل متغیرها بریزیم:
name, age, score = student
حالا:
print(name)
print(age)
print(score)
خروجی:
Ali
25
19.5
یعنی:
student
↓
("Ali", 25, 19.5)
↓ Unpacking
name = "Ali"
age = 25
score = 19.5
⚠️ تعداد متغیرها باید با تعداد مقادیر هماهنگ باشد.
مثلاً این اشتباه است:
name, age = ("Ali", 25, 19.5)چون 3 مقدار داریم ولی فقط 2 متغیر.
————————-
8️⃣ Packing
برعکس Unpacking را میتوانیم به شکل ساده Packing در نظر بگیریم.
یعنی چند مقدار را در یک Tuple قرار دهیم:
student = "Ali", 25, 19.5
Python آن را به شکل Tuple در نظر میگیرد:
("Ali", 25, 19.5)البته بهتر است برای خوانایی بنویسیم:
student = ("Ali", 25, 19.5)—————————
9️⃣ Set — مجموعه
Set برای نگهداری مجموعهای از دادهها استفاده میشود که:
ترتیب مشخصی ندارند
عضو تکراری نگه نمیدارند
قابل تغییر هستند
مثلاً:
numbers = {1, 2, 3, 4, 4, 5}نتیجه:
{1, 2, 3, 4, 5}عدد
4 فقط یک بار باقی میماند.کاربرد واقعی
مثلاً از یک سیستم لاگ گرفتهایم و IPهای مختلف داریم:
ips = {
"192.168.1.10",
"192.168.1.20",
"192.168.1.10",
"192.168.1.30"
}اگر بخواهیم فقط IPهای منحصربهفرد را داشته باشیم، Set خیلی مناسب است.
—————————————-
🔟 اضافه کردن به Set
با
add():numbers.add(6)
نتیجه:
{1, 2, 3, 4, 5, 6}1️⃣1️⃣ حذف از Set
remove()numbers.remove(2)
عدد
2 حذف میشود.اما اگر
2 در Set وجود نداشته باشد، خطا میدهد.discard()numbers.discard(7)
اگر
7 وجود داشته باشد، حذف میشود.اگر وجود نداشته باشد:
هیچ خطایی نمیدهد.
⚠️ در جزوهات
dicard نوشته شده؛ دستور صحیح:discard()
است.
1️⃣2️⃣ اجتماع Setها — Union
فرض کنیم:
a = {1, 2, 3, 4, 5}
b = {1, 3, 4, 5, 6, 9}با:
print(a | b)
اجتماع دو مجموعه را میگیریم:
{1, 2, 3, 4, 5, 6, 9}یعنی:
همه اعضای A و B، بدون تکرار.
1️⃣3️⃣ اشتراک — Intersection
با:
print(a & b)
اعضای مشترک را پیدا میکنیم.
نتیجه:
{1, 3, 4, 5}یعنی فقط چیزهایی که هم در A هستند و هم در B.
1️⃣4️⃣ تفاضل — Difference
print(a - b)
یعنی:
چیزهایی که در A هستند ولی در B نیستند.
نتیجه:
{2}اما اگر بنویسیم:
print(b - a)
نتیجه:
{6, 9}پس ترتیب مهم است.
1️⃣5️⃣ Dictionary — دیکشنری
دیکشنری یکی از مهمترین ساختارهای Python است.
در Dictionary اطلاعات به صورت:
key : value
ذخیره میشوند.
مثلاً:
student = {
"name": "Alireza",
"age": 20,
"score": 19.5
}اینجا:
key value
----------------
name Alireza
age 20
score 19.5
1️⃣6️⃣ دسترسی به Dictionary
مثلاً:
print(student["name"])
خروجی:
Alireza
یا:
print(student["age"])
خروجی:
20
————————————————
My folder vip
🐍 فصل پنجم — پایتون مقدماتی — ساختار داده —————————————- 1️⃣ لیست — list لیست را زمانی استفاده میکنیم که بخواهیم چند مقدار را کنار هم نگه داریم و امکان تغییر آنها را داشته باشیم. مثلاً سن چند نفر: ages = [20, 10, 1, 15, 16] هر عضو یک Index دارد. ⚠️ نکته…
1️⃣7️⃣
روش دیگر برای گرفتن مقدار:
خروجی:
تفاوت مهم این دو:
اگر
اما:
اگر وجود نداشته باشد، بهصورت پیشفرض:
برمیگرداند.
حتی میتوانیم مقدار جایگزین تعیین کنیم:
اگر
————————————
1️⃣8️⃣ تغییر مقدار Dictionary
مثلاً:
حالا:
میشود:
—————————-
1️⃣9️⃣ اضافه کردن Key جدید
مثلاً:
حالا Dictionary شامل
نکته جالب:
اگر Key از قبل وجود داشته باشد:
مقدار قبلی تغییر میکند.
اگر Key وجود نداشته باشد:
یک مورد جدید اضافه میشود.
——————————-
2️⃣0️⃣ حذف از Dictionary
با
Key و مقدار مربوط به آن حذف میشوند.
میتوانیم مقدار حذفشده را هم دریافت کنیم:
یعنی:
————————————
🔥 حالا مهمترین سؤال: کِی از کدام استفاده کنیم؟
این قسمت را خیلی خوب یاد بگیر:
🟢 List
وقتی:
مثلاً:
—————————
🔵 Tuple
وقتی:
مثلاً:
———————-
🟡 Set
وقتی:
مثلاً:
IP تکراری حذف میشود.
—————————————-
🔴 Dictionary
وقتی:
مثلاً:
خیلی راحت میتوانیم بگوییم:
——————————-
🧠 یک مثال امنیتی که هر 4 تا را با هم ببینیم
فرض کن اطلاعات یک سرور را داریم:
اینجا:
این دقیقاً جایی است که Data Structures در پروژههای واقعی شبکه و امنیت کاربرد پیدا میکند. 🔥
get()روش دیگر برای گرفتن مقدار:
print(student.get("age"))خروجی:
20
تفاوت مهم این دو:
student["phone"]
اگر
phone وجود نداشته باشد، KeyError میگیریم.اما:
student.get("phone")اگر وجود نداشته باشد، بهصورت پیشفرض:
None
برمیگرداند.
حتی میتوانیم مقدار جایگزین تعیین کنیم:
print(student.get("phone", "Not Found"))اگر
phone وجود نداشته باشد:Not Found
————————————
1️⃣8️⃣ تغییر مقدار Dictionary
مثلاً:
student["name"] = "Reza"
حالا:
print(student["name"])
میشود:
Reza
—————————-
1️⃣9️⃣ اضافه کردن Key جدید
مثلاً:
student["phone"] = "09132565464"
حالا Dictionary شامل
phone هم میشود.نکته جالب:
اگر Key از قبل وجود داشته باشد:
student["age"] = 25
مقدار قبلی تغییر میکند.
اگر Key وجود نداشته باشد:
student["phone"] = "..."
یک مورد جدید اضافه میشود.
——————————-
2️⃣0️⃣ حذف از Dictionary
با
del:del student["age"]
Key و مقدار مربوط به آن حذف میشوند.
pop()میتوانیم مقدار حذفشده را هم دریافت کنیم:
a = student.pop("phone")
print("a is", a)یعنی:
phoneرا حذف کن و مقدارش را داخل
aقرار بده.
————————————
🔥 حالا مهمترین سؤال: کِی از کدام استفاده کنیم؟
این قسمت را خیلی خوب یاد بگیر:
🟢 List
وقتی:
چند داده داریم، ترتیب برایمان مهم است و میخواهیم بتوانیم آنها را تغییر دهیم.
مثلاً:
servers = ["server1", "server2", "server3"]
—————————
🔵 Tuple
وقتی:
چند داده داریم، ترتیب مهم است ولی نمیخواهیم دادهها تغییر کنند.
مثلاً:
server = ("192.168.1.10", 22, "SSH")———————-
🟡 Set
وقتی:
فقط اعضای منحصربهفرد برایمان مهم هستند و تکراری نمیخواهیم.
مثلاً:
blocked_ips = {
"1.1.1.1",
"2.2.2.2",
"1.1.1.1"
}IP تکراری حذف میشود.
—————————————-
🔴 Dictionary
وقتی:
میخواهیم هر داده یک اسم/کلید داشته باشد.
مثلاً:
server = {
"ip": "192.168.1.10",
"port": 22,
"service": "SSH"
}خیلی راحت میتوانیم بگوییم:
server["ip"]
——————————-
🧠 یک مثال امنیتی که هر 4 تا را با هم ببینیم
فرض کن اطلاعات یک سرور را داریم:
server = {
"name": "WebServer",
"ip": "192.168.1.10",
"ports": [22, 80, 443],
"protocols": ("SSH", "HTTP", "HTTPS"),
"users": {"ali", "reza", "ali"}
}اینجا:
dict → اطلاعات کلی سرورlist → پورتها چون ترتیب/لیستبودن و تغییرپذیری میتواند مهم باشدtuple → پروتکلهای ثابتset → کاربران بدون تکراراین دقیقاً جایی است که Data Structures در پروژههای واقعی شبکه و امنیت کاربرد پیدا میکند. 🔥
🐍 فصل ششم — پایتون مقدماتی — control flow
—————————————-
Control Flow یعنی کنترل جریان اجرای برنامه.
تا قبل از این، برنامه معمولاً خطبهخط اجرا میشد:
اما با شرطها میتوانیم بگوییم:
=================
1️⃣
مثلاً میخواهیم نمره را بررسی کنیم:
یعنی:
⚠️ دو نکته مهم
در جزوه نوشته بودی:
❌ اشتباه است.
باید
و دستور داخل
===============
2️⃣
اگر بخواهیم برای حالت غلط هم کاری انجام دهیم:
یعنی:
اگر بنویسیم:
یعنی:
پس خود
تفاوت:
====================
3️⃣ Nested If — شرط تو در تو
مثالی که نوشتی مربوط به Login بود:
اینجا دو شرط داریم.
اول:
اگر Username درست بود، میرود سراغ Password:
اگر هر دو درست باشند:
اگر Username درست باشد ولی Password اشتباه باشد:
و اگر Username اشتباه باشد:
==================
4️⃣
گاهی بیشتر از دو حالت داریم.
مثلاً میخواهیم بر اساس نمره Grade تعیین کنیم:
⚠️ یک اشتباه در جزوه:
نوشته بودی:
❌ اشتباه
درست:
🧠
Python شرطها را از بالا به پایین بررسی میکند.
مثلاً:
اول بررسی:
درست است →
دیگر سراغ:
نمیرود.
یعنی وقتی یک شرط درست شد، آن شاخه اجرا میشود و زنجیره شرط تمام میشود.
🔥 چرا ترتیب
مثلاً این کد را ببین:
اینجا
پس همان اول
بنابراین باید از بزرگترین شرط به کوچکترین شرط برویم:
=================
5️⃣ Short-Hand If — شرط یکخطی
برای شرطهای ساده میتوانیم از حالت کوتاه استفاده کنیم.
مثلاً:
چون:
غلط است، نتیجه:
ساختار کلی:
مثلاً:
یعنی:
===================
—————————————-
Control Flow یعنی کنترل جریان اجرای برنامه.
تا قبل از این، برنامه معمولاً خطبهخط اجرا میشد:
print("A")
print("B")
print("C")اما با شرطها میتوانیم بگوییم:
اگر این اتفاق افتاد، این کار را انجام بده؛ وگرنه کار دیگری انجام بده.
=================
1️⃣
if — شرطمثلاً میخواهیم نمره را بررسی کنیم:
score = int(input("Enter your score: "))
if score > 50:
print("Afarin")یعنی:
اگر
scoreبزرگتر از 50 بود،
Afarinرا چاپ کن.
⚠️ دو نکته مهم
در جزوه نوشته بودی:
if score > 50;
❌ اشتباه است.
باید
: باشد:if score > 50:
و دستور داخل
if باید Indentation داشته باشد:if score > 50:
print("Afarin")
===============
2️⃣
if / elseاگر بخواهیم برای حالت غلط هم کاری انجام دهیم:
score = int(input("Enter your score: "))
if score > 50:
print("Afarin")
else:
print("Niyaz be talash")یعنی:
اگر score > 50
↓
آفرین
در غیر این صورت
↓
نیاز به تلاش
>=اگر بنویسیم:
if score >= 50:
یعنی:
بزرگتر از 50 یا مساوی 50
پس خود
50 هم قبول میشود.تفاوت:
> 50 → خود 50 قبول نیست
>= 50 → خود 50 هم قبول است
====================
3️⃣ Nested If — شرط تو در تو
مثالی که نوشتی مربوط به Login بود:
user = input("Enter user: ")
password = input("Enter pass: ")
if user == "admin":
if password == "1234":
print(f"Welcome {user}")
else:
print("Password eshtebah")
else:
print("User eshtebah")اینجا دو شرط داریم.
اول:
if user == "admin":
اگر Username درست بود، میرود سراغ Password:
if password == "1234":
اگر هر دو درست باشند:
Welcome admin
اگر Username درست باشد ولی Password اشتباه باشد:
Password eshtebah
و اگر Username اشتباه باشد:
User eshtebah
==================
4️⃣
elifگاهی بیشتر از دو حالت داریم.
مثلاً میخواهیم بر اساس نمره Grade تعیین کنیم:
score = int(input("Enter your score: "))
grade = ""
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "F"
print(grade)⚠️ یک اشتباه در جزوه:
نوشته بودی:
elif score => 80:
❌ اشتباه
درست:
elif score >= 80:
🧠
elif چطور کار میکند؟Python شرطها را از بالا به پایین بررسی میکند.
مثلاً:
score = 95
اول بررسی:
score >= 90
درست است →
Aدیگر سراغ:
elif score >= 80
elif score >= 70
نمیرود.
یعنی وقتی یک شرط درست شد، آن شاخه اجرا میشود و زنجیره شرط تمام میشود.
🔥 چرا ترتیب
elif مهم است؟مثلاً این کد را ببین:
score = 95
if score >= 70:
grade = "C"
elif score >= 80:
grade = "B"
elif score >= 90:
grade = "A"
اینجا
95 >= 70 درست است.پس همان اول
C میشود! 😄بنابراین باید از بزرگترین شرط به کوچکترین شرط برویم:
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "F"
=================
5️⃣ Short-Hand If — شرط یکخطی
برای شرطهای ساده میتوانیم از حالت کوتاه استفاده کنیم.
مثلاً:
age = 20
status = "old" if age >= 50 else "young"
print(status)
چون:
20 >= 50
غلط است، نتیجه:
young
ساختار کلی:
value_if_true if condition else value_if_false
مثلاً:
result = "Pass" if score >= 50 else "Fail"
یعنی:
اگر نمره حداقل 50 بود
Pass، وگرنه
Fail.
===================
My folder vip
🐍 فصل ششم — پایتون مقدماتی — control flow —————————————- Control Flow یعنی کنترل جریان اجرای برنامه. تا قبل از این، برنامه معمولاً خطبهخط اجرا میشد: print("A") print("B") print("C") اما با شرطها میتوانیم بگوییم: اگر این اتفاق افتاد، این کار را انجام بده؛…
🔐 مثال کاربردی برای مسیر امنیت
فرض کن میخواهیم بررسی کنیم یک IP در لیست IPهای مجاز هست یا نه:
اینجا شرط داریم:
که نتیجهاش
این نوع منطق را بعداً در اسکریپتهای شبکه و امنیت خیلی زیاد میبینی.
فرض کن میخواهیم بررسی کنیم یک IP در لیست IPهای مجاز هست یا نه:
allowed_ips = {
"192.168.1.10",
"192.168.1.20",
"192.168.1.30"
}
ip = input("Enter IP: ")
if ip in allowed_ips:
print("Access Granted")
else:
print("Access Denied")اینجا شرط داریم:
ip in allowed_ips
که نتیجهاش
True یا False میشود.این نوع منطق را بعداً در اسکریپتهای شبکه و امنیت خیلی زیاد میبینی.
🐍 فصل هفتم — پایتون مقدماتی — Control Flow Loops
—————————————-
Loop یعنی حلقه؛ یعنی یک قسمت از برنامه را چندین بار اجرا کنیم.
مثلاً به جای اینکه 5 بار بنویسیم:
میتوانیم از حلقه استفاده کنیم.
==========================
1️⃣ حلقه
مثلاً:
خروجی:
نحوه کار
Python میگوید:
ساختار کلی:
یعنی:
===================
2️⃣
مثلاً:
اگر بخواهیم هم Key و هم Value را بگیریم:
خروجی:
باعث میشود Key و Value را با هم دریافت کنیم.
یعنی تقریباً:
==============
3️⃣
یکی از مهمترین چیزهایی که در
مثلاً:
خروجی:
⚠️ نکته مهم:
یعنی:
پس 5 خودش چاپ نمیشود.
======================
4️⃣ حلقه
مثلاً:
اینجا:
شروع میشود.
هر بار:
یک واحد به آن اضافه میشود.
پس:
وقتی به
دیگر
====================
⚠️ چرا
اگر این را ننویسیم:
حلقه هیچوقت به 10 نمیرسد!
چون
پس یک Infinite Loop یا حلقه بینهایت خواهیم داشت.
==================
5️⃣
مثلاً:
اینجا شرط همیشه:
است.
بنابراین حلقه خودش هیچوقت تمام نمیشود.
برای متوقف کردن چنین حلقهای معمولاً از
===================
6️⃣ مثال گرفتن نام 10 دانشآموز
اینجا:
لیست خالی است.
بعد:
نام را داخل یک متغیر موقت میگیریم.
و:
نام را به لیست اضافه میکنیم.
در نهایت 10 نفر داریم.
===================
🛑 7️⃣
مثلاً همان برنامه دانشآموزها را در نظر بگیر.
فرض کن میگوییم اگر کاربر
حالا اگر کاربر وارد کند:
وقتی
اجرا میشود و کل حلقه تمام میشود.
نتیجه:
خود
🧠 حفظ کن:
===================
🔄 8️⃣
مثلاً:
فرض کنیم:
وقتی
اجرا میشود.
یعنی:
پس
تفاوت اصلی:
ولی:
===========
9️⃣ مثال خیلی ساده برای تفاوت
خروجی:
وقتی به
—————-
خروجی:
وقتی به
=====================
🟡 10️⃣
مثلاً:
خروجی:
حتی تکرار را هم رد نمیکند.
فقط یک دستور خالی است.
pass
کجا کاربرد دارد؟
گاهی هنوز نمیدانیم قرار است داخل یک شرط یا تابع چه کدی بنویسیم.
مثلاً:
if score > 90:
pass
else:
print("Try again")
یعنی:
اگر نمره بیشتر از 90 شد، فعلاً هیچ کاری نکن.
بعداً میتوانیم کد واقعی را جای pass بگذاریم.
—————————————-
Loop یعنی حلقه؛ یعنی یک قسمت از برنامه را چندین بار اجرا کنیم.
مثلاً به جای اینکه 5 بار بنویسیم:
print("Hello")
print("Hello")
print("Hello")
print("Hello")
print("Hello")میتوانیم از حلقه استفاده کنیم.
==========================
1️⃣ حلقه
forfor زمانی خیلی کاربردی است که بخواهیم روی اعضای یک مجموعه یکییکی حرکت کنیم.مثلاً:
miveha = ("apple", "banana", "cherry")
for mive in miveha:
print(mive)خروجی:
apple
banana
cherry
نحوه کار
Python میگوید:
miveha
↓
apple → print
banana → print
cherry → print
ساختار کلی:
for variable in collection:
code
یعنی:
برای هر عضو داخل collection، این کد را اجرا کن.
===================
2️⃣
for روی Dictionaryمثلاً:
person = {
"name": "Ali",
"age": 25
}اگر بخواهیم هم Key و هم Value را بگیریم:
for key, value in person.items():
print(f"{key} = {value}")
خروجی:
name = Ali
age = 25
.items() چیست؟person.items()
باعث میشود Key و Value را با هم دریافت کنیم.
یعنی تقریباً:
name → Ali
age → 25
==============
3️⃣
range()یکی از مهمترین چیزهایی که در
for استفاده میشود:range()
مثلاً:
for i in range(5):
print(i)
خروجی:
0
1
2
3
4
⚠️ نکته مهم:
range(5) از 0 تا قبل از 5 است.یعنی:
0, 1, 2, 3, 4
پس 5 خودش چاپ نمیشود.
======================
4️⃣ حلقه
whilewhile یعنی:تا زمانی که شرط درست است، حلقه را ادامه بده.
مثلاً:
counter = 0
while counter < 10:
print("Hello bro")
counter += 1
اینجا:
counter = 0
شروع میشود.
هر بار:
counter += 1
یک واحد به آن اضافه میشود.
پس:
0
1
2
3
...
9
وقتی به
10 برسد:counter < 10
دیگر
False میشود و حلقه تمام میشود.====================
⚠️ چرا
counter += 1 مهم است؟اگر این را ننویسیم:
counter = 0
while counter < 10:
print("Hello")
حلقه هیچوقت به 10 نمیرسد!
چون
counter همیشه 0 باقی میماند.پس یک Infinite Loop یا حلقه بینهایت خواهیم داشت.
==================
5️⃣
while Trueمثلاً:
while True:
print("Hello bro")
اینجا شرط همیشه:
True
است.
بنابراین حلقه خودش هیچوقت تمام نمیشود.
برای متوقف کردن چنین حلقهای معمولاً از
break استفاده میکنیم.===================
6️⃣ مثال گرفتن نام 10 دانشآموز
students = []
counter = 0
while counter < 10:
student = input("Enter name: ")
students.append(student)
counter += 1
print(students)
for name in students:
print(name)
اینجا:
students = []
لیست خالی است.
بعد:
student = input(...)
نام را داخل یک متغیر موقت میگیریم.
و:
students.append(student)
نام را به لیست اضافه میکنیم.
در نهایت 10 نفر داریم.
===================
🛑 7️⃣
breakbreak یعنی:کلاً از حلقه خارج شو.
مثلاً همان برنامه دانشآموزها را در نظر بگیر.
فرض کن میگوییم اگر کاربر
0 وارد کرد، دیگر اسم بیشتری نگیریم:students = []
while True:
student = input("Enter name: ")
if student == "0":
break
students.append(student)
print(students)
حالا اگر کاربر وارد کند:
Ali
Reza
Mohammad
0
وقتی
0 وارد شود:if student == "0":
break
اجرا میشود و کل حلقه تمام میشود.
نتیجه:
['Ali', 'Reza', 'Mohammad']
خود
0 هم وارد لیست نمیشود.🧠 حفظ کن:
break
↓
خروج کامل از حلقه 🛑
===================
🔄 8️⃣
continuecontinue با break فرق دارد.continue میگوید:این تکرار را رها کن و برو سراغ تکرار بعدی.
مثلاً:
students = []
while len(students) < 5:
student = input("Enter name: ")
if student == "0":
continue
students.append(student)
print(students)
فرض کنیم:
Ali
0
Reza
Mohammad
...
وقتی
0 وارد شود:continue
اجرا میشود.
یعنی:
این ورودی را بیخیال شو و دوباره برو اول حلقه.
پس
0 به لیست اضافه نمیشود، ولی حلقه تمام هم نمیشود.تفاوت اصلی:
break
↓
کل حلقه تمام میشود 🛑
ولی:
continue
↓
فقط این دور از حلقه رد میشود
↓
دور بعدی 🔄
===========
9️⃣ مثال خیلی ساده برای تفاوت
break و continuebreakfor i in range(5):
if i == 3:
break
print(i)
خروجی:
0
1
2
وقتی به
3 رسید، کل حلقه تمام شد.—————-
continuefor i in range(5):
if i == 3:
continue
print(i)
خروجی:
0
1
2
4
وقتی به
3 رسید:فقط چاپ 3 را رد کرد و رفت سراغ 4
=====================
🟡 10️⃣
passpass یعنی:فعلاً هیچ کاری انجام نده.
مثلاً:
for i in range(5):
if i == 3:
pass
print(i)
خروجی:
0
1
2
3
4
pass حلقه را متوقف نمیکند.حتی تکرار را هم رد نمیکند.
فقط یک دستور خالی است.
pass
کجا کاربرد دارد؟
گاهی هنوز نمیدانیم قرار است داخل یک شرط یا تابع چه کدی بنویسیم.
مثلاً:
if score > 90:
pass
else:
print("Try again")
یعنی:
اگر نمره بیشتر از 90 شد، فعلاً هیچ کاری نکن.
بعداً میتوانیم کد واقعی را جای pass بگذاریم.
My folder vip
🐍 فصل هفتم — پایتون مقدماتی — Control Flow Loops —————————————- Loop یعنی حلقه؛ یعنی یک قسمت از برنامه را چندین بار اجرا کنیم. مثلاً به جای اینکه 5 بار بنویسیم: print("Hello") print("Hello") print("Hello") print("Hello") print("Hello") میتوانیم از حلقه استفاده…
🔐 یک مثال امنیتی
فرض کن میخواهیم IPها را بررسی کنیم:
خروجی:
IP دوم را Skip کردیم.
اگر به جای
به محض رسیدن به IP دوم، کل اسکن متوقف میشد.
این منطق در اسکریپتهای شبکه و امنیت خیلی کاربردی است. 🔥
فرض کن میخواهیم IPها را بررسی کنیم:
ips = [
"192.168.1.10",
"192.168.1.20",
"192.168.1.30"
]
for ip in ips:
if ip == "192.168.1.20":
continue
print(f"Scanning {ip}")
خروجی:
Scanning 192.168.1.10
Scanning 192.168.1.30
IP دوم را Skip کردیم.
اگر به جای
continue مینوشتیم:break
به محض رسیدن به IP دوم، کل اسکن متوقف میشد.
این منطق در اسکریپتهای شبکه و امنیت خیلی کاربردی است. 🔥
👍1
🐍 فصل هشتم — پایتون مقدماتی —Functions
—————————————-
1️⃣ Function چیست؟
Function یا تابع یک بخش از کد است که یک کار مشخص انجام میدهد و میتوانیم هر وقت خواستیم آن را صدا بزنیم.
مثلاً:
خروجی:
یعنی به جای اینکه این 4 خط را هر بار تکرار کنیم، یک بار داخل تابع مینویسیم و هر چند بار خواستیم:
صدا میزنیم.
🧠 مفهوم اصلی
———————-
2️⃣ ساختار Function
ساختار کلی:
مثلاً:
⚠️ صرفاً تعریف تابع باعث اجرای آن نمیشود.
برای اجرا باید آن را Call کنیم:
——————————
3️⃣ تابع با Parameter
میتوانیم اطلاعاتی را به تابع بدهیم.
مثلاً:
اینجا:
یعنی
اگر:
باشد،
———————————
4️⃣
این قسمت خیلی مهم است. 🔥
مثلاً:
حالا:
خروجی:
اینجا اتفاقی که افتاده:
پس:
یعنی نتیجهای که تابع
————————
⚠️ تفاوت
این دو را خیلی خوب یاد بگیر.
فقط نتیجه را نمایش میدهد:
اینجا
عملاً:
———————
نتیجه را برمیگرداند:
اینجا:
🧠 حفظی:
——————————-
5️⃣
مثلاً:
خروجی:
چون بعد از
——————————
6️⃣
حالا میرسیم به کدی که نوشتی:
اینجا
مثلاً:
نتیجه:
یا:
نتیجه:
—————————-
مثلاً:
تقریباً میتوانیم تصور کنیم:
یعنی
بعد:
یکییکی اعداد را جمع میکند.
———————-
7️⃣ مثال کاربردی
فرض کن میخواهیم مجموع چند نمره را حساب کنیم:
خروجی:
—————————
🧵 بخش دوم — String Methods
حالا میرسیم به متدهای مهم String.
فرض کنیم:
8️⃣
همه حروف را کوچک میکند:
مثلاً:
تبدیل میشود به:
9️⃣
همه حروف را بزرگ میکند:
🔟 دسترسی به کاراکتر
اولین کاراکتر را میدهد.
⚠️ Index از 0 شروع میشود.
مثلاً:
پس:
1️⃣1️⃣
بررسی میکند رشته با چه چیزی شروع میشود:
اگر شروع شود:
اگر شروع نشود:
1️⃣2️⃣
بررسی میکند رشته با چه چیزی تمام میشود:
1️⃣3️⃣
موقعیت یک عبارت را پیدا میکند:
خروجی:
چون
1️⃣4️⃣
مثل
اما اگر پیدا نشود:
❌ Error میدهد.
تفاوت:
این یکی را برای امتحان حتماً حفظ کن. 🔥
1️⃣5️⃣
رشته را بر اساس یک جداکننده تقسیم میکند.
مثلاً:
خروجی:
یعنی هر جا
1️⃣6️⃣
برای جدا کردن رشته بر اساس خطهای جدید استفاده میشود.
مثلاً:
خروجی:
—————————————-
1️⃣ Function چیست؟
Function یا تابع یک بخش از کد است که یک کار مشخص انجام میدهد و میتوانیم هر وقت خواستیم آن را صدا بزنیم.
مثلاً:
def print_1_4():
print("1")
print("2")
print("3")
print("4")
print_1_4()
خروجی:
1
2
3
4
یعنی به جای اینکه این 4 خط را هر بار تکرار کنیم، یک بار داخل تابع مینویسیم و هر چند بار خواستیم:
print_1_4()
صدا میزنیم.
🧠 مفهوم اصلی
یک بار بنویس، هر چند بار خواستی استفاده کن.
———————-
2️⃣ ساختار Function
ساختار کلی:
def function_name():
# code
مثلاً:
def hello():
print("Hello")
⚠️ صرفاً تعریف تابع باعث اجرای آن نمیشود.
برای اجرا باید آن را Call کنیم:
hello()
——————————
3️⃣ تابع با Parameter
میتوانیم اطلاعاتی را به تابع بدهیم.
مثلاً:
def plus(x):
print(x)
plus(5)
اینجا:
x → Parameter
5 → Argument
یعنی
x یک جای خالی است که هنگام اجرای تابع مقدار میگیرد.اگر:
plus(10)
باشد،
x میشود 10.———————————
4️⃣
return چیست؟این قسمت خیلی مهم است. 🔥
return یعنی:نتیجه تابع را به جایی که تابع را صدا زدهایم برگردان.
مثلاً:
def plus(x):
return x + 10
حالا:
a = plus(5)
print(a)
خروجی:
15
اینجا اتفاقی که افتاده:
plus(5)
↓
5 + 10
↓
15
↓
a
پس:
a = plus(5)
یعنی نتیجهای که تابع
return کرده داخل a ذخیره میشود.————————
⚠️ تفاوت
print و returnاین دو را خیلی خوب یاد بگیر.
printفقط نتیجه را نمایش میدهد:
def plus(x):
print(x + 10)
a = plus(5)
اینجا
15 چاپ میشود، اما تابع چیزی برای ذخیره کردن در a برنمیگرداند.عملاً:
a = None
———————
returnنتیجه را برمیگرداند:
def plus(x):
return x + 10
a = plus(5)
print(a)
اینجا:
a = 15
🧠 حفظی:
print → نمایش بده 🖥
return → نتیجه را برگردان ↩️
——————————-
5️⃣
return اجرای تابع را تمام میکندمثلاً:
def test():
print("A")
return
print("B")
خروجی:
A
چون بعد از
return دیگر ادامه تابع اجرا نمیشود.——————————
6️⃣
*argsحالا میرسیم به کدی که نوشتی:
def sum_all(*args):
total = 0
for num in args:
total += num
return total
اینجا
*args یعنی:تابع میتواند هر تعداد آرگومان دریافت کند.
مثلاً:
print(sum_all(1, 2, 3))
نتیجه:
6
یا:
print(sum_all(10, 20, 30, 40, 50))
نتیجه:
150
—————————-
*args داخل تابع چه شکلی است؟مثلاً:
sum_all(10, 20, 30)
تقریباً میتوانیم تصور کنیم:
args = (10, 20, 30)
یعنی
args به شکل یک Tuple در اختیار تابع قرار میگیرد.بعد:
for num in args:
total += num
یکییکی اعداد را جمع میکند.
———————-
7️⃣ مثال کاربردی
فرض کن میخواهیم مجموع چند نمره را حساب کنیم:
def sum_scores(*scores):
total = 0
for score in scores:
total += score
return total
result = sum_scores(18, 19, 15, 20)
print(result)
خروجی:
72
—————————
🧵 بخش دوم — String Methods
حالا میرسیم به متدهای مهم String.
فرض کنیم:
name = "python programming"
8️⃣
lower()همه حروف را کوچک میکند:
print(name.lower())
مثلاً:
PYTHON
تبدیل میشود به:
python
9️⃣
upper()همه حروف را بزرگ میکند:
print(name.upper())
🔟 دسترسی به کاراکتر
print(name[0])
اولین کاراکتر را میدهد.
⚠️ Index از 0 شروع میشود.
مثلاً:
python
012345
پس:
name[0] # p
name[1] # y
name[2] # t
1️⃣1️⃣
startswith()بررسی میکند رشته با چه چیزی شروع میشود:
print(name.startswith("py"))اگر شروع شود:
True
اگر شروع نشود:
False
1️⃣2️⃣
endswith()بررسی میکند رشته با چه چیزی تمام میشود:
print(name.endswith("ing"))1️⃣3️⃣
find()موقعیت یک عبارت را پیدا میکند:
name = "python programming"
print(name.find("py"))
خروجی:
0
چون
py از Index صفر شروع شده.1️⃣4️⃣
index()مثل
find() موقعیت عبارت را پیدا میکند:print(name.index("py"))اما اگر پیدا نشود:
name.index("xyz")❌ Error میدهد.
تفاوت:
find()
↓
پیدا نشد → -1
index()
↓
پیدا نشد → Error
این یکی را برای امتحان حتماً حفظ کن. 🔥
1️⃣5️⃣
split()رشته را بر اساس یک جداکننده تقسیم میکند.
مثلاً:
name = "ali,reza,mohammad"
print(name.split(","))
خروجی:
['ali', 'reza', 'mohammad']
یعنی هر جا
, دید، رشته را جدا کن.1️⃣6️⃣
splitlines()برای جدا کردن رشته بر اساس خطهای جدید استفاده میشود.
مثلاً:
text = "Ali\nReza\nMohammad"
print(text.splitlines())
خروجی:
['Ali', 'Reza', 'Mohammad']
1️⃣7️⃣
فاصلههای ابتدا و انتهای رشته را حذف میکند.
نتیجه:
میتوانیم کاراکتر مشخص هم بدهیم:
نتیجه:
strip()فاصلههای ابتدا و انتهای رشته را حذف میکند.
name = " ali "
print(name.strip())
نتیجه:
ali
میتوانیم کاراکتر مشخص هم بدهیم:
text = ",,,ali,,,"
print(text.strip(","))
نتیجه:
ali
1️⃣8️⃣
فقط از سمت راست حذف میکند.
نتیجه:
1️⃣9️⃣
حروف بزرگ را کوچک و حروف کوچک را بزرگ میکند:
نتیجه:
⚠️
یعنی:
2️⃣0️⃣
برای جایگزین کردن یک بخش از رشته:
خروجی:
مثلاً:
خروجی:
rstrip()فقط از سمت راست حذف میکند.
text = "ali,,,"
print(text.rstrip(","))
نتیجه:
ali
1️⃣9️⃣
swapcase()حروف بزرگ را کوچک و حروف کوچک را بزرگ میکند:
text = "Ali PYTHON"
print(text.swapcase())
نتیجه:
aLI python
⚠️
swapcase() معمولاً آرگومان نمیگیرد.یعنی:
text.swapcase()
2️⃣0️⃣
replace()برای جایگزین کردن یک بخش از رشته:
name = "ali"
print(name.replace("a", "A"))
خروجی:
Ali
مثلاً:
text = "I like Python"
print(text.replace("Python", "Linux"))
خروجی:
I like Linux
My folder vip
1️⃣8️⃣ rstrip() فقط از سمت راست حذف میکند. text = "ali,,," print(text.rstrip(",")) نتیجه: ali 1️⃣9️⃣ swapcase() حروف بزرگ را کوچک و حروف کوچک را بزرگ میکند: text = "Ali PYTHON" print(text.swapcase()) نتیجه: aLI python ⚠️ swapcase() معمولاً آرگومان نمیگیرد.…
🔐 مثال کاربردی در امنیت
فرض کن ورودی کاربر را میگیریم و میخواهیم Username را استاندارد کنیم:
اگر کاربر وارد کند:
نتیجه:
این نوع پاکسازی و استانداردسازی ورودیها در برنامههای واقعی خیلی کاربردی است.
فرض کن ورودی کاربر را میگیریم و میخواهیم Username را استاندارد کنیم:
username = input("Enter username: ")
username = username.strip().lower()
print(username)اگر کاربر وارد کند:
ALI
نتیجه:
ali
این نوع پاکسازی و استانداردسازی ورودیها در برنامههای واقعی خیلی کاربردی است.
🐍 فصل نهم — پایتون مقدماتی varuable scope
—————————————-
1️⃣ Variable Scope چیست؟
در پایتون متغیرها میتوانند محدودههای مختلفی داشته باشند؛ مثلاً:
————————
2️⃣ Local Variable — متغیر محلی
متغیری که داخل یک تابع تعریف میشود، بهصورت پیشفرض Local است.
مثلاً:
خروجی:
اینجا متغیر
اگر بیرون تابع به آن دسترسی پیدا کنیم:
❌ خطا میگیریم:
چون
نکته: متغیر Local معمولاً فقط در محدوده تابعی که داخل آن تعریف شده، قابل دسترسی است.
————————
3️⃣ Global Variable — متغیر سراسری
متغیری که خارج از توابع تعریف میشود، در سطح ماژول Global است.
مثلاً:
خروجی:
چون تابع میتواند متغیر Global را بخواند.
اما اگر بخواهیم مقدار Global را داخل تابع تغییر دهیم چه؟
اینجا از کلمه کلیدی
خروجی:
با
پس مقدار متغیر اصلی تغییر میکند.
⚠️ دقت کن: اگر فقط بخواهیم مقدار Global را بخوانیم، معمولاً نیازی به
————————-
4️⃣ Nonlocal — متغیر در تابع بیرونی
حالا میرسیم به قسمت مهم جزوهات! 🔥
فرض کن یک تابع داریم که داخل آن، تابع دیگری تعریف شده است.
خروجی:
بیایم خطبهخط بررسی کنیم:
ابتدا تابع
بعد تابع
داخل آن داریم:
یعنی:
سپس:
در هر بار فراخوانی، مقدار
پس:
فراخوانی
مقدار count
بار اول
1
بار دوم
2
بار سوم
3
اگر
اگر داخل
پایتون خطای
بنابراین برای تغییر متغیر تابع بیرونی از
———————-
5️⃣ تفاوت Global و Nonlocal
این قسمت امتحانیه! 🎯
کلمه کلیدی
کاربرد
تغییر متغیر در سطح ماژول
تغییر متغیر در تابع بیرونیِ نزدیکتر
بدون این کلمات
انتساب به نام متغیر داخل تابع معمولاً آن را Local میکند
مثال ساده:
خروجی:
چرا؟
———————
—————————————-
1️⃣ Variable Scope چیست؟
Scope یعنی محدودهای از برنامه که در آن میتوانیم به یک متغیر دسترسی داشته باشیم.در پایتون متغیرها میتوانند محدودههای مختلفی داشته باشند؛ مثلاً:
Local → متغیر محلی داخل تابعGlobal → متغیر سراسری در سطح ماژولNonlocal → متغیر مربوط به تابع بیرونی در توابع تو در تو————————
2️⃣ Local Variable — متغیر محلی
متغیری که داخل یک تابع تعریف میشود، بهصورت پیشفرض Local است.
مثلاً:
def my_func():
x = 10
print(x)
my_func()
خروجی:
10
اینجا متغیر
x داخل تابع تعریف شده و در محدوده همان تابع قابل دسترسی است.اگر بیرون تابع به آن دسترسی پیدا کنیم:
def my_func():
x = 10
my_func()
print(x)
❌ خطا میگیریم:
NameError
چون
x یک متغیر Local است و بیرون از تابع تعریف نشده.نکته: متغیر Local معمولاً فقط در محدوده تابعی که داخل آن تعریف شده، قابل دسترسی است.
————————
3️⃣ Global Variable — متغیر سراسری
متغیری که خارج از توابع تعریف میشود، در سطح ماژول Global است.
مثلاً:
x = 10
def my_func():
print(x)
my_func()
خروجی:
10
چون تابع میتواند متغیر Global را بخواند.
اما اگر بخواهیم مقدار Global را داخل تابع تغییر دهیم چه؟
اینجا از کلمه کلیدی
global استفاده میکنیم.x = 5
def my_func():
global x
x = 10
my_func()
print(x)
خروجی:
10
با
global x به پایتون میگوییم که منظورمان همان متغیر x در سطح ماژول است، نه یک متغیر محلی جدید.پس مقدار متغیر اصلی تغییر میکند.
⚠️ دقت کن: اگر فقط بخواهیم مقدار Global را بخوانیم، معمولاً نیازی به
global نداریم؛ این کلمه برای انتساب مجدد به متغیر Global استفاده میشود.————————-
4️⃣ Nonlocal — متغیر در تابع بیرونی
حالا میرسیم به قسمت مهم جزوهات! 🔥
nonlocal در توابع تو در تو (Nested Functions) کاربرد دارد.فرض کن یک تابع داریم که داخل آن، تابع دیگری تعریف شده است.
def outer():
count = 0
def inner():
nonlocal count
count += 1
print(count)
inner()
inner()
inner()
outer()
خروجی:
1
2
3
بیایم خطبهخط بررسی کنیم:
ابتدا تابع
outer() اجرا میشود:count = 0
بعد تابع
inner() تعریف میشود.داخل آن داریم:
nonlocal count
یعنی:
منظورم متغیر
countمتعلق به تابع بیرونی است؛ نمیخواهم یک متغیر محلی جدید بسازم.
سپس:
count += 1
در هر بار فراخوانی، مقدار
count یکی افزایش پیدا میکند.پس:
فراخوانی
مقدار count
بار اول
1
بار دوم
2
بار سوم
3
اگر
nonlocal را حذف کنیم چه میشود؟اگر داخل
inner() بنویسیم:def inner():
count += 1
پایتون خطای
UnboundLocalError میدهد؛ چون count را بهدلیل انتساب داخل تابع، Local در نظر میگیرد، اما قبل از مقداردهی محلی، تلاش میکنیم مقدارش را بخوانیم.بنابراین برای تغییر متغیر تابع بیرونی از
nonlocal استفاده میکنیم.———————-
5️⃣ تفاوت Global و Nonlocal
این قسمت امتحانیه! 🎯
کلمه کلیدی
کاربرد
globalتغییر متغیر در سطح ماژول
nonlocalتغییر متغیر در تابع بیرونیِ نزدیکتر
بدون این کلمات
انتساب به نام متغیر داخل تابع معمولاً آن را Local میکند
مثال ساده:
x = 10
def outer():
y = 20
def inner():
global x
nonlocal y
x = 100
y = 200
inner()
print(y)
outer()
print(x)
خروجی:
200
100
چرا؟
x با global به متغیر سطح ماژول اشاره میکند.y با nonlocal به متغیر تابع outer() اشاره میکند.———————
🐍 فصل دهم — پایتون مقدماتی Lambda Functions
—————————————-
1️⃣ اول از همه: تابع معمولی در Python
تا الان یاد گرفتیم با
خروجی:
این تابع یک عدد میگیرد و مربع آن را برمیگرداند.
اما اگر بخواهیم یک تابع خیلی کوچک و ساده بنویسیم، میتوانیم از Lambda استفاده کنیم.
———————
2️⃣ Lambda چیست؟
ساختار کلی:
مثلاً تابع بالا را با Lambda بنویسیم:
خروجی:
مقایسه تابع معمولی و Lambda
با def:
با lambda:
هر دو نتیجه یکسانی دارند.
نکته مهم امتحانی
در Lambda:
از کلمه کلیدی
میتواند چند پارامتر داشته باشد.
فقط یک عبارت (Expression) دارد.
نتیجه عبارت بهصورت خودکار برگردانده میشود؛ نیازی به
مثلاً:
خروجی:
————————
3️⃣ قبل از Lambda، تابع
تابع
مثلاً فرض کن لیستی از اعداد داریم و میخواهیم همه را دو برابر کنیم.
روش معمولی با for:
خروجی:
حالا با
خروجی:
یعنی:
در این مثال:
تقریباً یعنی:
نکته: در Python 3،
———————-
4️⃣ ترکیب
اینجا قدرت Lambda مشخص میشود! 🔥
بهجای اینکه تابع جداگانه با
میتوانیم مستقیم از Lambda استفاده کنیم:
خروجی:
این کد را چطور بخوانیم؟
یعنی:
———————-
5️⃣ تابع
حالا فرض کنیم لیستی داریم و میخواهیم فقط اعداد زوج را از آن جدا کنیم.
اینجا از
روش معمولی با for:
خروجی:
روش با
خروجی:
————————-
6️⃣ ترکیب
حالا تابع
خروجی:
این کد یعنی چه؟
یعنی:
——————————-
—————————————-
1️⃣ اول از همه: تابع معمولی در Python
تا الان یاد گرفتیم با
def تابع تعریف کنیم:def square(x):
return x * x
print(square(5))
خروجی:
25
این تابع یک عدد میگیرد و مربع آن را برمیگرداند.
اما اگر بخواهیم یک تابع خیلی کوچک و ساده بنویسیم، میتوانیم از Lambda استفاده کنیم.
———————
2️⃣ Lambda چیست؟
lambda یک روش برای ساختن تابع کوچک و بدون نام (Anonymous Function) است.ساختار کلی:
lambda parameters: expression
مثلاً تابع بالا را با Lambda بنویسیم:
square = lambda x: x * x
print(square(5))
خروجی:
25
مقایسه تابع معمولی و Lambda
با def:
def square(x):
return x * x
با lambda:
square = lambda x: x * x
هر دو نتیجه یکسانی دارند.
نکته مهم امتحانی
در Lambda:
از کلمه کلیدی
lambda استفاده میکنیم.میتواند چند پارامتر داشته باشد.
فقط یک عبارت (Expression) دارد.
نتیجه عبارت بهصورت خودکار برگردانده میشود؛ نیازی به
return نیست.مثلاً:
add = lambda a, b: a + b
print(add(10, 20))
خروجی:
30
————————
3️⃣ قبل از Lambda، تابع
map()تابع
map() برای اجرای یک تابع روی تکتک اعضای یک مجموعه قابل پیمایش (Iterable) استفاده میشود.مثلاً فرض کن لیستی از اعداد داریم و میخواهیم همه را دو برابر کنیم.
روش معمولی با for:
numbers = [1, 2, 3, 4, 5]
result = []
for num in numbers:
result.append(num * 2)
print(result)
خروجی:
[2, 4, 6, 8, 10]
حالا با
map():def double(x):
return x * 2
numbers = [1, 2, 3, 4, 5]
result = map(double, numbers)
print(list(result))
خروجی:
[2, 4, 6, 8, 10]
map() دقیقاً چه کار میکند؟map(function, iterable)
یعنی:
تابع را روی هر عضو از مجموعه اجرا کن.
در این مثال:
map(double, numbers)
تقریباً یعنی:
double(1)
double(2)
double(3)
double(4)
double(5)
نکته: در Python 3،
map() یک Iterator برمیگرداند؛ برای دیدن همه نتایج به شکل لیست، از list() استفاده میکنیم.———————-
4️⃣ ترکیب
map() با lambdaاینجا قدرت Lambda مشخص میشود! 🔥
بهجای اینکه تابع جداگانه با
def تعریف کنیم:def double(x):
return x * 2
میتوانیم مستقیم از Lambda استفاده کنیم:
numbers = [1, 2, 3, 4, 5]
result = map(lambda x: x * 2, numbers)
print(list(result))
خروجی:
[2, 4, 6, 8, 10]
این کد را چطور بخوانیم؟
map(lambda x: x * 2, numbers)
یعنی:
هر عدد از
numbersرا بگیر، در 2 ضرب کن و نتیجه را تولید کن.
———————-
5️⃣ تابع
filter()حالا فرض کنیم لیستی داریم و میخواهیم فقط اعداد زوج را از آن جدا کنیم.
اینجا از
filter() استفاده میکنیم.filter() اعضایی را نگه میدارد که نتیجه تابع شرطی برایشان True باشد.روش معمولی با for:
numbers = [1, 2, 3, 4, 5, 6]
result = []
for num in numbers:
if num % 2 == 0:
result.append(num)
print(result)
خروجی:
[2, 4, 6]
روش با
filter():def is_even(x):
return x % 2 == 0
numbers = [1, 2, 3, 4, 5, 6]
result = filter(is_even, numbers)
print(list(result))
خروجی:
[2, 4, 6]
————————-
6️⃣ ترکیب
filter() با lambdaحالا تابع
is_even() را حذف میکنیم و مستقیماً Lambda مینویسیم:numbers = [1, 2, 3, 4, 5, 6]
result = filter(lambda x: x % 2 == 0, numbers)
print(list(result))
خروجی:
[2, 4, 6]
این کد یعنی چه؟
filter(lambda x: x % 2 == 0, numbers)
یعنی:
از بین اعداد، فقط عددهایی را نگه دار که باقیمانده تقسیمشان بر 2 برابر صفر باشد.
——————————-
My folder vip
🐍 فصل دهم — پایتون مقدماتی Lambda Functions —————————————- 1️⃣ اول از همه: تابع معمولی در Python تا الان یاد گرفتیم با def تابع تعریف کنیم: def square(x): return x * x print(square(5)) خروجی: 25 این تابع یک عدد میگیرد و مربع آن را برمیگرداند. اما…
🔐 8️⃣ مثال کاربردی در شبکه و امنیت
فرض کن لیستی از پورتها داریم و میخواهیم پورتهای بالاتر از 1024 را جدا کنیم:
ports = [21, 22, 80, 443, 8080, 3306]
high_ports = filter(lambda port: port > 1024, ports)
print(list(high_ports))
خروجی:
[8080, 3306]
حالا با map() میتوانیم پورتها را به رشته تبدیل کنیم:
ports = [22, 80, 443]
result = map(lambda port: f"Port: {port}", ports)
print(list(result))
خروجی:
['Port: 22', 'Port: 80', 'Port: 443']
اینها مثالهای سادهای از پردازش دادهها در اسکریپتهای شبکه هستند.
🐍 فصل یازدهم — پایتون مقدماتی Modules
—————————————-
Modules | ماژولها و کتابخانهها
توی این فصل یاد میگیریم چطور از کدهایی که دیگران نوشتهاند استفاده کنیم و چطور کدهای خودمون رو در فایلهای جداگانه قرار بدیم تا بتونیم در پروژههای مختلف ازشون استفاده کنیم.
۱. ماژول (Module) چیست؟
ماژول در پایتون، بهطور ساده، یک فایل پایتون با پسوند
مثلاً فرض کن یک تابع برای ضرب دو عدد نوشتیم. بهجای اینکه هر بار این تابع رو در برنامههای مختلف بنویسیم، میتونیم اون رو داخل یک فایل قرار بدیم و هر جا خواستیم ازش استفاده کنیم.
مثال:
فایل
حالا در یک فایل پایتون دیگه، مثلاً
خروجی:
نکته: برای اینکه پایتون فایل
——————-
۲. کتابخانه (Library) چیست؟
کتابخانه مجموعهای از کدهای آماده است که برای انجام کارهای مشخصی در اختیار برنامهنویس قرار میگیره.
کتابخانهها میتونن شامل چندین ماژول و بخش مختلف باشن.
برای مثال، پایتون ابزارهای آماده زیادی برای کار با تاریخ، ریاضیات، فایلها و شبکه در اختیارمون قرار میده.
——————-
۳. استفاده از ماژولهای آماده با
برای استفاده از یک ماژول، از دستور
مثال اول: ماژول math
ماژول
خروجی:
توضیح:
چرا نوشتیم
چون تابع
———————
۴. کار با ماژول datetime
ماژول
مثال:
خروجی نمونه:
دقت کن که در کد جزوه،
اینجا:
——————-
۵. تغییر نام ماژول با
گاهی اسم یک ماژول طولانیه یا میخوایم در کد کوتاهتر بنویسیم.
برای این کار از
در این مثال، بهجای نوشتن
مثال دیگر:
خروجی:
—————
۶. وارد کردن یک تابع مشخص از ماژول
فرض کن فقط به تابع
میتونیم فقط همون تابع رو وارد کنیم:
خروجی:
در این حالت دیگه نیازی نیست بنویسیم:
چون تابع
وارد کردن چند تابع مشخص
—————
۷. استفاده از
این دستور همه نامهایی رو که ماژول برای وارد کردن در دسترس قرار داده، وارد فضای نام فعلی برنامه میکنه.
اما استفاده از
روشهای زیر معمولاً خواناتر هستن:
یا:
————————
۸. مثال عملی — ساخت ماژول شخصی
فرض کن میخوایم چند تابع ریاضی بسازیم و در برنامههای مختلف ازشون استفاده کنیم.
فایل اول:
فایل دوم:
حالا میتونیم کل ماژول رو وارد کنیم:
خروجی:
یا فقط تابع موردنیاز رو وارد کنیم:
خروجی:
نکته: هر دو فایل
—————————
—————————————-
Modules | ماژولها و کتابخانهها
توی این فصل یاد میگیریم چطور از کدهایی که دیگران نوشتهاند استفاده کنیم و چطور کدهای خودمون رو در فایلهای جداگانه قرار بدیم تا بتونیم در پروژههای مختلف ازشون استفاده کنیم.
۱. ماژول (Module) چیست؟
ماژول در پایتون، بهطور ساده، یک فایل پایتون با پسوند
.py است که میتونه شامل متغیر، تابع و کلاس باشه.مثلاً فرض کن یک تابع برای ضرب دو عدد نوشتیم. بهجای اینکه هر بار این تابع رو در برنامههای مختلف بنویسیم، میتونیم اون رو داخل یک فایل قرار بدیم و هر جا خواستیم ازش استفاده کنیم.
مثال:
فایل
mymath.py:def multiply(a, b):
return a * b
حالا در یک فایل پایتون دیگه، مثلاً
main.py، میتونیم از ماژول خودمون استفاده کنیم:import mymath
result1 = mymath.multiply(3, 4)
print(result1)
خروجی:
12
نکته: برای اینکه پایتون فایل
mymath.py رو پیدا کنه، معمولاً باید در مسیر قابلدسترسی برای پایتون، مثل پوشه فعلی پروژه، قرار داشته باشه.——————-
۲. کتابخانه (Library) چیست؟
کتابخانه مجموعهای از کدهای آماده است که برای انجام کارهای مشخصی در اختیار برنامهنویس قرار میگیره.
کتابخانهها میتونن شامل چندین ماژول و بخش مختلف باشن.
برای مثال، پایتون ابزارهای آماده زیادی برای کار با تاریخ، ریاضیات، فایلها و شبکه در اختیارمون قرار میده.
——————-
۳. استفاده از ماژولهای آماده با
importبرای استفاده از یک ماژول، از دستور
import استفاده میکنیم.مثال اول: ماژول math
ماژول
math توابع و مقادیر ریاضی آمادهای داره.import math
print(math.sqrt(25))
print(math.pi)
خروجی:
5.0
3.141592653589793
توضیح:
math.sqrt(25) جذر ۲۵ رو محاسبه میکنه.math.pi مقدار تقریبی عدد پی رو برمیگردونه.چرا نوشتیم
math.sqrt؟چون تابع
sqrt داخل ماژول math قرار داره.———————
۴. کار با ماژول datetime
ماژول
datetime برای کار با تاریخ و زمان استفاده میشه.مثال:
import datetime
today = datetime.date.today()
print(today)
خروجی نمونه:
2026-09-21
دقت کن که در کد جزوه،
tody() اشتباه تایپی بود و شکل صحیحش today() هست.اینجا:
datetime ماژول ماست.date برای کار با تاریخ استفاده میشه.today() تاریخ امروز رو برمیگردونه.——————-
۵. تغییر نام ماژول با
asگاهی اسم یک ماژول طولانیه یا میخوایم در کد کوتاهتر بنویسیم.
برای این کار از
as استفاده میکنیم.import datetime as dt
today = dt.date.today()
print(today)
در این مثال، بهجای نوشتن
datetime، از اسم کوتاهتر dt استفاده میکنیم.مثال دیگر:
import math as m
print(m.sqrt(36))
خروجی:
6.0
—————
۶. وارد کردن یک تابع مشخص از ماژول
فرض کن فقط به تابع
sqrt از ماژول math نیاز داریم.میتونیم فقط همون تابع رو وارد کنیم:
from math import sqrt
print(sqrt(49))
خروجی:
7.0
در این حالت دیگه نیازی نیست بنویسیم:
math.sqrt(49)
چون تابع
sqrt رو مستقیماً وارد کردیم.وارد کردن چند تابع مشخص
from math import sqrt, pi
print(sqrt(64))
print(pi)
—————
۷. استفاده از
from module import *این دستور همه نامهایی رو که ماژول برای وارد کردن در دسترس قرار داده، وارد فضای نام فعلی برنامه میکنه.
from math import *
print(sqrt(81))
print(pi)
اما استفاده از
import * معمولاً پیشنهاد نمیشه؛ چون ممکنه نام توابع یا متغیرها با هم تداخل پیدا کنه و مشخص نباشه هر تابع از کجا اومده.روشهای زیر معمولاً خواناتر هستن:
import math
یا:
from math import sqrt
————————
۸. مثال عملی — ساخت ماژول شخصی
فرض کن میخوایم چند تابع ریاضی بسازیم و در برنامههای مختلف ازشون استفاده کنیم.
فایل اول:
mymath.pydef add(a, b):
return a + b
def multiply(a, b):
return a * b
def subtract(a, b):
return a - b
فایل دوم:
main.pyحالا میتونیم کل ماژول رو وارد کنیم:
import mymath
print(mymath.add(10, 5))
print(mymath.multiply(3, 4))
خروجی:
15
12
یا فقط تابع موردنیاز رو وارد کنیم:
from mymath import add
print(add(10, 5))
خروجی:
15
نکته: هر دو فایل
mymath.py و main.py رو در یک پوشه قرار بده تا این مثال بهسادگی اجرا بشه.—————————
My folder vip
🐍 فصل یازدهم — پایتون مقدماتی Modules —————————————- Modules | ماژولها و کتابخانهها توی این فصل یاد میگیریم چطور از کدهایی که دیگران نوشتهاند استفاده کنیم و چطور کدهای خودمون رو در فایلهای جداگانه قرار بدیم تا بتونیم در پروژههای مختلف ازشون استفاده…
ارتباط ماژولها با امنیت و شبکه
ماژولها کمک میکنن کدهای امنیتی و شبکهای خودمون رو مرتب و قابل استفاده مجدد بنویسیم.
برای مثال، ماژول
خروجی:
این کد مشخص میکنه آدرس واردشده از نوع IPv4 هست.
در پروژههای بزرگتر، میتونیم توابع مربوط به اسکن شبکه، پردازش لاگها یا اعتبارسنجی IP رو در ماژولهای جداگانه قرار بدیم و در برنامه اصلی ازشون استفاده کنیم.
ماژولها کمک میکنن کدهای امنیتی و شبکهای خودمون رو مرتب و قابل استفاده مجدد بنویسیم.
برای مثال، ماژول
ipaddress در پایتون برای کار با آدرسهای IP و شبکهها استفاده میشه:import ipaddress
ip = ipaddress.ip_address("192.168.1.10")
print(ip.version)
خروجی:
4
این کد مشخص میکنه آدرس واردشده از نوع IPv4 هست.
در پروژههای بزرگتر، میتونیم توابع مربوط به اسکن شبکه، پردازش لاگها یا اعتبارسنجی IP رو در ماژولهای جداگانه قرار بدیم و در برنامه اصلی ازشون استفاده کنیم.
🐍 فصل دوازدهم — پایتون مقدماتی Work With Files
—————————————-
توی این فصل یاد میگیریم چطور با پایتون فایل بسازیم، اطلاعات داخل فایل رو بخونیم، داخلش بنویسیم و در نهایت فایل رو بهدرستی ببندیم.
مثلاً فرض کن میخوایم با پایتون یک فایل لاگ برای ثبت رویدادهای یک سرور ایجاد کنیم؛ اینجا کار با فایلها به دردمون میخوره.
————————-
۱. باز کردن فایل با
برای باز کردن یک فایل در پایتون از تابع
در این مثال:
————————
حالتهای مهم باز کردن فایل
حالت
کاربرد
خواندن فایل؛ فایل باید از قبل وجود داشته باشه
نوشتن؛ اگر فایل وجود نداشته باشه ساخته میشه، اگر وجود داشته باشه محتویات قبلی پاک میشه
اضافه کردن محتوا به انتهای فایل، بدون پاک کردن محتوای قبلی
حالت باینری؛ معمولاً همراه حالتهای دیگه استفاده میشه
ایجاد فایل جدید؛ اگر فایل از قبل وجود داشته باشه خطا میده
مثلاً:
اینجا فایل تصویری رو در حالت خواندن باینری باز میکنیم.
نکته:
———————
۲. خواندن اطلاعات فایل با
فرض کنیم فایل
برای خوندن کل محتویات فایل:
خروجی:
تابع
خواندن تعداد مشخصی از کاراکترها
خروجی:
عدد
——————————-
۳. بستن فایل با
بعد از کار با فایل، باید اون رو ببندیم:
چرا؟
چون فایل باز، منابع سیستم رو درگیر میکنه و بستن اون باعث میشه منابع آزاد بشن.
اما یک روش بهتر و حرفهایتر هم وجود داره که جلوتر میبینیم.
——————
۴. خواندن فایل خطبهخط با
روش اول: استفاده از
متد
هر بار که
روش دوم: استفاده از
متد
خروجی نمونه:
دقت کن که
روش سوم: استفاده از حلقه
برای خواندن فایل خطبهخط، میتونیم مستقیماً روی فایل حلقه بزنیم:
اینجا پایتون هر بار یک خط از فایل رو به متغیر
اصلاح نکته جزوه: این کد:
درست نیست؛ چون
———————
۵. متد
وقتی از فایل خط میخونیم، ممکنه انتهای هر خط کاراکتر
برای حذف فاصلهها و کاراکترهای خالی ابتدا و انتهای رشته از
خروجی:
نکته مهم:
نه:
حالت دوم فقط به خود متد اشاره میکنه و اون رو اجرا نمیکنه.
———————-
۶. نوشتن داخل فایل با
برای نوشتن در فایل از حالت
اگر فایل وجود نداشته باشه، ساخته میشه.
اگر از قبل وجود داشته باشه، محتویات قبلی اون پاک میشه و اطلاعات جدید نوشته میشه.
نوشتن چند خط در فایل
محتوای فایل:
_————————
۷. اضافه کردن محتوا به انتهای فایل با
فرض کن داخل فایل
در این حالت از
این دستور، متن
تفاوت مهم:
——————————
۸. روش حرفهای باز کردن فایل با
در پایتون، استفاده از
دیگه نیازی به نوشتن
مثال نوشتن با
بعد از خروج از بلوک
—————————————-
توی این فصل یاد میگیریم چطور با پایتون فایل بسازیم، اطلاعات داخل فایل رو بخونیم، داخلش بنویسیم و در نهایت فایل رو بهدرستی ببندیم.
مثلاً فرض کن میخوایم با پایتون یک فایل لاگ برای ثبت رویدادهای یک سرور ایجاد کنیم؛ اینجا کار با فایلها به دردمون میخوره.
————————-
۱. باز کردن فایل با
open()برای باز کردن یک فایل در پایتون از تابع
open() استفاده میکنیم.file = open("ali.txt", "r")در این مثال:
open() فایل رو باز میکنه.ali.txt اسم فایله."r" حالت باز کردن فایل برای خواندنه (Read).————————
حالتهای مهم باز کردن فایل
حالت
کاربرد
"r"خواندن فایل؛ فایل باید از قبل وجود داشته باشه
"w"نوشتن؛ اگر فایل وجود نداشته باشه ساخته میشه، اگر وجود داشته باشه محتویات قبلی پاک میشه
"a"اضافه کردن محتوا به انتهای فایل، بدون پاک کردن محتوای قبلی
"b"حالت باینری؛ معمولاً همراه حالتهای دیگه استفاده میشه
"x"ایجاد فایل جدید؛ اگر فایل از قبل وجود داشته باشه خطا میده
مثلاً:
file = open("image.jpg", "rb")اینجا فایل تصویری رو در حالت خواندن باینری باز میکنیم.
نکته:
"b" بهتنهایی معمولاً حالت کاملی برای باز کردن فایل نیست؛ معمولاً با "r" یا "w" ترکیب میشه، مثل "rb" و "wb".———————
۲. خواندن اطلاعات فایل با
read()فرض کنیم فایل
ali.txt این محتوا رو داره:Hello Ali
Welcome to Python
برای خوندن کل محتویات فایل:
file = open("ali.txt", "r")
content = file.read()
print(content)
file.close()خروجی:
Hello Ali
Welcome to Python
تابع
read() محتوای فایل رو میخونه و بهصورت رشته (str) برمیگردونه.خواندن تعداد مشخصی از کاراکترها
file = open("ali.txt", "r")
content = file.read(5)
print(content)
file.close()خروجی:
Hello
عدد
5 یعنی پنج کاراکتر اول فایل خونده بشه.——————————-
۳. بستن فایل با
close()بعد از کار با فایل، باید اون رو ببندیم:
file.close()
چرا؟
چون فایل باز، منابع سیستم رو درگیر میکنه و بستن اون باعث میشه منابع آزاد بشن.
اما یک روش بهتر و حرفهایتر هم وجود داره که جلوتر میبینیم.
——————
۴. خواندن فایل خطبهخط با
readline() و readlines()روش اول: استفاده از
readline()متد
readline() هر بار یک خط از فایل رو میخونه.file = open("ali.txt", "r")
line1 = file.readline()
line2 = file.readline()
print(line1)
print(line2)
file.close()هر بار که
readline() اجرا میشه، به خط بعدی میره.روش دوم: استفاده از
readlines()متد
readlines() تمام خطوط فایل رو میخونه و به شکل یک لیست برمیگردونه.file = open("ali.txt", "r")
lines = file.readlines()
print(lines)
file.close()خروجی نمونه:
['Hello Ali\n', 'Welcome to Python\n']
دقت کن که
\n نشاندهنده کاراکتر رفتن به خط بعدیه.روش سوم: استفاده از حلقه
for (پیشنهادی)برای خواندن فایل خطبهخط، میتونیم مستقیماً روی فایل حلقه بزنیم:
file = open("ali.txt", "r")
for line in file:
print(line.strip())
file.close()اینجا پایتون هر بار یک خط از فایل رو به متغیر
line میده.اصلاح نکته جزوه: این کد:
for line in content.readline():
درست نیست؛ چون
content معمولاً خروجی read() و یک رشته است و readline() متد فایل محسوب میشه. برای خواندن خطبهخط، از for line in file: یا file.readlines() استفاده کن.———————
۵. متد
strip() چیست؟وقتی از فایل خط میخونیم، ممکنه انتهای هر خط کاراکتر
\n وجود داشته باشه.برای حذف فاصلهها و کاراکترهای خالی ابتدا و انتهای رشته از
strip() استفاده میکنیم:text = " Hello Ali\n"
print(text.strip())
خروجی:
Hello Ali
نکته مهم:
strip() فقط وقتی اجرا بشه که با پرانتز نوشته شده باشه.line.strip()
نه:
line.strip
حالت دوم فقط به خود متد اشاره میکنه و اون رو اجرا نمیکنه.
———————-
۶. نوشتن داخل فایل با
write()برای نوشتن در فایل از حالت
"w" استفاده میکنیم.file = open("ali.txt", "w")
file.write("Hi")
file.close()اگر فایل وجود نداشته باشه، ساخته میشه.
اگر از قبل وجود داشته باشه، محتویات قبلی اون پاک میشه و اطلاعات جدید نوشته میشه.
نوشتن چند خط در فایل
file = open("ali.txt", "w")
file.write("Hello Ali\n")
file.write("Welcome to Python\n")
file.write("End")
file.close()محتوای فایل:
Hello Ali
Welcome to Python
End
\n باعث میشه متن بعدی از خط جدید شروع بشه._————————
۷. اضافه کردن محتوا به انتهای فایل با
aفرض کن داخل فایل
ali.txt از قبل اطلاعاتی داریم و نمیخوایم پاک بشن.در این حالت از
"a" (Append) استفاده میکنیم:file = open("ali.txt", "a")
file.write("\nEnd\n")
file.close()این دستور، متن
End رو به انتهای فایل اضافه میکنه.تفاوت مهم:
"w" محتویات قبلی رو پاک میکنه و از اول مینویسه."a" محتوای جدید رو به انتهای فایل اضافه میکنه.——————————
۸. روش حرفهای باز کردن فایل با
withدر پایتون، استفاده از
with open() روش پیشنهادی برای کار با فایله؛ چون بعد از پایان بلوک، فایل بهصورت خودکار بسته میشه.with open("ali.txt", "r") as file:
content = file.read()
print(content)دیگه نیازی به نوشتن
file.close() نیست.مثال نوشتن با
withwith open("ali.txt", "w") as file:
file.write("Hello Ali\n")
file.write("Python is great")بعد از خروج از بلوک
with، فایل بهصورت خودکار بسته میشه.
My folder vip
🐍 فصل دوازدهم — پایتون مقدماتی Work With Files —————————————- توی این فصل یاد میگیریم چطور با پایتون فایل بسازیم، اطلاعات داخل فایل رو بخونیم، داخلش بنویسیم و در نهایت فایل رو بهدرستی ببندیم. مثلاً فرض کن میخوایم با پایتون یک فایل لاگ برای ثبت رویدادهای…
۹. مثال کاربردی امنیتی — ثبت لاگ
فرض کن میخوایم نتیجه یک بررسی امنیتی رو داخل فایل ثبت کنیم.
هر بار که این کد اجرا بشه، پیام جدید به انتهای فایل
این روش میتونه برای ذخیره رویدادهای برنامه، خطاها یا نتایج بررسیهای امنیتی استفاده بشه.
فرض کن میخوایم نتیجه یک بررسی امنیتی رو داخل فایل ثبت کنیم.
with open("security.log", "a") as file:
file.write("Login attempt detected\n")هر بار که این کد اجرا بشه، پیام جدید به انتهای فایل
security.log اضافه میشه.این روش میتونه برای ذخیره رویدادهای برنامه، خطاها یا نتایج بررسیهای امنیتی استفاده بشه.