π Π£ΠΊΡΡ ΠΏΠΈΡΠΎΠ½Π° π
ΠΡΠΊΡΡΡΡ Π² Telegram
π ΠΠ°Π½Π°Π» ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Python. Π’Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠΎΠΊΠΈ ΠΈ Π»Π°ΠΉΡΡ Π°ΠΊΠΈ. π½ ΠΠ΄ΠΌΠΈΠ½ - @tg_adminisrator π ΠΡΠΏΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ: https://telega.in/c/byteofpython π Π§Π°Ρ: @abyteofpython π ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Ρ Π΄ΡΡΠ·ΡΡΠΌΠΈ: @byteofpython
ΠΠΎΠ»ΡΡΠ΅2 334
ΠΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ
ΠΠ΅Ρ Π΄Π°Π½Π½ΡΡ
24 ΡΠ°ΡΠ°
-117 Π΄Π½Π΅ΠΉ
-3730 Π΄Π½Π΅ΠΉ
ΠΡΡ
ΠΈΠ² ΠΏΠΎΡΡΠΎΠ²
π© ΠΠ°ΠΊΠΎΠ²Π° ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ getattr ΠΈ getattribute?
ΠΠ±Π° ΡΡΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ.
π
getattr
class Missing:
attr = 42
def getattr(self, name):
print(f"In getattr, asked for {name}")
return 73
m = Missing()
print(m.attr) # 42
print(m.xyz) # In getattr, asked for xyz; 73
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π²ΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ° xyz.
πgetattribute
class Always:
attr = 42
def getattribute(self, name):
print(f"In getattribute, asked for {name}")
return 73
a = Always()
print(a.attr) # In getattribute, asked for attr; 73
print(a.xyz) # In getattribute, asked for xyz; 73
ΠΠ΄Π΅ΡΡ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²ΡΠ΅Ρ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΊΠ°ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
(attr), ΡΠ°ΠΊ ΠΈ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
(xyz).
β
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, getattribute β ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ getattr Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° getattribute Π½Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡ Π°ΡΡΠΈΠ±ΡΡ.β‘οΈΠ§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ importlib?
ΠΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° ΠΈΠΌΠΏΠΎΡΡΠ°. Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈΡ
ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠ΅ΡΡ!
β‘οΈΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ importlib:
import importlib
# ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ
math = importlib.import_module('math')
# ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ
print(math.pi) # ΠΡΠ²ΠΎΠ΄ΠΈΡ 3.141592653589793
# ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Ρ
importlib.reload(math)
β‘οΈΠ‘ importlib Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅:
β’ ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ
β’ ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
β’ Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠ΅ΡΡ
β’ Π Π°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ ΠΈΠΌΠ΅Π½ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
πΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΊΠΎΠ΄Π°.ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ async Π² Python?
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ async Π² Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ (ΠΈΠ»ΠΈ ΠΊΠΎΡΡΡΠΈΠ½), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°Π΄Π°ΡΠΈ, Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
ΠΈΠ»ΠΈ ΡΡΠ΅Π½ΠΈΠ΅/Π·Π°ΠΏΠΈΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
import asyncio
async def fetch_data():
print("Fetching data...")
await asyncio.sleep(2) # ΡΠΈΠΌΡΠ»ΡΡΠΈΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
print("Data fetched")
return "Data"
async def main():
result = await fetch_data()
print(result)
# Π·Π°ΠΏΡΡΠΊ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
asyncio.run(main())
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, async ΠΈΠ΄ΡΡ Π² ΠΏΠ°ΡΠ΅ Ρ await, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ fetch_data Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ asyncio.sleep(2).β‘οΈΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Selenium
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π°Π²ΡΠΎΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Selenium. Selenium - ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ². ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Python Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠΎ Π΄Π΅Π»Π°Π» ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Selenium ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΊΡΡΡΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π΅Π΅.
β‘οΈΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
from selenium import webdriver
driver = webdriver.Firefox() # ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ
driver.get('<http://www.example.com>')
β‘οΈΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° refresh
ΠΡΠΎΡΠΎΠΉ ΡΠ°Π³ - ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° refresh Π² Selenium. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ. Π ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ time Π² Python, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΊΡΠΈΠΏΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ» ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
β‘οΈΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import time
while True:
driver.refresh() # ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ
time.sleep(10) # ΠΆΠ΄Π΅ΠΌ 10 ΡΠ΅ΠΊΡΠ½Π΄Interactive Radio Button Animation β ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΊΠΈ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ². Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ CSS ΠΈ JavaScript
