“`html
تمام بخشهای ضروری پایتون در یک چیت شیت
پایتون، زبانی قدرتمند و همهکاره، در طیف گستردهای از حوزهها از توسعه وب و علم داده گرفته تا اسکریپتنویسی و اتوماسیون مورد استفاده قرار میگیرد. یادگیری پایتون میتواند درهای جدیدی را به فرصتهای شغلی و پروژههای هیجانانگیز باز کند. این چیتشیت جامع به عنوان یک راهنمای سریع و مرجع برای توسعهدهندگان پایتون در تمام سطوح، از مبتدی تا حرفهای، طراحی شده است. در این مقاله، به بررسی مفاهیم کلیدی، توابع پرکاربرد، ماژولهای مهم و نکات پیشرفته پایتون میپردازیم.
1. مفاهیم پایه پایتون
در این بخش، به بررسی مفاهیم اساسی پایتون که زیربنای تمام برنامهنویسیها را تشکیل میدهند، میپردازیم.
1.1. متغیرها و انواع داده
متغیرها نامهایی هستند که به مقادیر در حافظه اختصاص داده میشوند. پایتون یک زبان weakly typed است، به این معنی که نیازی به تعیین نوع متغیر به صورت صریح نیست. پایتون به طور خودکار نوع متغیر را بر اساس مقدار اختصاص داده شده تعیین میکند.
برخی از انواع دادههای اصلی در پایتون عبارتند از:
- اعداد صحیح (Integers): اعداد صحیح مثبت و منفی بدون اعشار (مانند: 10، -5، 0).
- اعداد اعشاری (Floats): اعداد با اعشار (مانند: 3.14، -2.5، 0.0).
- رشتهها (Strings): دنبالهای از کاراکترها (مانند: “Hello”، “Python”). رشتهها در پایتون immutable هستند، به این معنی که نمیتوان آنها را پس از ایجاد تغییر داد.
- بولی (Booleans): مقادیر True (درست) یا False (غلط).
- لیستها (Lists): مجموعهای مرتب و قابل تغییر از آیتمها (مانند: [1, 2, “apple”, True]). لیستها با استفاده از براکت ([]) تعریف میشوند.
- تاپلها (Tuples): مجموعهای مرتب و غیرقابل تغییر از آیتمها (مانند: (1, 2, “apple”, True)). تاپلها با استفاده از پرانتز (()) تعریف میشوند.
- دیکشنریها (Dictionaries): مجموعهای از جفتهای کلید-مقدار (مانند: {“name”: “Alice”, “age”: 30}). دیکشنریها با استفاده از آکولاد ({}) تعریف میشوند.
- مجموعهها (Sets): مجموعهای نامرتب و بدون تکرار از آیتمها (مانند: {1, 2, 3}). مجموعهها با استفاده از آکولاد ({}) تعریف میشوند.
مثال:
age = 30 # integer
price = 99.99 # float
name = "Alice" # string
is_student = True # boolean
my_list = [1, 2, 3] # list
my_tuple = (4, 5, 6) # tuple
my_dict = {"city": "New York", "country": "USA"} # dictionary
my_set = {7, 8, 9} # set
1.2. عملگرها
عملگرها نمادهایی هستند که برای انجام عملیات بر روی مقادیر استفاده میشوند. برخی از عملگرهای رایج در پایتون عبارتند از:
- عملگرهای حسابی: + (جمع)، – (تفریق)، * (ضرب)، / (تقسیم)، // (تقسیم صحیح)، % (باقیمانده)، ** (توان).
- عملگرهای مقایسهای: == (برابر)، != (نابرابر)، > (بزرگتر از)، < (کوچکتر از)، >= (بزرگتر یا مساوی)، <= (کوچکتر یا مساوی).
- عملگرهای منطقی: and (و)، or (یا)، not (نقیض).
- عملگرهای انتسابی: = (انتساب)، += (جمع و انتساب)، -= (تفریق و انتساب)، *= (ضرب و انتساب)، /= (تقسیم و انتساب).
- عملگرهای عضویت: in (عضویت دارد)، not in (عضویت ندارد).
- عملگرهای هویت: is (همان است)، is not (همان نیست).
مثال:
x = 10
y = 5
print(x + y) # Output: 15
print(x > y) # Output: True
print(x == y) # Output: False
print(not (x < y)) # Output: True
1.3. ساختارهای کنترلی
ساختارهای کنترلی به شما امکان میدهند جریان اجرای برنامه را کنترل کنید. مهمترین ساختارهای کنترلی در پایتون عبارتند از:
- دستور if: برای اجرای یک بلوک کد در صورتی که یک شرط خاص برقرار باشد.
- دستور elif: برای بررسی چندین شرط به صورت متوالی.
- دستور else: برای اجرای یک بلوک کد در صورتی که هیچ کدام از شرطهای if و elif برقرار نباشند.
- حلقه for: برای تکرار یک بلوک کد برای هر آیتم در یک دنباله (مانند لیست، تاپل، رشته).
- حلقه while: برای تکرار یک بلوک کد تا زمانی که یک شرط خاص برقرار باشد.
- دستور break: برای خروج از یک حلقه.
- دستور continue: برای پرش از ادامه اجرای یک تکرار در حلقه و رفتن به تکرار بعدی.
- دستور pass: برای ایجاد یک بلوک کد خالی.
مثال:
age = 20
if age >= 18:
print("You are an adult.")
else:
print("You are a minor.")
numbers = [1, 2, 3, 4, 5]
for number in numbers:
print(number)
i = 0
while i < 5:
print(i)
i += 1
2. توابع در پایتون
توابع بلوکهای کد قابل استفاده مجدد هستند که یک وظیفه خاص را انجام میدهند. استفاده از توابع به سازماندهی کد، افزایش خوانایی و کاهش تکرار کد کمک میکند.
2.1. تعریف توابع
توابع با استفاده از کلمه کلیدی `def` تعریف میشوند. تعریف تابع شامل نام تابع، پارامترهای ورودی (اختیاری) و بدنه تابع است.
سینتکس:
def function_name(parameter1, parameter2, ...):
# function body
return value # optional
مثال:
def add(x, y):
"""This function adds two numbers."""
return x + y
result = add(5, 3)
print(result) # Output: 8
2.2. پارامترها و آرگومانها
پارامترها متغیرهایی هستند که در تعریف تابع مشخص میشوند و مقادیری را که تابع در هنگام فراخوانی دریافت میکند، نشان میدهند. آرگومانها مقادیر واقعی هستند که در هنگام فراخوانی تابع به پارامترها ارسال میشوند.
انواع پارامترها:
- پارامترهای موقعیتی: آرگومانها بر اساس ترتیب پارامترها به آنها اختصاص داده میشوند.
- پارامترهای کلیدواژهای: آرگومانها با استفاده از نام پارامتر به آنها اختصاص داده میشوند.
- پارامترهای پیشفرض: پارامترها میتوانند مقادیر پیشفرض داشته باشند که در صورت عدم ارائه آرگومان برای آن پارامتر، استفاده میشوند.
- پارامترهای *args: برای ارسال تعداد متغیری از آرگومانهای موقعیتی به تابع استفاده میشود. آرگومانها به صورت یک تاپل در تابع دریافت میشوند.
- پارامترهای **kwargs: برای ارسال تعداد متغیری از آرگومانهای کلیدواژهای به تابع استفاده میشود. آرگومانها به صورت یک دیکشنری در تابع دریافت میشوند.
مثال:
def greet(name, greeting="Hello"):
"""This function greets a person."""
print(f"{greeting}, {name}!")
greet("Alice") # Output: Hello, Alice!
greet("Bob", "Hi") # Output: Hi, Bob!
def sum_all(*args):
"""This function sums all the numbers passed as arguments."""
total = 0
for number in args:
total += number
return total
print(sum_all(1, 2, 3, 4, 5)) # Output: 15
def print_info(**kwargs):
"""This function prints information about a person."""
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Charlie", age=40, city="London")
# Output:
# name: Charlie
# age: 40
# city: London
2.3. توابع بازگشتی
توابع بازگشتی توابعی هستند که خودشان را فراخوانی میکنند. توابع بازگشتی باید یک شرط توقف داشته باشند تا از ایجاد یک حلقه بینهایت جلوگیری شود.
مثال:
def factorial(n):
"""This function calculates the factorial of a number."""
if n == 0:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # Output: 120
3. کلاسها و اشیاء در پایتون
پایتون یک زبان برنامهنویسی شیءگرا است. کلاسها قالبهایی برای ایجاد اشیاء هستند. اشیاء نمونههایی از کلاسها هستند که دارای ویژگیها (attributes) و رفتارها (methods) هستند.
3.1. تعریف کلاسها
کلاسها با استفاده از کلمه کلیدی `class` تعریف میشوند. تعریف کلاس شامل نام کلاس، ویژگیها و متدها است.
سینتکس:
class ClassName:
def __init__(self, parameter1, parameter2, ...):
# initialize attributes
self.attribute1 = parameter1
self.attribute2 = parameter2
...
def method_name(self, parameter1, parameter2, ...):
# method body
مثال:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
print("Woof!")
my_dog = Dog("Buddy", "Golden Retriever")
print(my_dog.name) # Output: Buddy
my_dog.bark() # Output: Woof!
3.2. وراثت
وراثت به یک کلاس اجازه میدهد تا ویژگیها و متدهای کلاس دیگری را به ارث ببرد. کلاسی که به ارث میبرد، کلاس فرزند (child class) نامیده میشود و کلاسی که به ارث داده میشود، کلاس والد (parent class) نامیده میشود.
مثال:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print("Generic animal sound")
class Cat(Animal):
def speak(self):
print("Meow!")
my_cat = Cat("Whiskers")
print(my_cat.name) # Output: Whiskers
my_cat.speak() # Output: Meow!
3.3. چندریختی
چندریختی به توانایی اشیاء از کلاسهای مختلف برای پاسخ دادن به یک متد یکسان به روشهای مختلف اشاره دارد.
مثال:
class Dog:
def speak(self):
print("Woof!")
class Cat:
def speak(self):
print("Meow!")
def animal_sound(animal):
animal.speak()
my_dog = Dog()
my_cat = Cat()
animal_sound(my_dog) # Output: Woof!
animal_sound(my_cat) # Output: Meow!
4. مدیریت خطاها
مدیریت خطاها برای جلوگیری از کرش کردن برنامه در هنگام بروز خطا و ارائه پیامهای خطای مناسب به کاربر ضروری است.
4.1. بلوکهای try-except
بلوکهای `try-except` برای مدیریت استثناها (exceptions) استفاده میشوند. کدی که ممکن است خطا ایجاد کند در بلوک `try` قرار میگیرد. اگر خطایی رخ دهد، اجرای بلوک `try` متوقف میشود و بلوک `except` متناظر با نوع خطا اجرا میشود.
سینتکس:
try:
# code that might raise an exception
except ExceptionType1:
# handle ExceptionType1
except ExceptionType2:
# handle ExceptionType2
else:
# code to execute if no exception occurred
finally:
# code that always executes
مثال:
try:
result = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero.")
except Exception as e:
print(f"An error occurred: {e}")
else:
print(f"Result: {result}")
finally:
print("This will always execute.")
4.2. انواع استثناها
پایتون دارای انواع مختلفی از استثناها است، از جمله:
- ZeroDivisionError: زمانی رخ میدهد که سعی شود عددی بر صفر تقسیم شود.
- TypeError: زمانی رخ میدهد که یک عملیات یا تابع روی نوع داده نادرستی انجام شود.
- ValueError: زمانی رخ میدهد که یک تابع یک آرگومان از نوع صحیح دریافت کند، اما مقدار آن آرگومان نامعتبر باشد.
- IndexError: زمانی رخ میدهد که سعی شود به یک اندیس خارج از محدوده یک لیست یا تاپل دسترسی پیدا شود.
- KeyError: زمانی رخ میدهد که سعی شود به یک کلید غیر موجود در یک دیکشنری دسترسی پیدا شود.
- FileNotFoundError: زمانی رخ میدهد که سعی شود فایلی باز شود که وجود ندارد.
- ImportError: زمانی رخ میدهد که یک ماژول نتواند import شود.
4.3. raise کردن استثناها
شما میتوانید با استفاده از کلمه کلیدی `raise` به صورت دستی یک استثنا ایجاد کنید. این کار میتواند برای نشان دادن یک خطا در کد شما یا برای ارسال یک پیام خطا به کاربر مفید باشد.
مثال:
def check_age(age):
if age < 0:
raise ValueError("Age cannot be negative.")
else:
print("Age is valid.")
try:
check_age(-5)
except ValueError as e:
print(e) # Output: Age cannot be negative.
5. کار با فایلها
پایتون امکان خواندن و نوشتن فایلها را فراهم میکند. این امکان برای ذخیره و بازیابی دادهها، خواندن فایلهای پیکربندی و انجام عملیات دیگر مفید است.
5.1. باز کردن فایلها
برای باز کردن یک فایل، از تابع `open()` استفاده کنید. تابع `open()` دو آرگومان اصلی دریافت میکند: نام فایل و حالت (mode) باز کردن فایل.
حالتهای باز کردن فایل:
- 'r': خواندن (فایل باید وجود داشته باشد).
- 'w': نوشتن (اگر فایل وجود داشته باشد، محتویات آن حذف میشود. اگر فایل وجود نداشته باشد، ایجاد میشود).
- 'a': افزودن (اگر فایل وجود داشته باشد، دادهها به انتهای آن اضافه میشوند. اگر فایل وجود نداشته باشد، ایجاد میشود).
- 'x': ایجاد (فایل باید وجود نداشته باشد. در غیر این صورت، یک خطا رخ میدهد).
- 'b': باینری (برای خواندن و نوشتن فایلهای باینری).
- 't': متنی (برای خواندن و نوشتن فایلهای متنی - حالت پیشفرض).
- '+': باز کردن فایل برای بهروزرسانی (خواندن و نوشتن).
مثال:
file = open("my_file.txt", "r")
5.2. خواندن فایلها
برای خواندن محتویات یک فایل، میتوانید از متدهای مختلفی استفاده کنید:
- read(): خواندن تمام محتویات فایل به صورت یک رشته.
- readline(): خواندن یک خط از فایل.
- readlines(): خواندن تمام خطوط فایل به صورت یک لیست.
مثال:
file = open("my_file.txt", "r")
content = file.read()
print(content)
file = open("my_file.txt", "r")
line = file.readline()
print(line)
file = open("my_file.txt", "r")
lines = file.readlines()
for line in lines:
print(line)
5.3. نوشتن در فایلها
برای نوشتن در یک فایل، میتوانید از متد `write()` استفاده کنید.
مثال:
file = open("my_file.txt", "w")
file.write("Hello, world!\n")
file.write("This is a new line.")
file.close()
5.4. بستن فایلها
پس از اتمام کار با یک فایل، باید آن را با استفاده از متد `close()` ببندید. بستن فایل، منابع سیستم را آزاد میکند و از خراب شدن دادهها جلوگیری میکند.
مثال:
file = open("my_file.txt", "r")
# ...
file.close()
5.5. استفاده از دستور with
دستور `with` یک راه آسانتر و ایمنتر برای کار با فایلها فراهم میکند. با استفاده از دستور `with`، فایل به طور خودکار پس از اتمام کار با آن بسته میشود.
مثال:
with open("my_file.txt", "r") as file:
content = file.read()
print(content)
# File is automatically closed after the 'with' block
6. ماژولهای پایتون
ماژولها فایلهایی هستند که شامل کد پایتون هستند. ماژولها میتوانند شامل توابع، کلاسها، متغیرها و سایر اشیاء پایتون باشند. استفاده از ماژولها به سازماندهی کد، افزایش خوانایی و کاهش تکرار کد کمک میکند.
6.1. import کردن ماژولها
برای استفاده از یک ماژول، باید آن را با استفاده از دستور `import` وارد کنید.
سینتکس:
import module_name
from module_name import object_name
from module_name import *
مثال:
import math
print(math.sqrt(16)) # Output: 4.0
from datetime import datetime
now = datetime.now()
print(now)
6.2. ماژولهای استاندارد
پایتون دارای یک کتابخانه استاندارد غنی است که شامل ماژولهای مختلفی برای انجام وظایف مختلف است. برخی از ماژولهای استاندارد مهم عبارتند از:
- math: توابع ریاضی.
- datetime: کار با تاریخ و زمان.
- os: کار با سیستم عامل.
- random: تولید اعداد تصادفی.
- json: کار با دادههای JSON.
- re: کار با عبارات با قاعده.
- urllib: کار با URLها.
6.3. ماژولهای شخص ثالث
علاوه بر ماژولهای استاندارد، میتوانید از ماژولهای شخص ثالث نیز استفاده کنید. ماژولهای شخص ثالث توسط توسعهدهندگان دیگر ایجاد شدهاند و برای انجام وظایف خاصی طراحی شدهاند. برای نصب ماژولهای شخص ثالث، معمولاً از ابزار `pip` استفاده میشود.
مثال:
pip install requests
7. عبارات با قاعده (Regular Expressions)
عبارات با قاعده الگوهایی هستند که برای مطابقت با متن استفاده میشوند. عبارات با قاعده میتوانند برای اعتبارسنجی دادهها، جستجو و جایگزینی متن و انجام سایر وظایف مربوط به متن استفاده شوند.
7.1. ماژول re
پایتون دارای یک ماژول به نام `re` برای کار با عبارات با قاعده است.
توابع ماژول re:
- search(): جستجو برای یک الگو در یک رشته.
- match(): بررسی اینکه آیا الگو در ابتدای رشته مطابقت دارد یا خیر.
- findall(): پیدا کردن تمام نمونههای الگو در یک رشته.
- sub(): جایگزینی الگو با یک رشته دیگر.
- split(): تقسیم یک رشته به یک لیست بر اساس الگو.
مثال:
import re
text = "The quick brown fox jumps over the lazy dog."
# Search for the word "fox"
match = re.search("fox", text)
if match:
print("Found 'fox'")
# Find all words starting with "t"
matches = re.findall(r"\bt\w+", text)
print(matches) # Output: ['The', 'the']
# Replace "dog" with "cat"
new_text = re.sub("dog", "cat", text)
print(new_text) # Output: The quick brown fox jumps over the lazy cat.
7.2. کاراکترهای خاص در عبارات با قاعده
عبارات با قاعده از کاراکترهای خاصی برای نشان دادن الگوهای مختلف استفاده میکنند:
- .: مطابقت با هر کاراکتری (به جز newline).
- ^: مطابقت با ابتدای رشته.
- $: مطابقت با انتهای رشته.
- *: مطابقت با صفر یا بیشتر تکرار از کاراکتر قبلی.
- +: مطابقت با یک یا بیشتر تکرار از کاراکتر قبلی.
- ?: مطابقت با صفر یا یک تکرار از کاراکتر قبلی.
- []: مطابقت با هر کاراکتری در مجموعه.
- [^]: مطابقت با هر کاراکتری که در مجموعه نیست.
- \: فرار از یک کاراکتر خاص.
- |: یا.
- (): گروهبندی.
مجموعههای کاراکتر:
- \d: مطابقت با یک رقم.
- \w: مطابقت با یک کاراکتر کلمهای (حروف، اعداد، زیرخط).
- \s: مطابقت با یک کاراکتر فاصله (فاصله، تب، newline).
- \D: مطابقت با هر کاراکتری که رقم نیست.
- \W: مطابقت با هر کاراکتری که کلمهای نیست.
- \S: مطابقت با هر کاراکتری که فاصله نیست.
با درک این مفاهیم اساسی و ماژولها، میتوانید شروع به استفاده از پایتون برای حل مشکلات پیچیدهتر و ساخت برنامههای قدرتمند کنید. این چیتشیت تنها یک نقطه شروع است و یادگیری پایتون یک فرآیند مداوم است. با تمرین و مطالعه بیشتر، میتوانید به یک توسعهدهنده پایتون ماهر تبدیل شوید.
```