مرور سریع پایتون
از انواع داده و ساختارهای پایه تا شیءگرایی، مدیریت خطا، دکوریتور، جنریتور و کتابخانههای استاندارد پایتون.
این جزوه یک دور کامل و فشرده روی پایتون است: نصب و محیط توسعه، انواع داده، رشته و کالکشنها، توابع، برنامهنویسی شیءگرا، مدیریت خطا و چند کتابخانهٔ استاندارد پرکاربرد (regex، فایل، وباسکرپینگ).
فهرست بخشها
نصب و محیط توسعه0/1
راهاندازی محیط برنامهنویسی پایتون.
python.exe -m pip install --upgrade pip
python.exe -m pip install <package>
میانبرهای پرکاربرد در PyCharm: Ctrl+Alt+O مرتبسازی Import ها، Ctrl+Alt+L فرمتکردن کد.
انواع داده و اعداد0/2
انواع پایهٔ داده در پایتون و رفتار عملگرهای عددی.
fruits = ["pizza", 4, 5.4] # list
person = {"name": "meh"} # dictionary
point = ("pizza", 4, 5.4) # tuple
7 / 2 # 3.5
7 // 2 # 3
2 ** 3 # 8
ترتیب اولویت عملگرها: پرانتز، توان (**)، علامت مثبت/منفی (+x، -x)، ضرب/تقسیم (* / // %)، جمع/تفریق.
متغیر و رشته0/4
تایپ داینامیک و متدهای رایج رشته.
test = 5
test = "meh" # مجاز است
msg = "0123456789"
msg[2:9:3] # "258"
msg[::-1] # "9876543210" معکوس
msg[-1] # "9"
name = "mehran"
name[0] = "M" # خطا
"{} {}".format(name, family)
"{1} {0}".format(name, family)
f"hello {name} {family}" # بهترین روش
لیست، دیکشنری، تاپل و ست0/4
چهار ساختماندادهٔ اصلی پایتون.
names = ["ali", "mehran", "sara"]
names[1:3] # ["mehran", "sara"]
names.sort()
nomre = {"riazi": 12, "olom": 15}
nomre.get("nashenas", -1) # -1 اگر کلید نبود
del nomre["riazi"]
result = ("meh", 20)
name, score = result # Unpacking
set1.union(set2)
set1.intersection(set2)
set(my_list) # حذف موارد تکراری از یک list
شرط، حلقه و List Comprehension0/3
ساختارهای کنترلی و روش فشردهٔ ساخت لیست.
num = int(input())
if num > 0:
print("positive")
elif num == 0:
print("zero")
else:
print("negative")
for i, ch in enumerate("hi"):
print(i, ch) # 0 h / 1 i
for n, f in zip(names, families):
print(n, f)
nums = [0, 1, 2, 3, 4]
doubled = [x * 2 for x in nums] # [0, 2, 4, 6, 8]
evens = [n for n in nums if n % 2 == 0]
List Comprehension معمولاً از حلقهٔ for معمولی سریعتر و خواناتر است — در مصاحبهها بابت آن امتیاز مثبت میگیرید.
توابع0/3
تعریف تابع، مقدار پیشفرض، args/kwargs و توابع بینام.
def myfunc(a, b=1):
return a + b, a * b # تاپل برمیگرداند
def sum_numbers(*args):
return sum(int(i) for i in args)
def masahat(**kwargs):
if "len" in kwargs:
print(kwargs["len"])
squares = list(map(lambda x: x ** 2, nums))
evens = list(filter(lambda x: x % 2 == 0, nums))
برنامهنویسی شیءگرا0/6
تعریف کلاس، وراثت، چندریختی و متدهای Magic.
class Book:
def __init__(self, pages):
self.pages = pages
def open(self):
print(f"open {self.pages}")
class Animal:
def __init__(self, name, species):
self.name = name
self.species = species
def __str__(self):
return f"name={self.name}, species={self.species}"
class Bird(Animal):
def __init__(self, name, species, wing_span):
super().__init__(name, species)
self.wing_span = wing_span
for obj in [n1, n2]:
obj.action() # هرکدام رفتار خودش را اجرا میکند
class Animal:
zoo_name = "tehran zoo" # مشترک بین همهٔ نمونهها
پکیج، ماژول و مدیریت خطا0/4
نصب و import پکیج، تفاوت اسکریپت مستقل و ماژول، و مدیریت استثناها.
pip install emoji
import emoji
if __name__ == "__main__":
main()
def divide(a, b):
try:
return a / b
except ZeroDivisionError:
print("error")
return None
except Exception as e:
print(f"error is {e}")
return None
finally:
pass
import unittest
class TestSum(unittest.TestCase):
def test_simple(self):
self.assertEqual(sum_two(1, 2), 3)
if __name__ == "__main__":
unittest.main()
دکوریتور و جنریتور0/2
توابع سطحبالا برای تغییر رفتار توابع دیگر، و تولید مقادیر تنبل (Lazy).
def calc(f):
def wrapper():
print("before")
f()
print("after")
return wrapper
@calc
def say_hello():
print("salam")
def count_up():
for i in range(3):
yield i
gen = count_up()
print(next(gen)) # 0
print(list(gen)) # [1, 2]
کتابخانهٔ استاندارد و Regex0/3
چند ماژول پرکاربرد استاندارد پایتون.
from collections import Counter
Counter([1, 2, 3, 3]) # Counter({3: 2, 1: 1, 2: 1})
import datetime, math, random
d = datetime.date(2024, 1, 1)
math.floor(4.3) # 4
random.choice([1, 2, 8])
round(4.5) برابر 4 است ولی round(5.5) برابر 6 — بهخاطر قانون گردکردن به نزدیکترین عدد زوج (Banker's Rounding)، نه گردکردن معمولی.
import re
r = re.search("meh", "hi meh!")
r.span() # (3, 6)
re.findall(r"\s", msg)
فایل، وباسکرپینگ و فرمتهای داده0/5
کار با فایل متنی، درخواست HTTP، پردازش HTML و فرمتهای رایج داده.
f = open("test.txt")
f.read()
f.seek(0)
f.read()
f.close()
import requests
r = requests.get("http://test.com")
import bs4
soup = bs4.BeautifulSoup(r.text)
title = soup.select("title")[0].get_text()
for p in soup.select(".text-primary"):
print(p.text)
driver.get("test.com")
driver.find_element(By.ID, "example")
import json
data = {"name": "jadi"}
text = json.dumps(data)
back = json.loads(text)
