🐍 20 Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ Π² Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΡΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивным Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Ρ„ΠΈΡˆΠΊΠΈ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π½ΠΈΠΌΡƒΡ‚ ваши Π½Π°Π²Ρ‹ΠΊΠΈ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ: Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹, магичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² классах, лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, распаковку ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ строки ΠΊΠΎΠ΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Данная ΡΡ‚Π°Ρ‚ΡŒΡ являСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ. Автор: Liu Zuo Lin. Бсылка Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π».

1. Распаковка ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° + Распаковка ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° с *

person = ['bob', 30, 'male']

name, age, gender = person

# name='bob, age=30, gender='male'

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ распаковку ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ для ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ назначСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

fruits = ['apple', 'orange', 'pear', 'pineapple', 'durian', 'banana']

first, second, *others = fruits

# first='apple', second='orange'
# others = ['pear', 'pineapple', 'durian', 'banana']

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ * ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π² эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

2. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка + ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° словарСй/мноТСств

lis = [expression for i in iterable if condition]

l1 = [i for i in range(1,4)]              # [1,2,3]

l2 = [i*2 for i in range(1,4)]            # [2,4,6]

l3 = [i**2 for i in range(1,4)]           # [1,4,9]

l4 = [i for i in range(1,4) if i%2==1]    # [1,3]

Π‘ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ списка ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный список Π² ΠΎΠ΄Π½ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°.

set1 = {i for i in range(1,4)}          # {1,2,3}

d1 = {i:i**2 for i in range(1,4)}       # {1:1, 2:4, 3:9}

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ мноТСства ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ словаря ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания мноТСств ΠΈ словарСй Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ создаСм списки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списков.

3. Π’Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

score = 57
if score > 90:
  grade = 'A*'
elif score > 50:
  grade = 'pass'
else:
  grade = 'fail'

# grade = 'pass'

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ if-elif-else.

score = 57
grade = 'A*' if score>90 else 'pass' if score>50 else 'fail'

# grade = 'pass'

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΆΠ°Ρ‚ΡŒ Π±Π»ΠΎΠΊ if-elif-else Π² ΠžΠ”ΠΠ£ строку, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€.

4. ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² классах Python

class Dog():
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def __str__(self):
    return f'Dog(name={self.name}, age={self.age})'

  def __gt__(self, otherDog):
    return self.age > otherDog.age

__ init __ , __str__ ΠΈ __ gt __ ΡΠ²Π»ΡΡŽΡ‚ΡΡ магичСскими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ-особСнному с нашими ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Dog.

dog = Dog('rocky', 4)
print(dog)    # Dog(name=rocky, age=4)

ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ __str__ опрСдСляСт, Ρ‡Ρ‚ΠΎ возвращаСтся, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ str(dog), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Dog.

dog1 = Dog('rocky', 4)
dog2 = Dog('fifi', 2)

print(dog1 > dog2)      # True

ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ __ gt __ опрСдСляСт, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ сравниваСм Π΄Π²ΡƒΡ… собак с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° >.

5. * *args ΠΈ **kwargs

def test(a, b, *args):
  print(f'{a=} {b=} {args=}')

test(1,2,3,4,5)  # a=1 b=2 args=(3,4,5)

*args ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ нашим функциям ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ любоС количСство ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ args).

def test(a, b, **kwargs):
  print(f'{a=} {b=} {kwargs=}')

test(a=1, b=2, c=3, d=4)    # a=1 b=2 kwargs={'c': 3, 'd': 4}

**kwargs ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ нашим функциям ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ любоС количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² словарС kwargs).

6. Π Π°Π±ΠΎΡ‚Π° с нСсколькими .py Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ

# helper.py
def test123():
  print('test123 is called')

# main.py
from helper import test123

test123()    # test123 is called

Когда Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°-программиста, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ со мноТСством Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ².

7. if __name__ == β€˜__main__’

# helper.py
def test123():
  print('test123 is called')

if __name__ == '__main__':
  # this line only runs if we run helper.py DIRECTLY
  print('print statement from helper.py')

# main.py
from helper import *

test123()    # test123 is called

Π‘Ρ‚Ρ€ΠΎΠΊΠ° if __name__ == '__main__' оцСниваСтся ΠΊΠ°ΠΊ True Π² Ρ„Π°ΠΉΠ»Π΅ .py, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΌΡ‹ запустим Ρ„Π°ΠΉΠ» .py Ρ„Π°ΠΉΠ» Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ эту строку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ случайно Π½Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ строки ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π½Π΅ собираСмся Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ.

8. True ΠΈ False значСния

# 0, Ссли falsy, ΠΈ оцСниваСтся ΠΊΠ°ΠΊ False
if 0: print('this wont print')

# Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ числа truthy ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ True
if 1: print('this prints')
if 2: print('this prints')
if 100: print('this prints')
if -1: print('this prints')
if 3.14: print('this prints')

# пустыС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ falsy ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ False
if '': print('this wont print')
if []: print('this wont print')
if {}: print('this wont print')
if set(): print('this wont print')

# нСпустыС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ truthy ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ True
if 'a': print('this prints')
if [1]: print('this prints')
if {2:3}: print('this prints')
if {1,2}: print('this prints')

# None являСтся falsy ΠΈ оцСниваСтся ΠΊΠ°ΠΊ False
obj = None
if obj: print('this wont print')

# ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ truthy ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ True
obj = Dog()
if obj: print('this prints')

9. break vs continue vs pass

for i in [1,2,3,4,5]:
  if i == 3:
    break

  print(i)

# this prints 1 and 2

break ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ останавливаСт Ρ†ΠΈΠΊΠ» for/while. Никакой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ происходит.

for i in [1,2,3,4,5]:
  if i == 3:
    continue

  print(i)

# this prints 1, 2, 4 and 5

continue пропускаСт ΠžΠ”ΠΠ£ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ всС Π΅Ρ‰Π΅ происходят ΠΏΠΎΠ·ΠΆΠ΅.

for i in [1,2,3,4,5]:
  if i == 3:
    pass

  print(i)

# this prints 1, 2, 3, 4 and 5

pass Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚.

10. Π‘Π»ΠΎΠΊΠΈ try, except, finally

try:
   # ΠΊΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
except:
   # этот Π±Π»ΠΎΠΊ выполняСтся, Ссли Π² Π±Π»ΠΎΠΊΠ΅ try Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
finally:
   # Π²Π΅Ρ‰ΠΈ здСсь Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ВБЕГДА

Π‘Π»ΠΎΠΊΠΈ try-except-finally ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΠ³Π΄Π° Π² нашСм ΠΊΠΎΠ΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ошибки ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (вмСсто просто сбоя)

11. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ построСния Π²Π΅Π±-API Python

Если Π²Ρ‹ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠΌ-программистом, скорСС всСго, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ это Π·Π½Π°Ρ‚ΡŒ. Π― ΡƒΠ·Π½Π°Π» ΠΎΠ± этом довольно ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΈ Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я столкнулся с этим Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Π² своСм ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

НСкоторыС простыС Π² освоСнии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Python:

  • Python FastAPI – это позволяСт Π½Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ API.
  • Python Flask – ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ API с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Flask ΠΈ Π΄Π°ΠΆΠ΅ простыС Π²Π΅Π±-прилоТСния.

12. Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹

Π― ΡƒΠ·Π½Π°Π» ΠΎΠ± этом ΠžΠ§Π•ΠΠ¬ ΠΏΠΎΠ·Π΄Π½ΠΎ Π½Π° своСм ΠΏΡƒΡ‚ΠΈ развития Π² Python ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π» любой синтаксис @decorator, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π²ΠΈΠ΄Π΅Π». Но Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит Π² вашСм ΠΊΠΎΠ΄Π΅.

def add_exclamation_mark(your_function):
  def inner(*args, **kwargs):
    return your_function(*args, **kwargs)
  return inner

@add_exclamation_mark
def greet(name):
  return f'hello {name}'

Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹ – это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅: 1) ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, 2) Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ 3) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Когда ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ @add_exclamation_mark Π½Π°Π΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ greet, ΠΌΡ‹ фактичСски Π΄Π΅ΠΊΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ greet ΠΈ мСняСм Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

# @add_exclamation_mark
# def greet(name)
#
# ^ THIS IS THE SAME AS BELOW:
#
# greet = add_exclamation_mark(greet)

print(greet('tim'))    # hello tim!

Π§Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΄Π΅ΠΊΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ greet. Из-Π·Π° нашСго Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° наша функция greet Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ Π½Π΅Π΅ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ! послС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния.

13. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ + ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«yieldΒ»

def simple_generator():
  yield 'apple'
  yield 'orange'
  yield 'pear'

for fruit in simple_generator():
  print(fruit)

# apple orange pear

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово yield ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово return. Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ функция Π½Π΅ останавливаСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ послС Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ.

Ѐункция, содСрТащая ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово yield, становится Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ-Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

14. Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

На самом Π΄Π΅Π»Π΅ я ΡƒΠ·Π½Π°Π» ΠΎΠ± этом Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅, Ρ‡Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π».

s = ' APPLE ORANGE PEAR '
s = s.strip()    # s is now 'APPLE ORANGE PEAR'
s = s.lower()    # s is now 'apple orange pear'
s = s.split()    # s is now ['apple', 'orange', 'pear']

НСкоторый ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΠ΄ для очистки строки.

s = ' APPLE ORANGE PEAR '
s = s.strip().lower().split()

# s is now ['apple', 'orange', 'pear']

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΎΠ΄Π½Ρƒ строку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ нСсколько строк ΠΊΠΎΠ΄Π°.

15. Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ – рСгрСссия ΠΈ классификация

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ я ΡƒΠ·Π½Π°Π» (Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅), ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, я Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ это какая-Ρ‚ΠΎ магия.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ я ΡƒΠ·Π½Π°Π», ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅), я ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»: «О, Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‚Π°ΠΊ это своСго Ρ€ΠΎΠ΄Π° автоматичСская статистика с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Β». Π­Ρ‚ΠΎ большС Π½Π΅ Π±Ρ‹Π»ΠΎ волшСбной ΠΌΠ°Π³ΠΈΠ΅ΠΉ.

МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ – это огромная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с обучСния с ΡƒΡ‡ΠΈΡ‚Π΅Π»Π΅ΠΌ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, с классификации ΠΈ рСгрСссии. Π’ качСствС стартового Π½Π°Π±ΠΎΡ€Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ scikit-learn, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Python, которая выполняСт Π·Π° вас вСсь ΠΊΠΎΠ΄ машинного обучСния ΠΈ позволяСт Π²Π°ΠΌ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ классы.

16. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹

ΠŸΡ€ΠΎΠΉΠ΄Ρ бСсчислСнноС количСство собСсСдований ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ для стаТировок ΠΈ ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… долТностСй, я понял, насколько Π²Π°ΠΆΠ΅Π½ этот шаг. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ, Ссли Π½Π΅ всС собСсСдования ΠΏΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ достаточной компСтСнтности Π² этой области.

К соТалСнию, я ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ» довольно ΠΌΠ½ΠΎΠ³ΠΎ собСсСдований ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² извСстных компаниях Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ нСдостаточно практиковался, Ρ‡Ρ‚ΠΎ, вСроятно, стоило ΠΌΠ½Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… стаТировок.

Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° собСсСдованиС Π² блиТайшСС врСмя ΠΈΠ»ΠΈ сСйчас Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ смоТСтС ΠΏΡ€ΠΎΠΉΡ‚ΠΈ собСсСдованиС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈ, – Π½Π΅ Π½Π°Π΄ΠΎ. Π£Π»ΡƒΡ‡ΡˆΡŒΡ‚Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². ΠŸΠΎΡΠ»ΡƒΡˆΠ°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ сдСлал Ρ‚Ρƒ ΠΆΠ΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄.

Если ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΡˆΡŒΡΡ ΠΊΠΎΠ΄Π΅Ρ€ΠΎΠΌ – Π½ΠΈ ΠΎΠ΄ΠΈΠ½ собСс Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Π±Π΅Π· Π½ΠΈΡ…. ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρƒ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ программиста» ΠΊΠ°ΠΊ Ρ€Π°Π· Π΅ΡΡ‚ΡŒ курс «Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ алгоритмичСскому собСсСдованию Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ IT-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.

17. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Π’ Python Π΅ΡΡ‚ΡŒ нСсколько встроСнных структур Π΄Π°Π½Π½Ρ‹Ρ….

# упорядочСнный Π½Π°Π±ΠΎΡ€ элСмСнтов
list1 = [1,2,3]

# нСизмСняСмый список. ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ словаря
tuple1 = (1,2,3)

# O(1) ΠΏΡ€ΠΈ доступС ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π°
dict1 = {'apple':4, 'orange':5}

# нСупорядочСнная коллСкция, содСрТащая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты
# O(1) ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ сущСствования элСмСнта Π²Π½ΡƒΡ‚Ρ€ΠΈ мноТСства
set1 = {1,2,3}

# нСизмСняСмоС мноТСство. ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ dict
frozenset1 = frozenset({1,2,3})

18. Лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ я Π²ΠΈΠ΄Π΅Π» лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ всС Π±Ρ‹Π»ΠΎ Π² порядкС, я просто ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π» ΠΈΡ…. Пока ΠΌΠ½Π΅ Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΡ…. И ΡƒΠ·Π½Π°Π», ΠΊΠ°ΠΊ просто это Π±Ρ‹Π»ΠΎ Π½Π° самом Π΄Π΅Π»Π΅.

def add(x, y):
  return x + y

# this is the same as

add = lambda x,y : x + y

Лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ написанныС с использованиСм Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ синтаксиса. Π•Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

def test():
  return 'hello'

# this is the same as 

test = lambda : 'hello'
def test2(a,b,c,d):
  return (a+b) / (c-d)

# this is the same as

test2 = lambda a,b,c,d : (a+b) / (c-d)

19. assert + raise + custom ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

assert score <= 100
# ensuring that score cannot be above 100.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово assert позволяСт Π½Π°ΠΌ провСсти тСст Π½Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π² сСрСдинС нашСго ΠΊΠΎΠ΄Π°. Если ΠΎΡ†Π΅Π½ΠΊΠ° > 100, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка AssertionError, ΠΈ наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

if score > 100:
  raise Exception('score cannot be higher than 100')
# ensuring that score cannot be above 100.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово raise позволяСт Π½Π°ΠΌ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сообщСниС Π² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ)

class ScoreException(Exception):
  def __init__(self):
    super().__init__('score cannot be higher than 100')

if score > 100:
  raise ScoreException()

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои собствСнныС Ρ‚ΠΈΠΏΡ‹ Exception, наслСдуя ΠΎΡ‚ класса Exception.

20. ΠœΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΡΡ‚ΡŒ Π² Python

ВстроСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ multiprocessing Π² Python позволяСт Π½Π°ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

import multiprocessing
import time
import datetime

def yourfunction(x):
    start = datetime.datetime.now()
    time.sleep(1)
    end = datetime.datetime.now()
    return f'x={x} start at {start}, end at {end}'

if __name__ == '__main__':
    with multiprocessing.Pool(processes=3) as pool:
        data = pool.map(yourfunction, [1, 2, 3, 4, 5, 6, 7])

    for row in data:
        print(row)
x=1 start at 2023-04-16 13:39:32.035510, end at 2023-04-16 13:39:33.037308
x=2 start at 2023-04-16 13:39:32.035795, end at 2023-04-16 13:39:33.037324
x=3 start at 2023-04-16 13:39:32.037349, end at 2023-04-16 13:39:33.037629
x=4 start at 2023-04-16 13:39:33.037725, end at 2023-04-16 13:39:34.040135
x=5 start at 2023-04-16 13:39:33.037892, end at 2023-04-16 13:39:34.040160
x=6 start at 2023-04-16 13:39:33.037986, end at 2023-04-16 13:39:34.040161
x=7 start at 2023-04-16 13:39:34.040454, end at 2023-04-16 13:39:35.045383

Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ выполняСт Ρ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ (каТдая ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΡƒ)

  1. yourfunction(1) yourfunction(2) ΠΈ yourfunction(3) Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.
  2. yourfunction(4) yourfunction(5) ΠΈ yourfunction(6) Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.
  3. yourfunction(7) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сама ΠΏΠΎ сСбС

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

admin
11 дСкабря 2018

ООП Π½Π° Python: ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python допускаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Π² Π΅Π³ΠΎ основС...
admin
28 июня 2018

3 самых Π²Π°ΠΆΠ½Ρ‹Ρ… сфСры примСнСния Python: возмоТности языка

БущСствуСт мноТСство областСй примСнСния Python, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ особСнно...
admin
13 фСвраля 2017

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python: ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π΄ΠΎ профСссионала

Пошаговая инструкция для всСх, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒΒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python...