“`html
از حلقهها تا کلاسها: چیت شیت جامع بخشهای پایتون
پایتون، زبانی قدرتمند و چند منظوره، به انتخابی محبوب برای توسعه دهندگان در سراسر جهان تبدیل شده است. این زبان، که به دلیل خوانایی و سهولت یادگیری مورد تحسین قرار میگیرد، ابزارها و مفاهیم گوناگونی را برای حل مسائل پیچیده ارائه میدهد. این چیت شیت، مروری سریع و متمرکز بر جنبههای کلیدی پایتون، از حلقهها تا کلاسها، ارائه میدهد و به عنوان یک منبع ارزشمند برای توسعه دهندگان در تمام سطوح، از مبتدی تا پیشرفته، عمل میکند.
۱. متغیرها و انواع دادهها در پایتون
در پایتون، متغیرها نامهایی هستند که به مقادیر مختلف تخصیص داده میشوند. بر خلاف بسیاری از زبانهای دیگر، پایتون نیازی به تعریف صریح نوع متغیر ندارد. نوع متغیر به طور خودکار بر اساس مقداری که به آن اختصاص داده شده تعیین میشود. این ویژگی، پایتون را به یک زبان دینامیک تبدیل میکند.
انواع دادههای اصلی
- اعداد (Numbers): شامل اعداد صحیح (int)، اعداد اعشاری (float) و اعداد مختلط (complex).
- رشتهها (Strings): دنبالهای از کاراکترها که در پایتون به صورت immutable (تغییرناپذیر) تعریف میشوند.
- لیستها (Lists): مجموعهای مرتب و قابل تغییر از عناصر که میتوانند از انواع مختلف باشند.
- تاپلها (Tuples): مجموعهای مرتب و غیرقابل تغییر از عناصر.
- دیکشنریها (Dictionaries): مجموعهای نامرتب از جفتهای کلید-مقدار که در آن کلیدها باید immutable باشند.
- مجموعهها (Sets): مجموعهای نامرتب از عناصر منحصربهفرد.
- بولیها (Booleans): مقادیر درست (True) یا نادرست (False).
نحوه تعریف و استفاده از متغیرها
برای تعریف یک متغیر، کافی است نام متغیر را نوشته و سپس مقدار مورد نظر را به آن اختصاص دهید. مثال:
age = 30
name = "John Doe"
height = 1.75
is_active = True
میتوانید نوع متغیر را با استفاده از تابع type()
بررسی کنید:
print(type(age)) # Output: <class 'int'>
print(type(name)) # Output: <class 'str'>
print(type(height)) # Output: <class 'float'>
print(type(is_active)) # Output: <class 'bool'>
تبدیل انواع دادهها
گاهی اوقات نیاز است نوع یک متغیر را به نوع دیگری تبدیل کنید. پایتون توابعی برای این کار ارائه میدهد:
int()
: تبدیل به عدد صحیح.float()
: تبدیل به عدد اعشاری.str()
: تبدیل به رشته.bool()
: تبدیل به مقدار بولی.
number = "123"
number_int = int(number) # number_int will be 123 (integer)
number_float = float(number) # number_float will be 123.0 (float)
۲. عملگرها در پایتون
عملگرها نمادهایی هستند که برای انجام عملیات مختلف بر روی متغیرها و مقادیر استفاده میشوند. پایتون انواع مختلفی از عملگرها را ارائه میدهد:
انواع عملگرها
- عملگرهای حسابی (Arithmetic Operators): برای انجام عملیات حسابی مانند جمع (+)، تفریق (-)، ضرب (*)، تقسیم (/)، باقیمانده (%), توان (**), و تقسیم صحیح (//).
- عملگرهای مقایسهای (Comparison Operators): برای مقایسه دو مقدار و تولید نتیجه بولی (True یا False). شامل مساوی (==)، نامساوی (!=)، بزرگتر (>)، کوچکتر (<)، بزرگتر یا مساوی (>=)، و کوچکتر یا مساوی (<=).
- عملگرهای منطقی (Logical Operators): برای ترکیب یا تغییر عبارات بولی. شامل and (و)، or (یا)، و not (نفی).
- عملگرهای تخصیصی (Assignment Operators): برای تخصیص مقدار به یک متغیر. شامل =، +=، -=، *=، /=، %=، **=، و //=.
- عملگرهای بیتی (Bitwise Operators): برای انجام عملیات بر روی بیتهای داده. شامل & (AND)، | (OR)، ^ (XOR)، ~ (NOT)، << (شیفت به چپ)، و >> (شیفت به راست).
- عملگرهای عضویت (Membership Operators): برای بررسی وجود یک مقدار در یک دنباله. شامل in (وجود دارد) و not in (وجود ندارد).
- عملگرهای هویت (Identity Operators): برای بررسی اینکه آیا دو متغیر به یک شیء در حافظه اشاره میکنند. شامل is (هست) و is not (نیست).
مثالهایی از استفاده از عملگرها
x = 10
y = 5
# Arithmetic Operators
print(x + y) # Output: 15
print(x - y) # Output: 5
print(x * y) # Output: 50
print(x / y) # Output: 2.0
print(x % y) # Output: 0
print(x ** y) # Output: 100000
print(x // y) # Output: 2
# Comparison Operators
print(x == y) # Output: False
print(x != y) # Output: True
print(x > y) # Output: True
print(x < y) # Output: False
print(x >= y) # Output: True
print(x <= y) # Output: False
# Logical Operators
a = True
b = False
print(a and b) # Output: False
print(a or b) # Output: True
print(not a) # Output: False
# Assignment Operators
x += y # x = x + y (x becomes 15)
print(x) # Output: 15
# Membership Operators
list1 = [1, 2, 3, 4, 5]
print(3 in list1) # Output: True
print(6 not in list1) # Output: True
# Identity Operators
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b) # Output: True (a and b point to the same object)
print(a is c) # Output: False (a and c are different objects, even if they have the same values)
۳. ساختارهای کنترلی: شرطها و حلقهها
ساختارهای کنترلی به شما اجازه میدهند جریان اجرای برنامه را کنترل کنید. این ساختارها شامل شرطها (if, elif, else) و حلقهها (for, while) میشوند.
شرطها (Conditional Statements)
شرطها به شما اجازه میدهند بر اساس یک شرط، قطعه کد خاصی را اجرا کنید.
x = 10
if x > 0:
print("x is positive")
elif x == 0:
print("x is zero")
else:
print("x is negative")
حلقهها (Loops)
حلقهها به شما اجازه میدهند یک قطعه کد را چندین بار تکرار کنید.
حلقه For
حلقه for
برای تکرار بر روی یک دنباله (مانند لیست، تاپل، رشته) استفاده میشود.
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
حلقه While
حلقه while
تا زمانی که یک شرط برقرار باشد، تکرار میشود.
i = 0
while i < 5:
print(i)
i += 1
دستورات Break و Continue
- Break: برای خروج از حلقه به طور کامل.
- Continue: برای رد کردن تکرار فعلی حلقه و رفتن به تکرار بعدی.
for i in range(10):
if i == 5:
break # Exit the loop when i is 5
print(i)
for i in range(10):
if i % 2 == 0:
continue # Skip even numbers
print(i)
۴. توابع در پایتون
توابع بلوکهای قابل استفاده مجدد از کد هستند که برای انجام وظایف خاص طراحی شدهاند. استفاده از توابع باعث سازماندهی بهتر کد، کاهش تکرار و افزایش خوانایی میشود.
تعریف تابع
برای تعریف یک تابع از کلمه کلیدی def
استفاده میشود.
def greet(name):
"""This function greets the person passed in as a parameter."""
print("Hello, " + name + ". Good morning!")
فراخوانی تابع
برای فراخوانی یک تابع، کافی است نام آن را به همراه پرانتز و آرگومانهای مورد نیاز (در صورت وجود) بنویسید.
greet("John") # Output: Hello, John. Good morning!
آرگومانهای تابع
توابع میتوانند آرگومان بگیرند که به دو دسته تقسیم میشوند:
- آرگومانهای موقعیتی (Positional Arguments): آرگومانهایی که بر اساس ترتیبشان به پارامترهای تابع اختصاص داده میشوند.
- آرگومانهای کلیدواژهای (Keyword Arguments): آرگومانهایی که با استفاده از نام پارامترها به تابع ارسال میشوند.
def describe_person(name, age, city):
print("Name:", name)
print("Age:", age)
print("City:", city)
describe_person("Alice", 30, "New York") # Positional arguments
describe_person(name="Bob", age=25, city="London") # Keyword arguments
describe_person("Charlie", city="Paris", age=35) # Mixing positional and keyword arguments
مقادیر پیشفرض برای آرگومانها
میتوانید مقادیر پیشفرض برای آرگومانها تعیین کنید. در این صورت، اگر هنگام فراخوانی تابع آرگومان مربوطه را ارائه نکنید، مقدار پیشفرض استفاده میشود.
def power(base, exponent=2):
"""This function calculates the power of a number."""
return base ** exponent
print(power(3)) # Output: 9 (3 ** 2)
print(power(3, 3)) # Output: 27 (3 ** 3)
مقادیر بازگشتی (Return Values)
توابع میتوانند مقداری را با استفاده از کلمه کلیدی return
برگردانند. اگر تابع هیچ مقداری برنگرداند، به طور ضمنی None
برگردانده میشود.
def add(x, y):
return x + y
result = add(5, 3)
print(result) # Output: 8
۵. لیستها و تاپلها
لیستها و تاپلها دو نوع داده مهم در پایتون هستند که برای ذخیره مجموعهای از عناصر استفاده میشوند.
لیستها (Lists)
لیستها مجموعهای مرتب و قابل تغییر از عناصر هستند. عناصر لیست میتوانند از انواع مختلف باشند.
تعریف لیست
my_list = [1, 2, "apple", 3.14, [4, 5]]
دسترسی به عناصر لیست
میتوانید با استفاده از اندیس (index) به عناصر لیست دسترسی پیدا کنید. اندیسها از 0 شروع میشوند.
print(my_list[0]) # Output: 1
print(my_list[2]) # Output: apple
print(my_list[-1]) # Output: [4, 5] (last element)
برش لیست (List Slicing)
میتوانید با استفاده از برش، زیرمجموعهای از لیست را استخراج کنید.
print(my_list[1:4]) # Output: [2, 'apple', 3.14]
print(my_list[:3]) # Output: [1, 2, 'apple']
print(my_list[2:]) # Output: ['apple', 3.14, [4, 5]]
تغییر عناصر لیست
لیستها قابل تغییر هستند، بنابراین میتوانید عناصر آنها را تغییر دهید.
my_list[0] = 10
print(my_list) # Output: [10, 2, 'apple', 3.14, [4, 5]]
متدهای لیست
لیستها متدهای زیادی برای انجام عملیات مختلف ارائه میدهند:
append(element)
: اضافه کردن یک عنصر به انتهای لیست.insert(index, element)
: درج یک عنصر در یک موقعیت خاص.remove(element)
: حذف اولین عنصر با مقدار مشخص.pop(index)
: حذف و برگرداندن عنصر در یک موقعیت خاص (به طور پیشفرض آخرین عنصر).index(element)
: برگرداندن اندیس اولین عنصر با مقدار مشخص.count(element)
: شمارش تعداد تکرار یک عنصر در لیست.sort()
: مرتبسازی لیست (به صورت پیشفرض از کوچک به بزرگ).reverse()
: معکوس کردن ترتیب عناصر لیست.
تاپلها (Tuples)
تاپلها مجموعهای مرتب و غیرقابل تغییر از عناصر هستند. تاپلها شبیه لیستها هستند، اما پس از تعریف، نمیتوان عناصر آنها را تغییر داد.
تعریف تاپل
my_tuple = (1, 2, "apple", 3.14)
دسترسی به عناصر تاپل
دسترسی به عناصر تاپل مشابه لیستها است.
print(my_tuple[0]) # Output: 1
برش تاپل (Tuple Slicing)
برش تاپل نیز مشابه لیستها است.
print(my_tuple[1:3]) # Output: (2, 'apple')
تفاوت لیست و تاپل
تفاوت اصلی بین لیستها و تاپلها این است که لیستها قابل تغییر هستند، در حالی که تاپلها غیرقابل تغییر هستند. این ویژگی باعث میشود تاپلها برای ذخیره دادههایی که نباید تغییر کنند، مناسب باشند. همچنین، تاپلها به دلیل غیرقابل تغییر بودن، معمولاً سریعتر از لیستها هستند.
۶. دیکشنریها (Dictionaries)
دیکشنریها مجموعهای نامرتب از جفتهای کلید-مقدار هستند. در دیکشنریها، هر کلید به یک مقدار متناظر اشاره میکند. کلیدها باید immutable (تغییرناپذیر) باشند (مانند رشتهها، اعداد و تاپلها)، در حالی که مقادیر میتوانند از هر نوعی باشند.
تعریف دیکشنری
my_dict = {
"name": "John Doe",
"age": 30,
"city": "New York"
}
دسترسی به مقادیر دیکشنری
میتوانید با استفاده از کلید مربوطه به مقادیر دیکشنری دسترسی پیدا کنید.
print(my_dict["name"]) # Output: John Doe
print(my_dict["age"]) # Output: 30
اضافه کردن و تغییر مقادیر دیکشنری
میتوانید به دیکشنری مقادیر جدید اضافه کنید یا مقادیر موجود را تغییر دهید.
my_dict["occupation"] = "Engineer" # Adding a new key-value pair
my_dict["age"] = 31 # Modifying an existing value
print(my_dict)
# Output: {'name': 'John Doe', 'age': 31, 'city': 'New York', 'occupation': 'Engineer'}
متدهای دیکشنری
دیکشنریها متدهای مختلفی برای انجام عملیات گوناگون ارائه میدهند:
keys()
: برگرداندن یک نمایشی از کلیدهای دیکشنری.values()
: برگرداندن یک نمایشی از مقادیر دیکشنری.items()
: برگرداندن یک نمایشی از جفتهای کلید-مقدار (به صورت تاپل).get(key, default)
: برگرداندن مقدار متناظر با کلید مشخص. اگر کلید وجود نداشته باشد، مقدار پیشفرض (default) برگردانده میشود (اگر مشخص شده باشد).pop(key, default)
: حذف و برگرداندن مقدار متناظر با کلید مشخص. اگر کلید وجود نداشته باشد، مقدار پیشفرض (default) برگردانده میشود (اگر مشخص شده باشد).popitem()
: حذف و برگرداندن یک جفت کلید-مقدار به صورت تصادفی.update(other_dict)
: بهروزرسانی دیکشنری با جفتهای کلید-مقدار از یک دیکشنری دیگر.clear()
: حذف تمام عناصر دیکشنری.
print(my_dict.keys()) # Output: dict_keys(['name', 'age', 'city', 'occupation'])
print(my_dict.values()) # Output: dict_values(['John Doe', 31, 'New York', 'Engineer'])
print(my_dict.items()) # Output: dict_items([('name', 'John Doe'), ('age', 31), ('city', 'New York'), ('occupation', 'Engineer')])
print(my_dict.get("address", "Unknown")) # Output: Unknown (key not found, returns default value)
۷. کلاسها و اشیاء (Classes and Objects)
برنامهنویسی شیءگرا (Object-Oriented Programming یا OOP) یک الگوی برنامهنویسی است که بر اساس مفهوم "اشیائ" استوار است. اشیاء موجودیتهایی هستند که دادهها (ویژگیها) و رفتار (متدها) را با هم ترکیب میکنند. کلاسها الگوهایی برای ایجاد اشیاء هستند.
تعریف کلاس
برای تعریف یک کلاس از کلمه کلیدی class
استفاده میشود.
class Dog:
"""A simple example of a class."""
def __init__(self, name, breed):
"""Initialize name and breed attributes."""
self.name = name
self.breed = breed
def bark(self):
"""Simulate a dog barking."""
print("Woof!")
سازنده (Constructor)
متد __init__
یک سازنده است که هنگام ایجاد یک شیء از کلاس فراخوانی میشود. از این متد برای مقداردهی اولیه ویژگیهای شیء استفاده میشود. self
به شیء ایجاد شده اشاره دارد.
ایجاد شیء (Object Instantiation)
برای ایجاد یک شیء از کلاس، کافی است نام کلاس را به همراه پرانتز و آرگومانهای مورد نیاز (در صورت وجود) بنویسید.
my_dog = Dog("Buddy", "Golden Retriever")
دسترسی به ویژگیها و متدها
میتوانید با استفاده از علامت نقطه (.) به ویژگیها و متدهای شیء دسترسی پیدا کنید.
print(my_dog.name) # Output: Buddy
print(my_dog.breed) # Output: Golden Retriever
my_dog.bark() # Output: Woof!
وراثت (Inheritance)
وراثت به شما اجازه میدهد کلاس جدیدی (کلاس فرزند یا زیرکلاس) را از یک کلاس موجود (کلاس والد یا سوپرکلاس) ایجاد کنید. کلاس فرزند ویژگیها و متدهای کلاس والد را به ارث میبرد و میتواند ویژگیها و متدهای جدیدی نیز داشته باشد.
class Poodle(Dog):
"""Represent a Poodle, a special type of dog."""
def __init__(self, name):
"""Initialize attributes of the parent class."""
super().__init__(name, breed="Poodle") # Call the constructor of the parent class
def shake_tail(self):
"""Simulate a poodle shaking its tail."""
print("Wagging tail happily!")
my_poodle = Poodle("Luna")
print(my_poodle.name) # Output: Luna
print(my_poodle.breed) # Output: Poodle
my_poodle.bark() # Output: Woof!
my_poodle.shake_tail() # Output: Wagging tail happily!
چند شکلی (Polymorphism)
چند شکلی به این مفهوم اشاره دارد که اشیاء از کلاسهای مختلف میتوانند به یک پیام به روشهای مختلف پاسخ دهند. به عبارت دیگر، یک متد میتواند در کلاسهای مختلف رفتار متفاوتی داشته باشد.
class Cat:
def __init__(self, name):
self.name = name
def speak(self):
print("Meow!")
def animal_sound(animal):
animal.speak()
my_cat = Cat("Whiskers")
animal_sound(my_dog) # Output: Woof! (Dog class)
animal_sound(my_cat) # Output: Meow! (Cat class)
نتیجهگیری
این چیت شیت یک نمای کلی از مفاهیم کلیدی پایتون ارائه میدهد، از متغیرها و انواع دادهها گرفته تا ساختارهای کنترلی، توابع، لیستها، تاپلها، دیکشنریها و کلاسها. با تسلط بر این مفاهیم، میتوانید برنامههای قدرتمند و کارآمدی را با استفاده از پایتون توسعه دهید. به یاد داشته باشید که تمرین مداوم و استفاده از منابع آموزشی تکمیلی، کلید موفقیت در یادگیری پایتون است. این چیت شیت را به عنوان یک نقطه شروع در نظر بگیرید و به کاوش در دنیای گسترده پایتون ادامه دهید.
```