ΠΠΎΠ΄ python: ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ | Python 3 Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΠΈ ΡΠ°ΠΉΠ½ΠΈΠΊΠΎΠ²
10 ΠΏΡΠ°ΠΊΡΠΈΠΊ ΠΊΠΎΠ΄Π°, ΡΡΠΊΠΎΡΡΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° Python
Β«ΠΠΈΡΠΎΠ½ β ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉΒ». ΠΠ°Π²Π΅ΡΠ½ΡΠΊΠ° Π²Ρ Π½Π΅ ΡΠ°Π· ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΡΡΠΈΠΌ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΎΡ Π»ΡΠ΄Π΅ΠΉ, ΠΏΡΠΈΡΠ΅Π΄ΡΠΈΡ Π² Python ΠΈΠ· C, C++ ΠΈΠ»ΠΈ Java. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎ Π²Π΅ΡΠ½ΠΎ. Π¦ΠΈΠΊΠ»Ρ ΠΈΠ»ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΠΏΠΈΡΠΊΠΎΠ² ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π³Π»Π°Π²Π½Π°Ρ ΠΌΠΈΡΡΠΈΡ Python β ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΡΡΠ½ΡΠΌ ΠΈ Π»Π΅Π³ΠΊΠΈΠΌ. Π Π°Π΄ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΡΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ½Π΅ΡΡΠΈ Π² ΠΆΠ΅ΡΡΠ²Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΠΎ Π½Π΅ΠΌΠ°Π»ΠΎ ΡΡΠΈΠ»ΠΈΠΉ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π½Π°Π±ΠΎΡΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ NumPy, SciPy, Pandas ΠΈ numba, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° C/C++. ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ β PyPy ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΊΠΎΠ΄ Python Π² 4.4 ΡΠ°Π·Π° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ CPython (ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Python).
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ PyPy β Π½Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Matplotlib, SciPy.
ΠΠΎ ΡΡΠΊΠΎΡΠΈΡΡ Python ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π±Π΅Π· Π²Π½Π΅ΡΠ½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π Π½Π°ΡΠΈΡ ΡΠΈΠ»Π°Ρ ΡΠ°Π·ΠΎΠ³Π½Π°ΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΡΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΊΠΎΠ΄ΠΈΠ½Π³Π°.
Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Python 3
Π Python ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ
ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ
Π½Π° C Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ½ΠΈ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΡ
Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (abs
, min
, max
, len
, sum
). Π₯ΠΎΡΠΎΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡ
Π·Π½Π°ΡΡ, ΡΡΠΎΠ±Ρ Π² ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠ΅ Π½Π΅ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΡ Π½Π΅ΡΠΊΠ»ΡΠΆΠΈΠ΅ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄Ρ, Π° Π±ΡΠ°ΡΡ Π½Π°Π΄ΡΠΆΠ½ΠΎΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ·ΡΠΌΡΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ set()
ΠΈ sum()
. Π‘ΡΠ°Π²Π½ΠΈΠΌ ΠΈΡ
ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°.
ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ set()
:
import random
random.seed(666)
a_long_list = [random.randint(0, 50) for i in range(1000000)]
# 1. ΠΠ°ΡΡΠΎΠΌΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ set
%%time
unique = []
for n in a_long_list:
if n not in unique:
unique.append(n)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# CPU times: user 316 ms, sys: 1.36 ms, total: 317 ms
# Wall time: 317 ms
# 2. ΠΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ set
%%time
unique = list(set(a_long_list))
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# CPU times: user 8.74 ms, sys: 110 ΞΌs, total: 8.85 ms
# Wall time: 8.79 ms
ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ sum()
:
# 1. ΠΠ°ΡΡΠΎΠΌΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ sum
%%time
sum_value = 0
for n in a_long_list:
sum_value += n
print(sum_value)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# 25023368
# CPU times: user 9.91 ms, sys: 2.2 ms, total: 101 ms
# Wall time: 100 ms
# 2. ΠΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ sum
%%time
sum_value = sum(a_long_list)
print(sum_value)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# 25023368
# CPU times: user 4.74 ms, sys: 277 ΞΌs, total: 5.02 ms
# Wall time: 4.79 ms
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π² 36 (set
) ΠΈ 20 (sum
) ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ°ΠΌΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ.
ΠΡΠ»ΠΈ Π½Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ΅Π½ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠΌ, sort()
Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ sorted()
. ΠΡΠΎ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ:
# 1. ΠΠ΅ΡΠΎΠ»ΡΠ½Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ sorted()
%%time
sorted(a_long_list)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# CPU times: user 12 ms, sys: 2.51 ms, total: 14.5 ms
# Wall time: 14.2 ms
# 2. ΠΠ΅ΡΠΎΠ»ΡΠ½Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ sort()
%%time
a_long_list.sort()
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# CPU times: user 8.52 ms, sys: 82 ΞΌs, total: 8.6 ms
# Wall time: 10 ms
Π‘ΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ ΠΈ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ° β ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° key
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΎΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
# 1. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Ρ ΠΊΠ»ΡΡΠΎΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ sorted()
%%time
str_list1 = "Although both functions can sort list, there are small differences".split()
result = sorted(str_list1, key=str.lower)
print(result)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# ['Although', 'are', 'both', 'can', 'differences', 'functions', 'list,', 'small',
'sort', 'there']
# CPU times: user 29 ΞΌs, sys: 0 ns, total: 29 ΞΌs
# Wall time: 32.9 ΞΌs
# 2. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Ρ ΠΊΠ»ΡΡΠΎΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ sort()
%%time
str_list2 = "Although both functions can sort list, there are small differences".split()
str_list2.sort(key=str.lower)
print(str_list2)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# ['Although', 'are', 'both', 'can', 'differences', 'functions', 'list,', 'small',
'sort', 'there']
# CPU times: user 26 ΞΌs, sys: 0 ns, total: 26 ΞΌs
# Wall time: 29.8 ΞΌs
# 3. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Ρ ΠΊΠ»ΡΡΠΎΠΌ (Π»ΡΠΌΠ±Π΄Π°) Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ sorted()
%%time
str_list1 = "Although both functions can sort list, there are small differences".split()
result = sorted(str_list1, key=lambda str: len(str))
print(result)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# ['can', 'are', 'both', 'sort', 'list,', 'there', 'small', 'Although', 'functions', 'differences']
# CPU times: user 61 ΞΌs, sys: 3 ΞΌs, total: 64 ΞΌs
# Wall time: 59.8 ΞΌs
# 4. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Ρ ΠΊΠ»ΡΡΠΎΠΌ (Π»ΡΠΌΠ±Π΄Π°) Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ sort()
%%time
str_list2 = "Although both functions can sort list, there are small differences".split()
str_list2.sort(key=lambda str: len(str))
print(str_list2)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# ['can', 'are', 'both', 'sort', 'list,', 'there', 'small', 'Although', 'functions', 'differences']
# CPU times: user 36 ΞΌs, sys: 0 ns, total: 36 ΞΌs
# Wall time: 38.9 ΞΌs
Π’Π°ΠΊ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ sort()
ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΡΠΌΠΎ Π½Π° ΠΌΠ΅ΡΡΠ΅, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ sorted()
ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ Π½Π΅ΡΡΠΎΠ½ΡΡΡΠΌ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²Π½ΡΡΡΠΈ a_long_list
ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡ sorted()
Π±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΡΠ±ΠΎΠΉ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ. ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»ΠΎΠ²Π°ΡΡ (ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ), ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ sorted()
:
a_dict = {'A': 1, 'B': 3, 'C': 2, 'D': 4, 'E': 5}
# 1. ΠΠ΅ΡΠΎΠ»ΡΠ½Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ
%%time
result = sorted(a_dict)
print(result)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# ['A', 'B', 'C', 'D', 'E']
# CPU times: user 4 ΞΌs, sys: 0 ns, total: 4 ΞΌs
# Wall time: 6.91 ΞΌs
# 2. CΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ
%%time
result = sorted(a_dict.items(), key=lambda item: item[1])
print(result)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# [('A', 1), ('C', 2), ('B', 3), ('D', 4), ('E', 5)]
# CPU times: user 7 ΞΌs, sys: 0 ns, total: 7 ΞΌs
# Wall time: 8.82 ΞΌs
# 3. Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² Π²ΠΈΠ΄Π΅ ΡΠ»ΠΎΠ²Π°ΡΡ
%%time
result = {key: value for key, value in sorted(a_dict.items(), key=lambda item: item[1])}
print(result)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# {'A': 1, 'C': 2, 'B': 3, 'D': 4, 'E': 5}
# CPU times: user 8 ΞΌs, sys: 0 ns, total: 8 ΞΌs
# Wall time: 11.2 ΞΌs
ΠΠΎΠ³Π΄Π° Π½ΡΠΆΠ΅Π½ ΠΏΡΡΡΠΎΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ, Π²ΠΌΠ΅ΡΡΠΎ dict()
ΠΈΠ»ΠΈ list()
, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ Π²ΡΠ·Π²Π°ΡΡ {}
ΠΈ []
(Π΄Π»Ρ ΠΏΡΡΡΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π²ΡΠ΅ Π΅ΡΠ΅ Π½ΡΠΆΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ set()
). ΠΡΠΎΡ ΠΏΡΠΈΠ΅ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡ Π²Π°Ρ ΠΊΠΎΠ΄, Π½ΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ «pythonic».
# 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ dict()
%%time
sorted_dict1 = dict()
for key, value in sorted(a_dict.items(), key=lambda item:item[1]):
sorted_dict1[key] = value
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# CPU times: user 10 ΞΌs, sys: 0 ns, total: 10 ΞΌs
# Wall time: 12.2 ΞΌs
# 2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»Π° ΡΠ»ΠΎΠ²Π°ΡΡ
%%time
sorted_dict2 = {}
for key, value in sorted(a_dict.items(), key=lambda item:item[1]):
sorted_dict2[key] = value
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# CPU times: user 9 ΞΌs, sys: 0 ns, total: 9 ΞΌs
# Wall time: 11 ΞΌs
# 3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ list()
%%time
list()
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# CPU times: user 3 ΞΌs, sys: 0 ns, total: 3 ΞΌs
# Wall time: 3.81 ΞΌs
# 4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»Π° ΡΠΏΠΈΡΠΊΠ°
%%time
[]
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# CPU times: user 2 ΞΌs, sys: 0 ns, total: 2 ΞΌs
# Wall time: 3.1 ΞΌs
4. ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²
ΠΠ±ΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΡΠ°ΡΠΎΠ³ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΡΠ»ΠΎΠ²ΠΈΠΉ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΊΠ» for
β ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ Π² Π½ΠΎΠ²ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ±Π΅ΡΡΠΌ Π²ΡΠ΅ ΡΡΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° another_long_list
:
even_num = []
for number in another_long_list:
if number % 2 == 0:
even_num.append(number)
ΠΠΎ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΠΈ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. ΠΠΎΠ΄ ΡΠΈΠΊΠ»Π° for
ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠΉ-Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠ°, Π²ΡΠΈΠ³ΡΠ°Π² ΠΏΡΠΈ ΡΡΠΎΠΌ Π² ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΠΎΡΡΠΈ Π² Π΄Π²Π° ΡΠ°Π·Π°:
import random
random.seed(666)
another_long_list = [random.randint(0,500) for i in range(1000000)]
# 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΊΠ»Π° for
%%time
even_num = []
for number in another_long_list:
if number % 2 == 0:
even_num.append(number)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# CPU times: user 113 ms, sys: 3.55 ms, total: 117 ms
# Wall time: 117 ms
# 2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠ°
%%time
even_num = [number for number in another_long_list if number % 2 == 0]
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# CPU times: user 56.6 ms, sys: 3.73 ms, total: 60.3 ms
# Wall time: 64.8 ms
Π‘ΠΎΡΠ΅ΡΠ°Ρ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Ρ ΠΡΠ°Π²ΠΈΠ»ΠΎΠΌ #3 (ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ²), ΠΌΡ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π² ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ, ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΡΠΊΠΎΠ±ΠΊΠΈ:
a_dict = {'A': 1, 'B': 3, 'C': 2, 'D': 4, 'E': 5}
sorted_dict3 = {key: value for key, value
in sorted(a_dict.items(), key=lambda item: item[1])}
print(sorted_dict3)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# {'A': 1, 'C': 2, 'B': 3, 'D': 4, 'E': 5}
Π Π°Π·Π±Π΅ΡΡΠΌΡΡ Π² ΠΊΠΎΠ΄Π΅:
- ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
sorted(a_dict.items(), key=lambda item: item[1])
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ[('A', 1), ('C', 2), ('B', 3), ('D', 4), ('E', 5)]
. - ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
key
, Π° Π²ΡΠΎΡΠΎΠΉ β Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡvalue
. - ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠ°ΡΡ
key
—value
Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅.
ΠΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ΅ ΡΠΏΠΈΡΠΊΠ° Π½ΡΠΆΠ½Ρ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈ ΠΈΡ
ΠΈΠ½Π΄Π΅ΠΊΡΡ. Π§ΡΠΎΠ±Ρ Π²Π΄Π²ΠΎΠ΅ ΡΡΠΊΠΎΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ enumerate()
Π΄Π»Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π² ΠΏΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
import random
random.seed(666)
a_short_list = [random.randint(0,500) for i in range(5)]
# 1. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»ΠΈΠ½Ρ ΡΠΏΠΈΡΠΊΠ°
%%time
for i in range(len(a_short_list)):
print(f'number {i} is {a_short_list[i]}')
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# number 0 is 233
# number 1 is 462
# number 2 is 193
# number 3 is 222
# number 4 is 145
# CPU times: user 189 ΞΌs, sys: 123 ΞΌs, total: 312 ΞΌs
# Wall time: 214 ΞΌs
# 2. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ enumerate()
for i, number in enumerate(a_short_list):
print(f'number {i} is {number}')
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
# number 0 is 233
# number 1 is 462
# number 2 is 193
# number 3 is 222
# number 4 is 145
# CPU times: user 72 ΞΌs, sys: 15 ΞΌs, total: 87 ΞΌs
# Wall time: 90.1 ΞΌs
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ zip()
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΈΡ
Π² ΠΎΠ±ΡΠΈΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ:
list1 = ['a', 'b', 'c', 'd', 'e']
list2 = ['1', '2', '3', '4', '5']
pairs_list = [pair for pair in zip(list1, list2)]
print(pairs_list)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
[('a', '1'), ('b', '2'), ('c', '3'), ('d', '4'), ('e', '5')]
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠΏΠΈΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ zip()
ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ.
Π Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π·Π²Π΅Π·Π΄ΠΎΡΠΊΡ (*
) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅:
# 1. Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΡΠΏΠΈΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ zip()
%%time
letters1, numbers1 = zip(*pairs_list)
print(letters1, numbers1)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
('a', 'b', 'c', 'd', 'e') ('1', '2', '3', '4', '5')
# CPU times: user 5 ΞΌs, sys: 1e+03 ns, total: 6 ΞΌs
# Wall time: 6.91 ΞΌs
# 2. Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΡΠΏΠΈΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΏΡΠΎΡΡΡΠΌ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠΎΠΌ
letters2 = [pair[0] for pair in pairs_list]
numbers2 = [pair[1] for pair in pairs_list]
print(letters2, numbers2)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
['a', 'b', 'c', 'd', 'e'] ['1', '2', '3', '4', '5']
# CPU times: user 5 ΞΌs, sys: 1e+03 ns, total: 6 ΞΌs
# Wall time: 7.87 ΞΌs
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΡ Π½Π΅ΡΠΊΠ»ΡΠΆΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
import random
random.seed(666)
another_long_list = [random.randint(0,500) for i in range(1000000)]
def check_membership(n):
for element in another_long_list:
if element == n:
return True
return False
ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ in
:
# 1. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
%%time
check_membership(900)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 29.7 ms, sys: 847 ΞΌs, total: 30.5 ms
# Wall time: 30.2 ms
# 2. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ in
900 in another_long_list
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 10.2 ms, sys: 79 ΞΌs, total: 10.3 ms
# Wall time: 10.3 ms
ΠΠΎΠ²ΡΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ set
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΡΠΎΠΊΡΠ°ΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ in
ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°ΠΌΠΈ.
# Π£Π±ΠΈΡΠ°Π΅ΠΌ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ
check_list = set(another_long_list)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 19.8 ms, sys: 204 ΞΌs, total: 20 ms
# Wall time: 20 ms
# ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅
900 in check_list
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 2 ΞΌs, sys: 0 ns, total: 2 ΞΌs
# Wall time: 5.25 ΞΌs
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°Π½ΡΠ»ΠΎ 20 ΠΌΡ. ΠΠΎ ΡΡΠΎ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠ΅ Π·Π°ΡΡΠ°ΡΡ. ΠΠ°ΡΠΎ ΡΠ°ΠΌΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°Π½ΡΠ»Π° 5 ΠΌΠΊΡ β ΡΠΎ Π΅ΡΡΡ Π² 2 ΡΡΡ. ΡΠ°Π· ΠΌΠ΅Π½ΡΡΠ΅, ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ ΠΏΡΠΈ ΡΠ°ΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΡ .
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅/ΡΠΏΠΈΡΠΊΠΈ/ΡΠ»ΠΎΠ²Π°ΡΠΈ/… ΠΏΡΡΡΡΠΌΠΈ. ΠΠ° ΡΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°Ρ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ.
ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ == True
ΠΈΠ»ΠΈ is True
Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ if
, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΠ΅ΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Β«ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠ°ΡΒ» ΡΡΠ½ΠΊΡΠΈΡ __eq__
Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
string_returned_from_function = 'Hello World'
# 1. Π―Π²Π½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ
%%time
if string_returned_from_function == True:
pass
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 3 ΞΌs, sys: 0 ns, total: 3 ΞΌs
# Wall time: 5.01 ΞΌs
# 2. Π―Π²Π½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° is
%%time
if string_returned_from_function is True:
pass
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 2 ΞΌs, sys: 1 ns, total: 3 ΞΌs
# Wall time: 4.05 ΞΌs
# 3. ΠΠ΅ΡΠ²Π½ΠΎΠ΅ ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ
%%time
if string_returned_from_function:
pass
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 3 ΞΌs, sys: 0 ns, total: 3 ΞΌs
# Wall time: 4.05 ΞΌs
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ not
:
if not string_returned_from_function:
pass
ΠΡΠ»ΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΠΏΠΈΡΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ»ΡΡΠΈ β ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ°, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ β ΡΡΠ΅ΡΡΠΈΠΊ Π²ΡΡΡΠ΅ΡΠ°Π΅ΠΌΠΎΡΡΠΈ.
%%time
num_counts = {}
for num in a_long_list:
if num in num_counts:
num_counts[num] += 1
else:
num_counts[num] = 1
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 448 ms, sys: 1.77 ms, total: 450 ms
# Wall time: 450 ms
ΠΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Counter()
ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ collections. ΠΠ΅ΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΌΠ΅ΡΡΠΈΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅:
%%time
num_counts2 = Counter(a_long_list)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 40.7 ms, sys: 329 ΞΌs, total: 41 ms
# Wall time: 41.2 ms
ΠΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 10 ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ.
Π£ Counter
ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ most_common
, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
for number, count in num_counts2.most_common(10):
print(number, count)
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
29 19831
47 19811
7 19800
36 19794
14 19761
39 19748
32 19747
16 19737
34 19729
33 19729
ΠΠ΄Π½ΠΈΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ, collections
β ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ Π½Π°Π±ΠΎΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π»ΡΠ±ΠΎΠ³ΠΎ Python-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠ΅ ΠΏΠΎΠ»Π΅Π½ΠΈΡΠ΅ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π½Π°ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·. ΠΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ β ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π½ΡΡΡΡ ΡΠΈΠΊΠ»Π° for
.
def compute_cubic1(number):
return number**3
%%time
new_list_cubic1 = [compute_cubic1(number) for number in a_long_list]
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 335 ms, sys: 14.3 ms, total: 349 ms
# Wall time: 354 ms
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ β ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠΈΠΊΠ» Π²Π½ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
def compute_cubic2():
return [number**3 for number in a_long_list]
%%time
new_list_cubic2 = compute_cubic2()
# ΠΡΠ²ΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
# CPU times: user 261 ms, sys: 15.7 ms, total: 277 ms
# Wall time: 277 ms
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π»Ρ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ (Π΄Π»ΠΈΠ½Π° a_long_list
) ΠΌΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 22% Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
***
ΠΡΠ΄Π΅ΠΌ ΡΠ°Π΄Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°ΠΌΠΈ ΠΊ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² Python. ΠΠΎΡ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²Π°Ρ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ:
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python. Π§Π°ΡΡΡ 1
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅Β ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΠ± ΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ΅ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ ΡΠ°Π±ΠΎΡΡ.
ΠΠ²ΡΠΎΡ: ΠΠ°Π»Π΅ΡΠΈΠΉ Π¨Π°Π³ΡΡ, teacher assistance Π½Π° ΠΊΡΡΡΠ΅ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python
ΠΡΡΠΎΠΊΠ°Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ
ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ
ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΠ΅
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΊΠΈΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ
ΠΎΡΠΎΡΠΈΠΉ ΠΊΠΎΠ΄?
ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡ, ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΠΈΠ· ΡΡΠΈΡ
ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈΠ»ΠΈ ΡΠ½ΠΈΠ·ΠΈΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
. ΠΠ΅Π±ΡΠ΅ΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅ΡΡΡΡ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π°ΠΏΡΡΠΌΡΡ Π²Π»ΠΈΡΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π°Π³Π°, Π²Π΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ Π·Π°Π½ΠΎΠ²ΠΎ Π²Π½ΠΈΠΊΠ°ΡΡ Π² ΠΊΠΎΠ΄. ΠΠ°ΠΆΠ΅ ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ ΠΊΠ°ΠΊ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΠΈΠ»ΡΠ½ΠΎ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
ΠΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΆΠ½ΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ½ΡΡΡΠ΅ Π² ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Π΅Π΄Π΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ (Π²Π½ΡΡΡΠΈΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅) ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΡΠΈΠ»Ρ. ΠΡΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ «ΡΠ°Π·Π½ΠΎΡΡΠ΅Π½ΠΈΠΉ» ΡΡΠ΅Π΄ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°ΡΡΠ°Ρ Π½Π° ΠΈΡ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π²ΡΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π»ΠΎΠΆΠΈΡΡΡ Π½Π° ΠΏΠ»Π΅ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΡΠ΅ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ. Π ΡΠ°ΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python ΠΌΡ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
ΠΠ΅ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Python, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ»ΠΎΠ²Π½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π΅ Π³ΡΡΠΏΠΏΡ ΠΏΠΎ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ΅ΡΠ²Π°Ρ Π³ΡΡΠΏΠΏΠ° ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΠΏΠ΅ΡΠ΅ΠΊΠ»Π°Π΄ΡΠ²Π°Ρ Π·Π°Π΄Π°ΡΡ ΠΏΠΎ ΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°. ΠΡΠΎΡΠ°Ρ β ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π½ΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
Π ΠΏΠ΅ΡΠ²Π°Ρ, ΠΈ Π²ΡΠΎΡΠ°Ρ Π³ΡΡΠΏΠΏΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ·ΠΊΠΎΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π·Π°Π΄Π°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° docstring ΠΈΠ»ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠΎΠ²), ΡΠ°ΠΊ ΠΈ Π±ΠΎΠ³Π°ΡΡΠ΅ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠΈΠ΅ Π² ΡΠ΅Π±Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ. Π‘ΡΠ΅Π΄ΡΡΠ²Π° Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΏΡΠΈΠ½ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ Π»ΠΈΠ½ΡΠ΅ΡΠ°ΠΌΠΈ (linter). ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡ lint β ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π΄Π»Ρ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘ΠΈ ΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ°Π²ΡΠ΅Π³ΠΎ Π½Π°ΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠΎΡΠΎΠΉ Π³ΡΡΠΏΠΏΡ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°ΠΌΠΈ (formatter).
ΠΠ°ΠΆΠ΅ ΠΏΡΠΈ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΠΎΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΡΡΠΈΡ Π³ΡΡΠΏΠΏ Π²ΠΈΠ΄Π½Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌΠΈ. ΠΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π»ΠΈΠ½ΡΠ΅ΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Ρ ΠΎΠ³Π»ΡΠ΄ΠΊΠΎΠΉ, Π΄Π°Π±Ρ ΠΏΠΎΠ·ΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. Π Π²ΠΎ Π²ΡΠΎΡΡΡ , ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ β ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ΅Π±ΡΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ. Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ, Π½Π°ΠΏΡΠΎΡΠΈΠ², Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΎΡΡΠ°Π²Π»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ.
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²Β Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python
Π§Π°ΡΡΡ 1
Π§Π°ΡΡΡ 2
Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΡΡΠ΅ Π² ΡΡΠ°ΡΡΠ΅ ΠΈ ΠΎΠ±ΡΠΈΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΎΠ±Π·ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ΅ΡΡΠΈΡ Python: Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π² ΡΡΠ°ΡΡΠ΅, Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΠΎΠ±Π·ΠΎΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½Π° ΠΈ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° pip.
$ python3.6 -m pip install --upgrade <package_name>
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈΠΌΠ΅ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² linux ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ git. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΠ· ΡΡΠ°ΡΡΠΈ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pip.
ΠΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ : ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ, ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΎΠΊ. Π ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΡΠΈΠ»Ρ (Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΎΡΡΡΡΠΏΡ, Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ), ΠΊΠΎ Π²ΡΠΎΡΠΎΠΌΡ β ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΡ, Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°). Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ ΠΎΡΠΈΠ±ΠΎΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ β ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΠΊΠΎΠ΄Π΅ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈΠ»ΠΈ Π²ΡΡΠΎΠΊΠ°Ρ ΡΠΈΠΊΠ»ΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ.
Π’Π΅ΡΡΠΎΠ²ΡΠΉ ΡΠΊΡΠΈΠΏΡ: Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΈΠΉ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΡΠ°ΠΉΠ» example.py. ΠΡ ΡΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΡΠ°Π»ΠΈ Π΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌ ΠΏΠΎ Π½Π°Π»ΠΈΡΠΈΡ Π² Π½Π΅ΠΌ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡΡΠΈΠ½Π³ΠΎΠ² Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠ»ΡΠ½ΠΎ βΡΠ°Π·Π΄ΡΠ»ΠΎβ Π±Ρ ΡΡΠ°ΡΡΡ. ΠΠΎ-Π²ΡΠΎΡΡΡ , Ρ Π½Π°Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ΅Π»ΠΈ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² βΠΎΡΠ»ΠΎΠ²Π΅β ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΠΈΠ»ΠΈΡ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° example.py:
import os import notexistmodule def Function(num,num_two): return num class MyClass: """class MyClass """ def __init__(self,var): self.var=var def out(var): print(var) if __name__ == "__main__": my_class = MyClass("var") my_class.out("var") notexistmodule.func(5)
Π ΠΊΠΎΠ΄Π΅ Π΄ΠΎΠΏΡΡΠ΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ:
- ΠΈΠΌΠΏΠΎΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ os,
- ΠΈΠΌΠΏΠΎΡΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ notexistmodule,
- ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡΠΊΠ²Ρ,
- Π»ΠΈΡΠ½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ,
- ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ self ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΊΠ»Π°ΡΡΠ°,
- Π½Π΅Π²Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ ΡΡΠΈΠ»ΡΠΌ: Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΠ΅ΠΌΠΎΠΉ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ ΡΡΠΈΠ»Ρ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Python PEP8 ΠΈ PEP257. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²Π½ΡΡΡΠΈΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Google Python Style Guide β https://github.com/google/styleguide/blob/gh-pages/pyguide.md
Pycodestyle
Pycodestyle β ΠΏΡΠΎΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° Π΄Π»ΡΒ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ PEP8. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠ°ΡΠ΅ΠΉΡΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΊΠΎΠ΄Π°, Π΄ΠΎ 2016 Π³ΠΎΠ΄Π° Π½ΠΎΡΠΈΠ» Π½Π°Π·Π²Π°Π½ΠΈΠ΅ pep8, Π½ΠΎ Π±ΡΠ» ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ ΠΏΠΎ ΠΏΡΠΎΡΡΠ±Π΅ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΡΠ·ΡΠΊΠ° Python ΠΠ²ΠΈΠ΄ΠΎ Π²Π°Π½ Π ΠΎΡΡΡΠΌΠ°.
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅:
$ python3 -m pycodestyle example.py example.py:4:1: E302 expected 2 blank lines, found 1 example.py:4:17: E231 missing whitespace after ',' example.py:7:1: E302 expected 2 blank lines, found 1 example.py:10:22: E231 missing whitespace after ',' example.py:11:17: E225 missing whitespace around operator
ΠΠ°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π°ΠΌ ΡΡΡΠΎΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ , ΠΏΠΎ ΠΌΠ½Π΅Π½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, Π΅ΡΡΡ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ PEP8. Π€ΠΎΡΠΌΠ°Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠΎΡΡ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
<ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°>: <Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ> :<ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π°>: <ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΡΠΎΡΠΊΠ°Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ>
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ: Π½Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π»ΠΈΠ½Ρ docstring. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅Π»ΡΠ·Ρ Π½Π°Π·Π²Π°ΡΡ βΡΠΏΠ°ΡΡΠ°Π½ΡΠΊΠΈΠΌβ, ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠ°ΠΏΡΡΠΊ Ρ ΠΊΠ»ΡΡΠΎΠΌ —statistics -qq Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΏΠΎ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ:
$ python3 -m pycodestyle --statistics -qq example.py 1 E225 missing whitespace around operator 2 E231 missing whitespace after ',' 2 E302 expected 2 blank lines, found 1
ΠΠΎΠ»Π΅Π΅ Π½Π°Π³Π»ΡΠ΄Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»ΡΡΠ° —show-source. ΠΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½Π° ΡΡΡΠΎΠΊΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°.
$ python3 -m pycodestyle --show-source example.py example.py:4:1: E302 expected 2 blank lines, found 1 def Function(num,num_two): ^ example.py:4:17: E231 missing whitespace after ',' def Function(num,num_two): ^ example.py:7:1: E302 expected 2 blank lines, found 1 class MyClass: ^ example.py:10:22: E231 missing whitespace after ',' def __init__(self,var): ^ example.py:11:17: E225 missing whitespace around operator self.var=var ^
ΠΡΠ»ΠΈ Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ PEP8 Π±ΡΠ»ΠΈ Π½Π°ΡΡΡΠ΅Π½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ»ΡΡ — show-pep8. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Ρ Π²ΡΠ΄Π΅ΡΠΆΠΊΠ°ΠΌΠΈ ΠΈΠ· PEP8 Π΄Π»Ρ ΡΠ»ΡΡΠ°Π΅Π² Π½Π°ΡΡΡΠ΅Π½ΠΈΠΉ. ΠΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π²Π½ΡΡΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ. Pycodestyle ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Pydocstyle
Π£ΡΠΈΠ»ΠΈΡΡ pydocstyle ΠΌΡ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Π² ΡΡΠ°ΡΡΠ΅ Π Π°Π±ΠΎΡΠ° Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ Π² Python: ΠΏΠΎΠΈΡΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ. Pydocstyle ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ docstring Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠ»Π°ΡΡΠΎΠ², ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ PEP257.
$ python3 -m pydocstyle example.py example.py:1 at module level: D100: Missing docstring in public module example.py:4 in public function `Function`: D103: Missing docstring in public function example.py:7 in public class `MyClass`: D400: First line should end with a period (not 's') example.py:7 in public class `MyClass`: D210: No whitespaces allowed surrounding docstring text example.py:10 in public method `__init__`: D107: Missing docstring in __init__ example.py:13 in public method `out`: D102: Missing docstring in public method
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ· Π»ΠΈΡΡΠΈΠ½Π³Π°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΊΠ°Π·Π°Π»Π° Π½Π°ΠΌ Π½Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ Π² docstring ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ²ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΠΌ, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠΈ —explain ΠΈ —source ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» pydocstyle ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ Π²ΡΡΠ΅ Π΄Π»Ρ pycodestyle, ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΊΠ°ΡΠ°ΡΡΡΡ Π»ΠΈΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΊΠ»ΡΡΠ΅ΠΉ.
Pyflakes
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²Β Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python pyflakes Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΡΡΠΈΠ»Ρ. Π¦Π΅Π»Ρ ΡΡΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΊΠΎΠ΄Π° β ΠΏΠΎΠΈΡΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΎΡΠΈΠ±ΠΎΠΊ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ pyflakes ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠΏΠΎΡ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΡ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ», ΠΎΠ½Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ c ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π±ΡΡΡΡΠΎ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠΈΠ»ΡΠ½ΠΎ ΡΡΠΆΠ°Π΅Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ pyflakes β βΠ½ΡΠ»Π΅Π²Π°Ρβ, Π²ΡΠ΅ ΡΡΠΎ ΠΎΠ½ ΡΠΌΠ΅Π΅Ρ Π΄Π΅Π»Π°ΡΡ β ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π°Π½Π°Π»ΠΈΠ·Π° Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ:
$ python3 -m pyflakes example.py example.py:1: 'os' imported but unused
Π Π½Π°ΡΠ΅ΠΌ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ ΡΠΊΡΠΈΠΏΡΠ΅, ΠΎΠ½ Π½Π°ΡΠ΅Π» ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠΏΠΎΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ os. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ Π΅ΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Python ΡΠ°ΠΉΠ»Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ°Π½Π½Π°Ρ ΡΡΠΈΠ»ΠΈΡΠ° ΠΈΠΌΠ΅Π΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ β Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΎΠ±Π΅ Π²Π΅ΡΡΠΈΠΈ Python, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Π΅ΡΡΠΈΠΉ.
Pylint
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΡΠΈΠ»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ Π»ΠΈΠ±ΠΎ ΡΡΠΈΠ»ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΡ , Π»ΠΈΠ±ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ Π² ΠΎΠ±Π·ΠΎΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΒ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python β Pylint, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠ» Π² ΡΠ΅Π±Π΅ ΠΎΠ±Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΡΠΎΡ ΠΌΠΎΡΠ½ΡΠΉ, Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΒ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΈ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ΠΌ ΠΎΡΡΠ΅ΡΠΎΠ². ΠΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ βΠΏΡΠΈΠ΄ΠΈΡΡΠΈΠ²ΡΡ β ΠΈ βΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½ΡΡ β Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΊΠΎΠ΄Π°. ΠΠ½Π°Π»ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° Π²ΡΠ΄Π°Π΅Ρ Π²Π΅ΡΡΠΌΠ° ΠΎΠ±ΡΠΈΡΠ½ΡΠΉ ΠΎΡΡΠ΅Ρ, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ Π² Ρ ΠΎΠ΄Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅Π΄ΠΎΡΠ΅ΡΠΎΠ², ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΡΠ΅ΡΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π±Π»ΠΈΡ, ΠΈ ΠΎΠ±ΡΠ΅ΠΉ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΊΠΎΠ΄Π°:
$ python3.6 -m pylint --reports=y text example.py ************* Module text /home/ququshka77/.local/lib/python3.6/site-packages/pylint/reporters/text.py:79:22: W0212: Access to a protected member _splitstrip of a client class (protected-access) ************* Module example example.py:4:16: C0326: Exactly one space required after comma def Function(num,num_two): ^ (bad-whitespace) example.py:10:21: C0326: Exactly one space required after comma def __init__(self,var): ^ (bad-whitespace) example.py:11:16: C0326: Exactly one space required around assignment self.var=var ^ (bad-whitespace) example.py:1:0: C0111: Missing module docstring (missing-docstring) example.py:2:0: E0401: Unable to import 'notexistmodule' (import-error) example.py:4:0: C0103: Function name "Function" doesn't conform to snake_case naming style (invalid-name) example.py:4:0: C0111: Missing function docstring (missing-docstring) example.py:4:17: W0613: Unused argument 'num_two' (unused-argument) example.py:13:4: C0111: Missing method docstring (missing-docstring) example.py:13:4: E0213: Method should have "self" as first argument (no-self-argument) example.py:7:0: R0903: Too few public methods (1/2) (too-few-public-methods) example.py:18:4: C0103: Constant name "my_class" doesn't conform to UPPER_CASE naming style (invalid-name) example.py:19:4: E1121: Too many positional arguments for method call (too-many-function-args) example.py:1:0: W0611: Unused import os (unused-import) Report ====== 112 statements analysed. Statistics by type +----------+----------+---------------+-------------+-------------------+---------------+ |type |number |old number |difference |%documented |%badname | +======+======+========+========+===========+========+ |module |2 |2 |= |50.00 |0.00 | +-----------+----------+---------------+-------------+-------------------+---------------+ |class |5 |5 |= |100.00 |0.00 | +-----------+----------+---------------+-------------+-------------------+---------------+ |method |11 |11 |= |90.91 |0.00 | +-----------+----------+---------------+-------------+-------------------+---------------+ |function |4 |4 |= |75.00 |25.00 | +-----------+----------+---------------+-------------+-------------------+---------------+ External dependencies :: pylint \-interfaces (text) \-reporters (text) | \-ureports | \-text_writer (text) \-utils (text) Raw metrics +-------------+----------+-------+-----------+-------------+ |type |number |% |previous |difference | +=======+======+=====+=====+========+ |code |128 |48.30 |128 |= | +-------------+----------+--------+-----------+------------+ |docstring |84 |31.70 |84 |= | +-------------+----------+--------+-----------+------------+ |comment |16 |6.04 |16 |= | +-------------+----------+--------+-----------+------------+ |empty |37 |13.96 |37 |= | +-------------+----------+--------+-----------+------------+ Duplication +-------------------------------+------+------------+-------------+ | |now |previous |difference | +=================+=====+======+========+ |nb duplicated lines |0 |0 |= | +-------------------------------+-------+------------+------------+ |percent duplicated lines |0.000 |0.000 |= | +-------------------------------+-------+------------+------------+ Messages by category +--------------+----------+-----------+-------------+ |type |number |previous |difference | +========+======+======+========+ |convention |8 |8 |= | +--------------+----------+-----------+-------------+ |refactor |1 |1 |= | +--------------+-----------+----------+-------------+ |warning |3 |3 |= | +--------------+-----------+----------+-------------+ |error |3 |3 |= | +--------------+-----------+----------+-------------+ % errors / warnings by module +-----------+--------+-----------+----------+--------------+ |module |error |warning |refactor |convention | +======+=====+======+======+========+ |example |100.00 |66.67 |100.00 |100.00 | +-----------+---------+----------+-----------+-------------+ |text |0.00 |33.33 |0.00 |0.00 | +-----------+---------+----------+-----------+-------------+ Messages +-----------------------------+----------------+ |message id |occurrences | +=================+=========+ |missing-docstring |3 | +-----------------------------+----------------+ |bad-whitespace |3 | +------------------------------+---------------+ |invalid-name |2 | +------------------------------+---------------+ |unused-import |1 | +------------------------------+---------------+ |unused-argument |1 | +------------------------------+---------------+ |too-many-function-args |1 | +------------------------------+---------------+ |too-few-public-methods |1 | +------------------------------+---------------+ |protected-access |1 | +------------------------------+---------------+ |no-self-argument |1 | +------------------------------+---------------+ |import-error |1 | +------------------------------+---------------+ ------------------------------------------------------------------------------------------ Your code has been rated at 7.59/10 (previous run: 7.59/10, +0.00)
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΡ ΠΌΠ΅ΡΡ Π² ΠΊΠΎΠ΄Π΅:
[R]efactor β ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³,
[C]onvention β Π½Π°ΡΡΡΠ΅Π½ΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡΠΈΠΊΠ΅ ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌ,
[W]arning β ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°,
[E]rror β ΠΎΡΠΈΠ±ΠΊΠ°,
[F]atal β ΠΎΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΡΠ΅Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΡΡΠ΅ΡΠ° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠ»ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ —reports=y.
ΠΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ rcfile. ΠΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ β https://pylint.readthedocs.io/en/latest/index.html#, ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π»ΠΈΡΡ Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
, Ρ Π½Π°ΡΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ
ΡΡΠΈΠ»ΠΈΡΡ:
β ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ°ΠΉΠ»Π° Π½Π°ΡΡΡΠΎΠ΅ΠΊ (—generate-rcfile). ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» Ρ Π½ΡΠ»Ρ. Π ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΌ rcfile ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π²ΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΠΊ Π½ΠΈΠΌ, Π²Π°ΠΌ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ΄ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ.
β ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΊΠΎΠ΄Π΅. ΠΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ, Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° example.py Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΡΠΎΠΊΡ:
# pylint: disable=unused-argument
ΠΈ Π·Π°ΠΏΡΡΡΠΈΠΌ pylint. ΠΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ βΠΈΡΡΠ΅Π·Π»ΠΎβ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
example.py:4:17: W0613: Unused argument 'num_two' (unused-argument)
β Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡΡΠ΅ΡΠΎΠ² Π² ΡΠΎΡΠΌΠ°ΡΠ΅ json (—output-format=json). ΠΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°Π±ΠΎΡΡ Π»ΠΈΠ½ΡΠ΅ΡΠ°. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ .
β ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ (-j 4). ΠΠ°ΠΏΡΡΠΊ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅ΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
β ΠΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΡΠ·ΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΊΠ»ΡΡΠΎΠΌ —help-msg=<key> Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠΏΡΠ°Π²ΠΊΡ ΠΏΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΌΡ ΡΠ»ΠΎΠ²Ρ key. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: E0401) ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: import-error). ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π»ΠΈΡΡΠΈΠ½Π³ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΡ import-error:
$ python3.6 -m pylint --help-msg=import-error :import-error (E0401): *Unable to import %s* Used when pylint has been unable to import a module. This message belongs to the imports checker.
β Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈ ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ.
β ΠΠ»Π°Π³ΠΈΠ½Ρ β ΠΎΡΠ»ΠΈΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ pylint. ΠΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ Π² ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° pylint Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ΄ ΠΈ Π΅ΡΡΡ βΠ»ΠΎΠΆΠ½ΡΠ΅β ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².
Vulture
Vulture β Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΡΡΠΈΠ»ΠΈΡΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° βΠΌΠ΅ΡΡΠ²ΠΎΠ³ΠΎβ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Python. ΠΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ast ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ΅Π²ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΠ°Π»Π΅Π΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠΈΡΠΊ Π²ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. Vulture ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² Π±ΠΎΠ»ΡΡΠΈΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠΎΠ΄Π°Ρ .
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ
ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ ΠΎΠ± ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Python. ΠΡΠ΄ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π»ΠΈΠ½ΡΠ΅ΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡΡ ΡΡΠΈΠ»ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
ΠΡΠ΅ ΡΡΠ°ΡΡΠΈ ΠΏΠΎ Python
10 ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° ΠΊΠΎΠ΄Π° Π½Π° Python / Π₯Π°Π±Ρ
Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Python ΠΊΠΎΠ΄ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½Π΅Π΅ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½Π΅Π΅
Python β ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² Π½Π°ΡΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ , ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ΅, Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΎΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±Π»Π°ΡΡΡΡ . ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° Π΅Π³ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ β Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΎΠ΄Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΠΈ ΠΎΠΏΡΡΠ½ΡΡ Python ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Π±Ρ Ρ ΠΎΡΠ΅Π» ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±Π·ΠΎΡ 10 Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΈ Π²Π·ΡΡΡ Π½Π° Π²ΠΎΠΎΡΡΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° ΠΊΠΎΠ΄Π° Π½Π° Python.
1. ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ (ΠΏΡΠΈΠΌ. ΠΏΠ΅Ρ.: Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ) ΡΠΏΠΈΡΠΊΠΎΠ², ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²
ΠΡΡΡ ΡΡΠΈ ΡΠΈΠΏΠΈΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ (ΠΏΡΠΈΠΌ. ΠΏΠ΅Ρ.: ΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΡΡ ) ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ Π² Python: ΡΠΏΠΈΡΠΊΠΈ, ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°. ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΈΠΊΠ»ΠΎΠΌ for, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π° Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ± β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: [Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ for x in ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ_ΠΎΠ±ΡΠ΅ΠΊΡ if ΡΡΠ»ΠΎΠ²ΠΈΠ΅]. Π‘Π»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°ΡΡΡ Ρ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
>>> # ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΡΠΈΡΠ΅Π»
>>> numbers = list(range(5))
>>> print(numbers)
[0, 1, 2, 3, 4]
>>>
>>> # ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
>>> squares0 = []
>>> for number in numbers:
... if number%2 == 0:
... squares0.append(number*number)
...
>>> print(squares0)
[0, 4, 16]
>>>
>>> # Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ±:
>>> squares1 = [x*x for x in numbers if x%2 == 0]
>>> print(squares1)
[0, 4, 16]
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°
ΠΠΎΠΌΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ², ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°ΠΌ Β«Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡΒ» ΠΈ Β«Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°Β». ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ: {Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_ΠΊΠ»ΡΡΠ°: Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅_Π·Π½Π°ΡΠ΅Π½ΠΈΡ for ΡΠ»Π΅ΠΌΠ΅Π½Ρ in ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ_ΠΎΠ±ΡΠ΅ΠΊΡ}, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° β {Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ for ΡΠ»Π΅ΠΌΠ΅Π½Ρ in ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ_ΠΎΠ±ΡΠ΅ΠΊΡ}. ΠΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
>>> # ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ
>>> {x: x*x for x in range(5)}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
>>>
>>> # ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°
>>> {x*x for x in range(5)}
{0, 1, 4, 9, 16}
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°
2. F-ΡΡΡΠΎΠΊΠΈ
Π‘ΡΡΠΎΠΊΠΈ β ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΡΡΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π³ β ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ . ΠΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡΠΈΠ»Π΅ ΡΠ·ΡΠΊΠ° C, ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° %, Π»ΠΈΠ±ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ format, ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΡΡΠΎΠΊΠΈ Π² Python.
ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½Π΅Π΄Π°Π²Π½ΠΈΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² Python Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ. ΠΠ½ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ Β«f-ΡΡΡΠΎΠΊΠΈΒ», ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»ΡΒ» β Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΠΈ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΡΠ°Π·Π½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
>>> # ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ
>>> usd_to_eur = 0.89
>>>
>>> # ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
>>> print('1 USD = {rate:.2f} EUR'.format(rate=usd_to_eur))
1 USD = 0.89 EUR
>>> print('1 USD = %.2f EUR' % usd_to_eur)
1 USD = 0.89 EUR
>>>
>>> # Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ±:
>>> print(f'1 USD = {usd_to_eur:.2f} EUR')
1 USD = 0.89 EUR
F-ΡΡΡΠΎΠΊΠΈ
ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ f-ΡΡΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΡΡΠ½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΡΡΠΈΠ»ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΡΡΠΈΠ»Π΅ C ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ str.format. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ f-ΡΡΡΠΎΠΊΠ°Ρ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π² ΠΌΠΎΠ΅ΠΉ Π½Π΅Π΄Π°Π²Π½Π΅ΠΉ ΡΡΠ°ΡΡΠ΅.
3. ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ β ΡΡΡΠΎΡΠ²ΡΠ°ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΏΡΡΠ°Π½ΠΈΡΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΡΠ·Π°Π½Ρ ΠΏΠΎ ΡΠΌΡΡΠ»Ρ. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ, ΡΠΎ Ρ Π±Ρ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π΄Π΅Π»Π°ΡΡ ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³:
>>> # ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
>>> code = 404
>>> message = "Not Found"
>>>
>>> # Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ±:
>>> code, message = 404, "Not Found"
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅
ΠΠ° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° Ρ ΠΏΡΠ°Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΈ Π΅Π³ΠΎ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ Ρ Π»Π΅Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆ. ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ.
>>> # ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΆ
>>> http_response = (404, "Not Found")
>>> code, message = http_response
>>> print(f'code: {code}; message: {message}')
code: 404; message: Not Found
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ°
4. Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Ρ Π»ΠΎΠ²ΡΡΠΊΠ°ΠΌΠΈ
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΡΡΠ΅ΠΆΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π»ΠΎΠ²ΡΡΠ΅ΠΊ (ΠΏΡΠΈΠΌ. ΠΏΠ΅Ρ.: Π°Π½Π³Π». catch-all method β ΠΏΠΎΠ΄ Π»ΠΎΠ²ΡΡΠΊΠΎΠΉ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ-Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠΎΠΉ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ/Π·Π°Ρ Π²Π°ΡΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΡΠΈ Π΅Π³ΠΎ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅, Ρ. Π΅. ΡΡΠΎ Π½Π΅ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΠΉ ΡΠ΅ΡΠΌΠΈΠ½, Ρ. ΠΊ. ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΠΎΠ³ΠΎ Π½Π΅ Π½Π°ΡΠ΅Π», Π½ΠΎ ΡΡΠΎ Π»ΡΡΡΠ΅Π΅, ΡΡΠΎ ΠΏΡΠΈΡΠ»ΠΎ Π½Π° ΡΠΌ). Π ΠΈΠΌΠ΅Π½Π½ΠΎ β Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π½ΠΎ Π½Π΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, Π±ΡΠ΄ΡΡ Π·Π°Ρ Π²Π°ΡΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ-Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠΎΠΉ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, Π½Π΅Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Π·ΠΎΠ², ΡΡΠΎ ΡΡΠ΅Π²Π°ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ.
>>> # ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΆ Π΄Π»Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ
>>> numbers = tuple(range(8))
>>> numbers
(0, 1, 2, 3, 4, 5, 6, 7)
>>>
>>> # ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
>>> first_number0 = numbers[0]
>>> middle_numbers0 = numbers[1:-1]
>>> last_number0 = numbers[-1]
>>>
>>> # Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ±:
>>> first_number1, *middle_numbers1, last_number1 = numbers
>>>
>>> # ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ
>>> print(first_number0 == first_number1)
True
>>> print(middle_numbers0 == middle_numbers1)
False
>>> print(last_number0 == last_number1)
True
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Ρ Π»ΠΎΠ²ΡΡΠΊΠ°ΠΌΠΈ
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ middle_numbers0 ΠΈ middle_numbers1 Π½Π΅ ΡΠ°Π²Π½Ρ. ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Ρ Π»ΠΎΠ²ΡΡΠΊΠ°ΠΌΠΈ (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠΈ) ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΏΠΈΡΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ Π±ΡΠ» ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΡΡΠ΅ΠΆΠ°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
>>> # ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π² ΠΊΠΎΡΡΠ΅ΠΆ
>>> print(middle_numbers0 == tuple(middle_numbers1))
True
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ-Π»ΠΎΠ²ΡΡΠΊΠΈ
5. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ
Π Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌ ΠΊΠ°ΠΊ Β«ΠΌΠΎΡΠΆΠΎΠ²ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅Β», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Β«ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ-ΠΌΠΎΡΠΆΒ» :=, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΌΠΎΡΠΆΠ° Ρ ΠΏΠ°ΡΠΎΠΉ Π³Π»Π°Π· ΠΈ Π±ΠΈΠ²Π½ΡΠΌΠΈ, Π½Π΅ ΠΏΡΠ°Π²Π΄Π° Π»ΠΈ? ΠΠ°ΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ· Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ, Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π²ΡΡΠΈΡ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎ, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°:
>>> # ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
>>> def get_account(social_security_number):
... pass
...
>>> def withdraw_money(account_number):
... pass
...
>>> def found_no_account():
... pass
...
>>> # ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
>>> account_number = get_account("123-45-6789")
>>> if account_number:
... withdraw_money(account_number)
... else:
... found_no_account()
...
>>> # Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ±:
>>> if account_number := get_account("123-45-6789"):
... withdraw_money(account_number)
... else:
... found_no_account()
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, Π½Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠΌΠ΅Ρ ΡΡΠ΅ΡΠ°, Π° ΠΏΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ½ΡΡΠΈΡ Π΄Π΅Π½Π΅Π³ (ΠΏΡΠΈΠΌ. ΠΏΠ΅Ρ.: ΡΡΠ½ΠΊΡΠΈΡ withdraw_money), ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Π ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠΌΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±Ρ ΡΡΠ°Π»ΠΈ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π΅ ΡΠ°ΠΊ Π²Π°ΠΆΠ½Π°, Π½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π½ΡΠΌ Π½Π°ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ β ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ account_number Π°ΠΊΡΡΠ°Π»ΡΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΠΏΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Swift, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π² ΡΡΠ»ΠΎΠ²Π½ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΠ΅Ρ Π½ΠΈΠΊΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ (ΠΏΡΠΈΠΌ. ΠΏΠ΅Ρ.: ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ Π±ΠΈΠ½Π΄ΠΈΠ½Π³), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅. ΠΠΎ ΡΡΡΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ accountNumber, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΠ΄ΡΡΠ΅ΠΉ Π΄Π°Π»Π΅Π΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, ΠΈ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ.
if let accountNumber = getAccount("123-45-6789") {
withdrawMoney(accountNumber)
} else {
foundNoAccount()
}
ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅
6. ΠΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ enumerate
ΠΠΎΡΡΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½Π°ΠΌ Π½Π΅ΠΌΠΈΠ½ΡΠ΅ΠΌΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ Π½Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅, ΠΊΠΎΡΡΠ΅ΠΆΠ΅ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΎΠΌ ΡΠΈΠΏΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ±ΠΈΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΊΠ»Π° for. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΎΡΠΌΡ: for ΡΠ»Π΅ΠΌΠ΅Π½Ρ in ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ_ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π°, Π»ΡΡΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ enumerate, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π»Ρ Π½Π°Ρ ΡΡΠ΅ΡΡΠΈΠΊ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ°.
>>> # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
>>> students = ['John', 'Jack', 'Jennifer', 'June']
>>>
>>> # ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
>>> for i in range(len(students)):
... student = students[i]
... print(f"# {i+1}: {student}")
...
# 1: John
# 2: Jack
# 3: Jennifer
# 4: June
>>>
>>> # Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ±:
>>> for i, student in enumerate(students, 1):
... print(f"# {i}: {student}")
...
# 1: John
# 2: Jack
# 3: Jennifer
# 4: June
ΠΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ enumerate
7. Π‘Π²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ zip/zip_longest
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π° ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΠΈ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ±ΡΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΈΡ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π² Python Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ zip, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, ΡΠ΅Π³ΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π΄ΠΎΠ±ΠΈΡΡΡΡ. Π ΡΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠ½ΠΊΡΠΈΡ zip ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠΉ ΠΆΠ΅ Π΄Π»ΠΈΠ½Ρ, ΡΡΠΎ ΠΈ Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
>>> # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π²Π° ΡΠΏΠΈΡΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ zip
>>> students = ['John', 'Mike', 'Sam', 'David', 'Danny']
>>> grades = [95, 90, 98, 97]
>>>
>>> # ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
>>> grade_tracking0 = {}
>>> for i in range(min(len(students), len(grades))):
... grade_tracking0[students[i]] = grades[i]
...
>>> print(grade_tracking0)
{'John': 95, 'Mike': 90, 'Sam': 98, 'David': 97}
>>>
>>> # ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±:
>>> grade_tracking1 = dict(zip(students, grades))
>>> print(grade_tracking1)
{'John': 95, 'Mike': 90, 'Sam': 98, 'David': 97}
>>>
>>> from itertools import zip_longest
>>> grade_tracking2 = dict(zip_longest(students, grades))
>>> print(grade_tracking2)
{'John': 95, 'Mike': 90, 'Sam': 98, 'David': 97, 'Danny': None}
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ zip Ρ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ
Π€ΡΠ½ΠΊΡΠΈΡ zip ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ β ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° zip, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΆ, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ zip ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅Ρ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠ°ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. Π ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠΌΡ, ΡΡΠ½ΠΊΡΠΈΡ zip_longest Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° dict, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° dict. ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° zip ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
>>> for student, grade in zip(students, grades):
... print(f"{student}: {grade}")
...
John: 95
Mike: 90
Sam: 98
David: 97
ΠΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ zip
8. ΠΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ (ΠΏΡΠΈΠΌ. ΠΏΠ΅Ρ.: ΡΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅) ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ zip Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²? ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ Π΄Π²ΡΠΌ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΊΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ chain. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
>>> # ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
>>> from itertools import chain
>>> group0 = ['Jack', 'John', 'David']
>>> group1 = ['Ann', 'Bill', 'Cathy']
>>>
>>> def present_project(student):
... pass
...
>>> # ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
>>> for group in [group0, group1]:
... for student in group:
... present_project(student)
...
>>> for student in group0 + group1:
... present_project(student)
...
>>> # Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ±:
>>> for student in chain(group0, group1):
... present_project(student)
Π‘ΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, Π½Π΅Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² β Π½Π΅ ΡΠ°ΠΌΡΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΡΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠΎΠ³ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ chain ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· ΡΠ΅Ρ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ chain Π³ΠΈΠ±ΠΊΠ°Ρ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°: ΡΠ»ΠΎΠ²Π°ΡΠΈ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°, ΡΠΏΠΈΡΠΊΠΈ, ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² zip ΠΈ map (ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ map), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΠΏΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Python.
9. Π’Π΅ΡΠ½Π°ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
Π§ΡΠΎ Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π±ΡΠ»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Ρ ΡΠ°Π·Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ? Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΡΡΠΎΠ±Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ½Π°ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ: var = Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅_Π²_ΡΠ»ΡΡΠ°Π΅_true if ΡΡΠ»ΠΎΠ²ΠΈΠ΅ else Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅_Π²_ΡΠ»ΡΡΠ°Π΅_false. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ.
>>> # ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
>>> from random import randint
>>> def got_even_number():
... return randint(1, 10) % 2 == 0
...
>>> # ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
>>> if got_even_number():
... state = "Even"
... else:
... state = "Odd"
...
>>> state = "Odd"
>>> if got_even_number():
... state = "Even"
...
>>> # Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ±:
>>> state = "Even" if got_even_number() else "Odd"
Π’Π΅ΡΠ½Π°ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
10. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ²
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΠ° Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ Π² Python, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ°ΠΊ ΡΠΈΡΠΎΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎ Π»ΠΎΠ²ΠΊΠΈΠΉ ΡΡΡΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠΏΡΠΎΡΡΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ½Π½Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅. Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²Π΅ΡΡ ΡΠ°ΠΉΠ» Π² ΡΠΏΠΈΡΠΎΠΊ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠΎΠΊΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ, Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΈΠ·ΡΠ°ΡΡ ΠΎΠ΄ΡΠ΅Ρ Π²ΡΡ ΠΏΠ°ΠΌΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π»ΡΡΡΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ β ΡΠΎΠ·Π΄Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅.
>>> # ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
>>> def process_data(row_data):
... pass
...
>>> # ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ:
>>> with open('large_file') as file:
... read_data = file.read().split("\n")
... for row_data in read_data:
... process_data(row_data)
...
>>> # Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ±:
>>> with open('large_file') as file:
... for row_data in file:
... process_data(row_data)
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΡ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ , Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π΄Π»Ρ Python ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° Π²Π΅ΡΠ΅ΠΉ Π² Python, ΠΈ ΡΠ΅ΠΌΡ, Π·Π°ΡΡΠΎΠ½ΡΡΡΠ΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ β Π»ΠΈΡΡ Π½Π΅ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠ΅ΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΡΠ΅Π» ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ Π² ΡΠ²ΠΎΠΈΡ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ . ΠΠ°Π΄Π΅ΡΡΡ, ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π° Python ΠΈ Π²Π°ΠΌ. ΠΠ°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΎΠ²Π΅Ρ β Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅Π»Π΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄Π»Ρ Python ΠΏΡΠΈΠ΅ΠΌΡ (ΠΏΡΠΈΠΌ. ΠΏΠ΅Ρ.: ΠΈΠ΄ΠΈΠΎΠΌΡ), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π΅ΡΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ»ΡΡΡΠ°ΡΡ ΡΠ²ΠΎΠΈ Π½Π°Π²ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Python.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, ΠΈ ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ ctypes / ΠΠ»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ OTUS. ΠΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ / Π₯Π°Π±Ρ
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² ΠΊΡΡΡΠ° Β«Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ PythonΒ».
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΊΠΎΠ΄ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ GNU AGPLv3.
Π― Π½Π°ΠΏΠΈΡΠ°Π» ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π² ΡΠ΅Π±Π΅ Π²ΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΠΎ ctypes. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΡ-ΡΠΎ ΠΆΠΈΠ·Π½Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Π³ΡΠ΅.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅:
- ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
- Ρtypes
- ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΠΎΠ΄ Python
- Π‘ΡΡΡΠΊΡΡΡΡ Π² Python
- ΠΡΠ·ΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Π‘
- PyPy
ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Python Π½Π° Π‘, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π² Python.
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π² Python, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ set ΠΈ dict, Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° Π‘. ΠΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π²Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡΡ Python. ΠΡΡΠ³ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ set, dict, list ΠΈ tuple ΠΎΠΏΠΈΡΠ°Π½Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ collections.
Π‘ΠΏΠΈΡΠΎΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊ ΡΠΏΠΈΡΠΊΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΠΏΠΈΡΠΎΡΠ½ΡΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
# Slow
mapped = []
for value in originallist:
mapped.append(myfunc(value))
# Faster
mapped = [myfunc(value) in originallist]
ctypes
ΠΠΎΠ΄ΡΠ»Ρ ctypes ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Π‘ ΠΈΠ· Python Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ subprocess
ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π΄ΡΡΠ³ΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈΠ· CLI.
Π’ΡΡ Π²ΡΠ΅Π³ΠΎ Π΄Π²Π΅ ΡΠ°ΡΡΠΈ: ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Π‘ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ shared object
ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
Π² ΠΊΠΎΠ΄Π΅ Π½Π° Python Π΄Π»Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡ
Ρ ΡΠΈΠΏΠ°ΠΌΠΈ Π‘.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Π±ΡΠ΄Ρ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π½Π° Python Ρ lcs.c, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΡΠ°ΠΌΡΡ Π΄Π»ΠΈΠ½Π½ΡΡ ΠΏΠΎΠ΄ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π² Π΄Π²ΡΡ ΡΠΏΠΈΡΠΊΠ°Ρ ΡΡΡΠΎΠΊ. Π― Ρ ΠΎΡΡ, ΡΡΠΎΠ±Ρ Π² Python ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
list1 = ['My', 'name', 'is', 'Sam', 'Stevens', '!']
list2 = ['My', 'name', 'is', 'Alex', 'Stevens', '.']
common = lcs(list1, list2)
print(common)
# ['My', 'name', 'is', 'Stevens']
ΠΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° Π‘ β ΡΡΠΎ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΏΠΈΡΠΊΠΈ ΡΡΡΠΎΠΊ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠΏΠΎΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠΏ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. Π― ΡΠ΅ΡΠ°Ρ ΡΡΡ Π·Π°Π΄Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ Π΄Π»ΠΈΠ½Ρ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Π‘ ΠΏΠΎΠ΄ Python
Π‘Π½Π°ΡΠ°Π»Π°, ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° Π‘ (lcs.c) ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² lcs.so
, ΡΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π² Python.
gcc -c -Wall -Werror -fpic -O3 lcs.c -o lcs.o
gcc -shared -o lcs.so lcs.o
- —Wall ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ;
- —Werror ΠΎΠ±Π΅ΡΠ½Π΅Ρ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π² ΠΎΡΠΈΠ±ΠΊΠΈ;
- —fpic ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΎΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² Python;
- —O3 ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ;
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ Π½Π°ΡΠ½Π΅ΠΌ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π° Python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» shared object.
Π‘ΡΡΡΠΊΡΡΡΡ Π² Python
ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π΄Π²Π΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π½Π° Π‘.
struct Sequence
{
char **items;
int length;
};
struct Cell
{
int index;
int length;
struct Cell *prev;
};
Π Π²ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠΈΡ ΡΡΡΡΠΊΡΡΡ Π½Π° Python.
import ctypes
class SEQUENCE(ctypes.Structure):
_fields_ = [('items', ctypes.POINTER(ctypes.c_char_p)),
('length', ctypes.c_int)]
class CELL(ctypes.Structure):
pass
CELL._fields_ = [('index', ctypes.c_int), ('length', ctypes.c_int),
('prev', ctypes.POINTER(CELL))]
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΌΠ΅ΡΠΎΠΊ:
- ΠΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ β ΡΡΠΎ ΠΊΠ»Π°ΡΡΡ, Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΠ΅ ΠΎΡ
ctypes.Structure
. - ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅
_fields_
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΡΡΠΎ (<variable-name>
,<ctypes.TYPE>
). - Π
ctypes
Π΅ΡΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΠΈΠΏΡ c_char (char) ΠΈ c_char_p (*char). - Π
ctypes
ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡPOINTER()
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΈΠΏΠ° ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ. - ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π²
CELL
, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»Ρ_fields_
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ΅Π±Ρ ΠΆΠ΅. - ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»
CELL
Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π½Π° Python, ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΈΡΠ°ΡΡ ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ, Π½ΠΎ Ρ Π½Π΅Π΅ Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π² ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅.
ΠΡΠ·ΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Π‘
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠ½Π΅ Π½ΡΠΆΠ΅Π½ Π±ΡΠ» ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Python Π² Π½ΠΎΠ²ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π½Π° Π‘. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° Π‘, ΡΡΠΎΠ±Ρ ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠ΄Π° Π½Π° Python.
def list_to_SEQUENCE(strlist: List[str]) -> SEQUENCE:
bytelist = [bytes(s, 'utf-8') for s in strlist]
arr = (ctypes.c_char_p * len(bytelist))()
arr[:] = bytelist
return SEQUENCE(arr, len(bytelist))
def lcs(s1: List[str], s2: List[str]) -> List[str]:
seq1 = list_to_SEQUENCE(s1)
seq2 = list_to_SEQUENCE(s2)
# struct Sequence *lcs(struct Sequence *s1, struct Sequence *s2)
common = lcsmodule.lcs(ctypes.byref(seq1), ctypes.byref(seq2))[0]
ret = []
for i in range(common.length):
ret.append(common.items[i].decode('utf-8'))
lcsmodule.freeSequence(common)
return ret
lcsmodule = ctypes.cdll.LoadLibrary('lcsmodule/lcs.so')
lcsmodule.lcs.restype = ctypes.POINTER(SEQUENCE)
list1 = ['My', 'name', 'is', 'Sam', 'Stevens', '!']
list2 = ['My', 'name', 'is', 'Alex', 'Stevens', '.']
common = lcs(list1, list2)
print(common)
# ['My', 'name', 'is', 'Stevens']
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅ΡΠΎΠΊ:
**char
(ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠΎΠΊ) ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ Π±Π°ΠΉΡ Π² Python.- Π
lcs.c
Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡlcs()
Ρ ΡΠΈΠ³Π½Π°ΡΡΡΠΎΠΉ struct Sequence *lcs(struct Sequence *s1, struct Sequence *s2). Π§ΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡlcsmodule.lcs.restype = ctypes.POINTER(SEQUENCE)
. - Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ·ΠΎΠ² Ρ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΡΡΡΡΠΊΡΡΡΡ Sequence, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ
ctypes.byref()
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Β«Π»Π΅Π³ΠΊΠΈΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΒ» Π½Π° Π²Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ (Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌctypes.POINTER()
). common.items
β ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ Π±Π°ΠΉΡ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡret
Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ°str
.- lcsmodule.freeSequence(common) ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΠ°ΠΌΡΡΡ, Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Ρ common. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ° (AFAIK) Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ±Π΅ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° Python β ΡΡΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Π½Π° Π‘ ΠΈ ΠΎΠ±Π΅ΡΠ½ΡΠ»ΠΈ Π² Python.
ΠΠΎΠ΅-ΡΡΠΎ Π΅ΡΠ΅: PyPy
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π‘Π°ΠΌ Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° PyPy Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ.
ΠΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ
ΠΏΡΠΎΡΡΡΡ
ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π·Π°ΠΏΡΡΠΊΠ΅ Π²Π°ΡΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΡΡΠ΅Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ PyPy, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ (just-in-time), ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΊΠΎΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΈΠΊΠ»ΠΎΠ², ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡ ΠΈΡ
Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΏΠΎΡΠ²ΡΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠΎ-ΡΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠ½Π΅ ([email protected]).
ΠΠ° ΡΡΠΎΠΌ Π²ΡΠ΅. ΠΠΎ Π²ΡΡΡΠ΅ΡΠΈ Π½Π° ΠΊΡΡΡΠ΅!
π 4 ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ Π½Π° Python, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ΄Π°ΡΡ Π² Π²Π°Ρ Π½ΠΎΠ²ΠΈΡΠΊΠ°
ΠΡΠΈΠ²Π΅Ρ! ΠΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠ°ΡΠ°, Ρ ΡΠΆΠ΅ ΡΠ΅ΡΡΡ Π»Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π½Π° Python, Π° Π΅ΡΡ ΠΏΠΈΡΡ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΠΎΠ±ΡΡΡΠ½ΡΡ ΡΠ΅ΠΎΡΠΈΡ Π΄Π»Ρ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² ΠΊΡΡΡΠ° Β«ΠΠΈΠ΄Π» Python-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΒ» ΠΎΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΡΠ°ΠΊΡΠΈΠΊΡΠΌΠ°. ΠΠΎ ΠΎΠΏΡΡΡ Π·Π½Π°Ρ, ΡΡΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Ρ ΠΎΡΠΎΡΠΎ Π·Π½Π°Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ°, Π½ΠΎ Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΡΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Ρ Python Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌΒ».
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ-Π΄ΠΆΡΠ½ΠΈΠΎΡ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ: Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄, Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ, Π½ΠΎ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠ°ΡΠΈΡΠΈΡΡΡΡ ΠΎΡ ΡΠ°ΠΊΠΈΡ Π½Π΅Π΄ΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°Π½ΠΈΠ΅ Π½ΡΠ°Π½ΡΠΎΠ² Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ Python. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ ΡΠ°ΡΡΠΌΠΎΡΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠΈ, ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
1. ΠΠΎΠ»Π°Π³Π°Π΅ΡΠ΅ΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΠΈΠΏΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Π£ Python Π΅ΡΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
def pow(number, mod=2):
pass
ΠΠ»ΠΈ ΡΠ°ΠΊ:
class Cat:
legs = 4
Π Π²Π°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΠΎΠ·Π²Π΅ΡΡΠΈ ΡΠΈΡΠ»ΠΎ (ΠΏΠΎΠΊΠ° ΡΡΠ° ΡΡΠ΅ΠΏΠ΅Π½Ρ β 2), ΠΈΠ»ΠΈ ΡΡΠΎΡΠ½ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½ΠΎΠ³ Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΡΠ°.
Π ΡΡΠΌ ΠΏΠΎΠ΄Π²ΠΎΡ
? ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ β ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΡΠΈΡΠ»Π°ΠΌΠΈ, frozen-ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ boolean-ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Ρ ΡΠΊΠ°ΠΆΠ΅ΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, list
, set
ΠΈΠ»ΠΈ dict
, ΡΠΎ Python Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠ³Π°ΡΡΡΡ, Π½ΠΎ ΠΏΡΠ΅ΠΏΠΎΠ΄Π½Π΅ΡΡΡ Π²Π°ΠΌ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ ΡΡΡΠΏΡΠΈΠ·. ΠΠΎΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²: ΠΊΠΎΡΠ° Π·Π°Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π΄ΠΎΠΌΠ°, Π° ΠΎΠ½ ΠΏΠΎΡΠ΅Π»ΠΈΠ»ΡΡ Π΅ΡΡ ΠΈ Π² ΠΎΡΠΈΡΠ΅:
class House:
cats = []
my_house = House()
office = House()
my_house.cats.append('Tom')
print(my_house.cats) # ["Tom"]
print(office.cats) # ["Tom"]
Π§Π΅ΠΌ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°? ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΎΠ±ΡΡΠ²Π»ΡΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. Π£ Π²ΡΠ΅Ρ
ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° House
Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΌΠ°ΡΡΠΈΠ² β cats
.
Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡΠ²Π°Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΠΌΠ°ΡΡ: Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎ ΡΡΠΎΠ»ΠΊΠ½ΡΡΠ΅ΡΡ Ρ Π½Π΅ΠΉ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΡΠΈΠ²ΡΠΊΠ°ΠΉΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ None
:
class House:
cats: list = None
def __init__(self):
self.cats = []
my_house = House()
office = House()
my_house.cats.append('Tom')
print(my_house.cats) # ["Tom"]
print(office.cats) # []
Π’ΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, ΠΈ Π²ΡΠ΅ ΠΊΠΎΡΡ ΠΎΡΡΠ°Π½ΡΡΡΡ Π½Π° ΡΠ²ΠΎΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ !
2. ΠΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Ρ ΠΌΠ°Π³ΠΈΠ΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π° ΡΠΎΡΠ½Π΅Π΅ β Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅, ΡΡΠΎ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π΄ΠΎΠΌΠ° ΡΠΌΠ½ΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π·Π°ΠΏΠΈΡΡΠ²Π°Π»Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π΅Ρ ΠΏΠΎΠ»Π΅ Π·ΡΠ΅Π½ΠΈΡ, Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ». ΠΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
from datetime import datetime
def create_log_entry(user, action, time=datetime.now()):
return f'{time}: {user} {action}'
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Ρ, ΡΠΏΠΎΠΊΠΎΠΉΠ½ΡΠ΅ ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΎΠ±ΠΎΠΉ, ΡΡΠ»ΠΈ Π½Π° ΡΠ°Π±ΠΎΡΡ.
Π ΡΡΠΌ ΠΏΠΎΠ΄Π²ΠΎΡ ? ΠΠ΅ΡΠ½ΡΠ²ΡΠΈΡΡ Π΄ΠΎΠΌΠΎΠΉ, Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°Π»ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°ΡΡ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅:
create_log_entry('ΠΠ»Π»Π°', 'Π²ΡΡΠ»Π° ΠΈΠ· Π΄ΠΎΠΌΠ°')
'2020-09-14 15:20:03.333333: ΠΠ»Π»Π° Π²ΡΡΠ»Π° ΠΈΠ· Π΄ΠΎΠΌΠ°'
create_log_entry('Π’ΠΎΠΌ', 'ΠΏΠΎΠΉΠΌΠ°Π» ΠΌΡΡΡ')
'2020-09-14 15:25:12.795328: Π’ΠΎΠΌ ΠΏΠΎΠΉΠΌΠ°Π» ΠΌΡΡΡ'
create_log_entry('ΠΠ΄ΠΎΡΠΈΠ°Π½Π΅Ρ', 'Π·Π°Π²Π°ΡΠΈΠ» ΠΊΠΎΡΠ΅')
'2020-09-14 15:40:33.173500: ΠΠ΄ΠΎΡΠΈΠ°Π½Π΅Ρ Π·Π°Π²Π°ΡΠΈΠ» ΠΊΠΎΡΠ΅'
create_log_entry('ΠΠ³Π΅Π½Ρ ΠΠ΅ΠΉ', 'ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ» Π½Π΅ΠΉΡΠ°Π»Π°ΠΉΠ·Π΅Ρ')
'2020-09-14 15:41:48.922357: ΠΠ³Π΅Π½Ρ ΠΠ΅ΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ» Π½Π΅ΠΉΡΠ°Π»Π°ΠΉΠ·Π΅Ρ'
Π Π΅Π°Π»ΡΠ½ΠΎΡΡΡ β Π²ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ Π² ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ:
create_log_entry('ΠΠ»Π»Π°', 'Π²ΡΡΠ»Π° ΠΈΠ· Π΄ΠΎΠΌΠ°')
'2020-09-14 15:20:00.333333: ΠΠ»Π»Π° Π²ΡΡΠ»Π° ΠΈΠ· Π΄ΠΎΠΌΠ°'
create_log_entry('Π’ΠΎΠΌ', 'ΠΏΠΎΠΉΠΌΠ°Π» ΠΌΡΡΡ')
'2020-09-14 15:20:00.333333: Π’ΠΎΠΌ ΠΏΠΎΠΉΠΌΠ°Π» ΠΌΡΡΡ'
create_log_entry('ΠΠ΄ΠΎΡΠΈΠ°Π½Π΅Ρ', 'Π·Π°Π²Π°ΡΠΈΠ» ΠΊΠΎΡΠ΅')
'2020-09-14 15:20:00.333333: ΠΠ΄ΠΎΡΠΈΠ°Π½Π΅Ρ Π·Π°Π²Π°ΡΠΈΠ» ΠΊΠΎΡΠ΅'
create_log_entry('ΠΠ³Π΅Π½Ρ ΠΠ΅ΠΉ', 'ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ» Π½Π΅ΠΉΡΠ°Π»Π°ΠΉΠ·Π΅Ρ')
'2020-09-14 15:20:00.333333: ΠΠ³Π΅Π½Ρ ΠΠ΅ΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ» Π½Π΅ΠΉΡΠ°Π»Π°ΠΉΠ·Π΅Ρ'
Π§Π΅ΠΌ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°? ΠΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ datetime.now
ΡΡΠ°Π±ΠΎΡΠ°Π» Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· β Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π²ΡΡΡΠ΅ΡΠΈΠ» ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ def create_log_entry
. Python Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠ», ΠΊΠ°ΠΊΠ°Ρ Π΄Π°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ Π±ΡΠ»ΠΈ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΠΊ Π΅Ρ ΡΠ΅ΡΠΈΡΡ? Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ΠΌΡ Π²ΡΡΠΈΡΠ»ΡΠ»ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π²Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π² ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ:
from datetime import datetime
def create_log_entry(user, action, time=None):
time = datetime.now() if time is None else time
return f'{time}: {user} {action}'
Π’Π°ΠΊ Π²Ρ Π²ΡΡ-ΡΠ°ΠΊΠΈ ΡΠ·Π½Π°Π΅ΡΠ΅, Π²ΠΎ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π’ΠΎΠΌ ΠΈ ΠΠ΄ΠΎΡΠΈΠ°Π½Π΅Ρ ΠΏΠΈΠ»ΠΈ ΠΊΠΎΡΠ΅ ΠΈ ΠΊΠΎΠ³Π΄Π° Π°Π³Π΅Π½Ρ ΠΠ΅ΠΉ Π²ΠΎΡΠ²Π°Π»ΡΡ ΠΊ Π²Π°ΠΌ Π΄ΠΎΠΌΠΎΠΉ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ Π½Π΅ΠΉΡΠ°Π»Π°ΠΉΠ·Π΅ΡΠΎΠΌ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ int ΠΈ bool ΠΊΠ°ΠΊ ΠΊΠ»ΡΡΠΈ dict
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π½Π° ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΈΠΉ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ°. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ True
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΎΡΡ ΠΊΠ°ΠΊ Β«ΠΡΠ°Π²Π΄Π°Β», False
β ΠΊΠ°ΠΊ Β«ΠΠΎΠΆΡΒ», Π° 1
ΠΈ 0
ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ ΠΊΠ°ΠΊ Β«ΠΡΡΡΒ» ΠΈ Β«ΠΠ΅ΡΒ». ΠΠ°ΡΠΈΠΊΡΠΈΡΡΠ΅ΠΌ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅:
vocabulary = {
True: "ΠΡΠ°Π²Π΄Π°",
False: "ΠΠΎΠΆΡ",
1: "ΠΡΡΡ",
0: "ΠΠ΅Ρ"
}
Π ΡΡΠΌ ΠΏΠΎΠ΄Π²ΠΎΡ ? Π ΡΡΠΎΠΌ ΡΠ»ΠΎΠ²Π°ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΠ°Π·Π½ΡΡ ΠΊΠ»ΡΡΠ°. ΠΡΠΎΠ²Π΅ΡΠΈΠΌ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ:
print(vocabulary[True]) # 'ΠΡΡΡ'
print(vocabulary[False]) # 'ΠΠ΅Ρ'
print(vocabulary[1]) # 'ΠΡΡΡ'
print(vocabulary[0]) # 'ΠΠ΅Ρ'
ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π·Π°Π³Π»ΡΠ½Π΅ΠΌ Π² ΡΠ°ΠΌ ΡΠ»ΠΎΠ²Π°ΡΡ:
print(vocabulary) # {True: 'ΠΡΡΡ', False: 'ΠΠ΅Ρ'}
ΠΠ· Π½Π΅Π³ΠΎ ΠΏΡΠΎΠΏΠ°Π»ΠΈ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°, Π° ΡΠ΅, ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΈΡΡ β Π½Π΅Π²Π΅ΡΠ½ΡΠ΅.
Π§Π΅ΠΌ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°? Π§ΡΠΎΠ±Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π΄ΡΠ΅ΠΌ, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π΄Π²Π΅ Π²Π΅ΡΠΈ: ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠ»Π°ΡΡ bool
ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ.
- ΠΠ»Π°ΡΡ
bool
, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ Π² Python 2.3, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ ΠΊΠ»Π°ΡΡΠ°int
. Π’ΠΎ Π΅ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡTrue
ΠΈFalse
β Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΄Π²Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ°bool
, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΠΎΠΉ1
ΠΈ0
. Π ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ__repr__
ΠΈ__str__
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, Π½ΠΎ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌΒ» ΠΎΠ½ΠΈ ΠΎΡΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠΈΡΡΠ°ΠΌΠΈ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠ°Π²Π½ΠΈΠ²True
ΠΈ ΡΠΈΡΠ»ΠΎ. ΠΠ½Π°Ρ ΡΡΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ boolean-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ . ΠΠΎ Ρ ΡΠ°ΠΊ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ: ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄Π·Π΅Π½Π΅ Python (Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ, Π²Π²Π΅Π΄Ρ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡimport this
), Β«ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β». ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ boolean ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² PEP-0285. - Π’Π°ΠΊΠΆΠ΅ Π²Π½ΡΡΡΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ hash-ΡΠ°Π±Π»ΠΈΡΠ°: ΡΠΎ Π΅ΡΡΡ Π²ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΠΊΠ»ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² ΡΠ»ΠΎΠ²Π°ΡΡ, ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· hash-ΡΡΠ½ΠΊΡΠΈΡ, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π³Π΄Π΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΠΈΡΠΊ ΠΈ Π²ΡΡΠ°Π²ΠΊΠ° Π΄Π°Π½Π½ΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅. ΠΡΠ»ΠΈ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠ΅ΠΉ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ Π² Python, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π·Π°Π³Π»ΡΠ½ΡΡΡ Π½Π° stackowerflow.
ΠΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
β str
.
vocabulary = {
"True": "ΠΡΠ°Π²Π΄Π°",
"False": "ΠΠΎΠΆΡ",
"1": "ΠΡΡΡ",
"0": "ΠΠ΅Ρ"
}
Hash-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, ΠΈ ΠΎΡΠ²Π΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ, β ΠΎΠ±ΡΠΈΠΉ ΡΠ·ΡΠΊ Ρ ΡΠΌΠ½ΡΠΌ Π΄ΠΎΠΌΠΎΠΌ Π²ΡΡ-ΡΠ°ΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½:
vocabulary[str(True)] # "ΠΡΠ°Π²Π΄Π°"
4. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ set Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ
Π‘ΡΠ΅Π΄ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π±ΡΡΡΠ΅Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΠΈΡΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² set
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π² list
. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ΡΠ΅Π΄ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠ΄Π°:
animals = ['cat', 'dog', 'bird', 'mouse', 'rat', 'elephant']
# <ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ΄, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ>
if 'dog' in set(animals):
# <Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ>
Π ΡΡΠΌ ΠΏΠΎΠ΄Π²ΠΎΡ ? Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°:
animals = ['cat', 'dog', 'bird', 'mouse', 'rat', 'elephant']
animals_set = set(animals)
# ΠΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ list ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ
Π² set (cΠ»ΠΎΠΆΠ½ΠΎΡΡΡ: O(n))
if 'dog' in animals_set: # ΠΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ O(1)
# <Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ>
ΠΠ΅Π· ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Π±Ρ ΠΏΠΎΠΈΡΠΊ Π½Π° Π²ΡΠΎΡΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅, Π½ΠΎ ΠΊΠΎΠ΄ Π·Π°ΡΡΠ°Π²ΠΈΠ» Π΅Π³ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΏΠΈΡΠΊΡ, Π° ΠΏΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ set
. Π ΠΈΡΠΎΠ³Π΅ Π²ΠΌΠ΅ΡΡΠΎ Π΄Π²ΡΡ
ΡΠ°Π³ΠΎΠ² ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ΅ΠΌΡ β Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡ
ΠΎΠ΄Ρ Π½Π° ΠΏΠ°ΠΌΡΡΡ!
Π§Π΅ΠΌ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°? ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ β ΡΠ°Π·Π½ΠΎΠΉ ΠΏΡΠΈΡΠΎΠ΄ΠΎΠΉ list
ΠΈ set
. ΠΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΈΠΏΠ° list
ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅ΡΡΡ ΡΡΠ°ΡΡΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΠ°ΠΌΡΡΠΈ. Π‘ΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π»ΡΠ±ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ: ΡΡΡΠΎΠΊΠΈ, ΡΠΈΡΠ»Π°, Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π° ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π±Ρ. ΠΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Ρ
ΡΠ°Π½ΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ.
Π§ΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π½ΡΠΆΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ΄ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ, ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΈΡΠΊΠΎΠΌΡΠΌ: Π½Π°ΠΉΠ΄Ρ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠ½ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠΈΡΠΊ. Π§Π΅ΠΌ Π΄Π»ΠΈΠ½Π½Π΅Π΅ ΡΠΏΠΈΡΠΎΠΊ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ. Π O-Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΡΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ O(n).
set
, ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ list
, Ρ
ΡΠ°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΈΠ½Π°ΡΠ΅. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π²ΠΎ-Π²ΡΠΎΡΡΡ
, Π² Π½ΡΠΌ Π½Π΅Π»ΡΠ·Ρ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π²-ΡΡΠ΅ΡΡΠΈΡ
, Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ Π½Π΅ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π²Π°ΠΌΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π° Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ Π΄Π»Ρ Python.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ set
ΠΈ ΠΏΡΠ°Π²Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΡΡΡΡΠ΅Π΅. ΠΡΠΏΠΎΠ»Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ x in set_y
, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Π½ΡΠΆΠ½ΠΎ Π²Π·ΡΡΡ hash-ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡ x
ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, Π΅ΡΡΡ Π»ΠΈ Π² set_y
Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ. ΠΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π½ΡΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ!
O-Π½ΠΎΡΠ°ΡΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΊΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(1): Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΠΎΠΈΡΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΠ²ΡΡΠΈΡ Π±Π°Π½Π°Π»ΡΠ½ΠΎ, Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π΅Π΅ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ ΠΌΡΠ΄ΡΠΈΡΡ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΏΠΎΠΈΡΠΊΠΎΠΌ.
animals = ['cat', 'dog', 'bird', 'mouse', 'rat', 'elephant']
if 'dog' in animals:
# <Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ>
ΠΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ Π² Π΄Π·Π΅Π½Π΅ Python, Β«ΠΏΡΠΎΡΡΠΎΠ΅ Π»ΡΡΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎΒ».
Π‘ΠΎΠ²Π΅ΡΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² Π² Python
ΠΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ°ΠΌΡΠΉ Π³Π»Π°Π²Π½ΡΠΉ ΡΠΎΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΎΠΈΡ Π΄Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°ΠΌ-Π΄ΠΆΡΠ½ΠΈΠΎΡΠ°ΠΌ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΌ ΡΠ²ΠΎΡ ΠΊΠ°ΡΡΠ΅ΡΡ Π² Python, β ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·ΡΠ±ΡΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Ρ, Π½ΠΎ ΠΈ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ Π²Π½ΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ.
Π§ΡΠΎΠ±Ρ Π½Π΅ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠΌ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Ρ ΡΠΎΠ²Π΅ΡΡΡ:
- ΠΡΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π° ΡΠ΅Π±Π΅ Π΄Π·Π΅Π½ Python. ΠΠ°Π»ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ, ΡΡΠΎ Β«ΠΏΡΠΎΡΡΠΎΠ΅ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅Β»: Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅Π±Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΠ΅ΠΉ.
- ΠΡΠΈΡΡ Π² ΠΊΠΎΡΠ΅Π½Ρ. ΠΡΠΎ ΡΠΈΠΏΡ, ΠΊΠ»Π°ΡΡΡ, ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π½ΠΈΠΌΠΈ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ ΡΡΠΎΠΊΠ°Ρ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° β Π²ΡΡΡΠ½ΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Β«Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡΒ» ΠΈ Β«ΡΡΠΎ ΠΌΠΎΠ³ΡΡΒ», Π½ΠΎ ΠΈ Β«ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΒ».
- ΠΠ΅ ΡΠΎΠ±Π»Π°Π·Π½ΡΡΡΡΡ ΡΡΠΈΠ»Π°Π½ΡΠΎΠΌ. Π Π½Π°ΡΠ°Π»Π΅ ΠΏΡΡΠΈ Π²Π°ΠΌ ΡΠΎΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡ Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΎΠΉ ΠΊΡΠ»ΡΡΡΡΠΎΠΉ. Π’Π°ΠΊ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΈΠΌΠ°ΡΡ ΠΎΠΏΡΡ ΠΎΡ Π»ΡΠ΄Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠ΅ΡΡ ΠΈ Π»ΡΠ±ΡΡ ΠΏΠΈΡΠ°ΡΡ Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΊΠΎΠ΄, Π° Π½Π΅ Π½Π°Π±ΠΈΠ²Π°ΡΡ ΡΠΈΡΠΊΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠ½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° Π² Python
ΠΠ½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° Π² Python ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ΄Π½ΠΎΠΉ ΡΠ΅ΠΌΠΎΠΉ, Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΊΠΎΠ΄Π° Π΄Π»Ρ Python, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π²ΡΡΡΠ½ΠΈΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΎΠ½ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ. Π‘Π°ΠΌΡΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ pylint. ΠΠ½ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π΅Π½ Π² Π½Π°ΡΡΠΎΠΉΠΊΠ°Ρ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡ . ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ PEP8, ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎ ΡΡΠΈΠ»Ρ ΡΠ΄ΡΠ° Python, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ pylint ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π° Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² PEP8, Π½ΠΎ Π½Π΅ Π½Π° Π²ΡΠ΅. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΡΠ΄Π΅Π»ΠΈΠΌ Π½Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ Π½Π°ΡΡΠΈΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ ΠΊΠΎΠ΄Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ pyflakes.
ΠΠ°ΡΠ½Π΅ΠΌ Ρ pylint
ΠΠ°ΠΊΠ΅Ρ pylint Π½Π΅ Π²Ρ ΠΎΠ΄ΠΈΡ Π² Python, ΡΠ°ΠΊ ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΡ PyPI (Python Package Index), ΠΈΠ»ΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΉΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΄Π΅Π»Π°Π΅Ρ Π²ΡΡ ΡΠ°Π±ΠΎΡΡ Π·Π° Π²Π°Ρ:
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΠΈΠ΄Π΅Ρ ΠΏΠΎ ΠΏΠ»Π°Π½Ρ, ΡΠΎ pylint ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ, ΠΈ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΉΡΠΈ Π΄Π°Π»ΡΡΠ΅.
ΠΠ½Π°Π»ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ pylint Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ Π»ΠΈΠ±ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎ Π±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΎΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ, Π²ΠΎΡ ΡΠ°ΠΊ:
c:\Python34\Scripts\pylint
| c:\Python34\Scripts\pylint |
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠΎΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅ΡΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π΅Ρ Π² ΡΠ°ΠΉΠ»Π΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ crummy_code.py:
import sys
class CarClass:
«»»»»»
def __init__(self, color, make, model, year):
«»»Constructor»»»
self.color = color
self.make = make
self.model = model
self.year = year
if «Windows» in platform.platform():
print(«You’re using Windows!»)
self.weight = self.getWeight(1, 2, 3)
def getWeight(this):
«»»»»»
return «2000 lbs»
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import sys Β class CarClass: Β Β Β Β «»»»»» Β Β Β Β Β Β Β Β def __init__(self, color, make, model, year): Β Β Β Β Β Β Β Β «»»Constructor»»» Β Β Β Β Β Β Β Β self.color = color Β Β Β Β Β Β Β Β self.make = make Β Β Β Β Β Β Β Β self.model = model Β Β Β Β Β Β Β Β self.year = year Β Β Β Β Β Β Β Β Β Β Β Β if «Windows» in platform.platform(): Β Β Β Β Β Β Β Β Β Β Β Β print(«You’re using Windows!») Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β self.weight = self.getWeight(1, 2, 3) Β Β Β Β Β def getWeight(this): Β Β Β Β Β Β Β Β «»»»»» Β Β Β Β Β Β Β Β return «2000 lbs» |
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Ρ ΠΊΠΎΠ΄? ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ pylint Π½Π°ΠΉΡΠΈ ΠΈΡ !
ΠΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ Python?
ΠΠ° Π½Π°ΡΠ΅ΠΌ ΡΠΎΡΡΠΌΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡ Π»ΡΠ±ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠ²Π΅Ρ ΠΎΡ Π²ΡΠ΅Π³ΠΎ Π½Π°ΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°!
Telegram Π§Π°Ρ & ΠΠ°Π½Π°Π»
ΠΡΡΡΠΏΠΈΡΠ΅ Π² Π½Π°Ρ Π΄ΡΡΠΆΠ½ΡΠΉ ΡΠ°Ρ ΠΏΠΎ Python ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ Π΅Π΄ΠΈΠ½ΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ! Π‘ΡΠ°Π½ΡΡΠ΅ ΡΠ°ΡΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°!
ΠΠ°Π±Π»ΠΈΠΊ VK
ΠΠ΄Π½ΠΎ ΠΈΠ· ΡΠ°ΠΌΡΡ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ² ΠΏΠΎ Python Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ ΠΠ. ΠΠΈΠ΄Π΅ΠΎ ΡΡΠΎΠΊΠΈ ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ Π΄Π»Ρ Π²Π°Ρ!
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΡΡ Π²ΡΠ΄Π°ΡΡ Π½Π° Π²Π°ΡΠ΅ΠΌ ΡΠΊΡΠ°Π½Π΅. ΠΠΎΡ ΡΠ°ΡΡΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
c:\py101>c:\Python34\Scripts\pylint crummy_code.py
No config file found, using default configuration
************* Module crummy_code
C: 2, 0: Trailing whitespace (trailing-whitespace)
C: 5, 0: Trailing whitespace (trailing-whitespace)
C: 12, 0: Trailing whitespace (trailing-whitespace)
C: 15, 0: Trailing whitespace (trailing-whitespace)
C: 17, 0: Trailing whitespace (trailing-whitespace)
C: 1, 0: Missing module docstring (missing-docstring)
C: 3, 0: Empty class docstring (empty-docstring)
C: 3, 0: Old-style class defined. (old-style-class)
E: 13,24: Undefined variable ‘platform’ (undefined-variable)
E: 16,36: Too many positional arguments for function call (too-many-function-args)
C: 18, 4: Invalid method name «getWeight» (invalid-name)
C: 18, 4: Empty method docstring (empty-docstring)
E: 18, 4: Method should have «self» as first argument (no-self-argument)
R: 18, 4: Method could be a function (no-self-use)
R: 3, 0: Too few public methods (1/2) (too-few-public-methods)
W: 1, 0: Unused import sys (unused-import)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| c:\py101>c:\Python34\Scripts\pylint crummy_code.py Β No config file found, using default configuration ************* Module crummy_code C: 2, 0: Trailing whitespace (trailing-whitespace) C: 5, 0: Trailing whitespace (trailing-whitespace) C: 12, 0: Trailing whitespace (trailing-whitespace) C: 15, 0: Trailing whitespace (trailing-whitespace) C: 17, 0: Trailing whitespace (trailing-whitespace) C: 1, 0: Missing module docstring (missing-docstring) C: 3, 0: Empty class docstring (empty-docstring) C: 3, 0: Old-style class defined. (old-style-class) E: 13,24: Undefined variable ‘platform’ (undefined-variable) E: 16,36: Too many positional arguments for function call (too-many-function-args) C: 18, 4: Invalid method name «getWeight» (invalid-name) C: 18, 4: Empty method docstring (empty-docstring) E: 18, 4: Method should have «self» as first argument (no-self-argument) R: 18, 4: Method could be a function (no-self-use) R: 3, 0: Too few public methods (1/2) (too-few-public-methods) W: 1, 0: Unused import sys (unused-import) |
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΠΎΡΠΌΠΎΠ·ΠΈΠΌ ΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ. Π‘Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π±ΡΠΊΠ²Ρ:
- Π‘ β ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΡ (convention)
- R β ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ (refactor)
- W β ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ (warning)
- E β ΠΎΡΠΈΠ±ΠΊΠ° (error)
ΠΠ°Ρ pylint Π½Π°ΡΠ΅Π» 3 ΠΎΡΠΈΠ±ΠΊΠΈ, 4 ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠ΅ΠΉ, 2 ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π΅ ΠΈ ΠΎΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ 3 ΠΎΡΠΈΠ±ΠΊΠΈ β ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠΎ, ΡΡΠΎ Ρ ΠΈΡΠΊΠ°Π». ΠΡ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΈ ΡΡΡΡΠ°Π½ΠΈΡΡ ΡΡΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΌΡ Π½Π°Π²Π΅Π΄Π΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π² ΠΈΠΌΠΏΠΎΡΡΠ°Ρ , ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ getWeight Π½Π° get_weight, Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ camelCase Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π½Π°Π·Π²Π°Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π²ΡΠ·ΠΎΠ² get_weight, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ βselfβ Π²ΡΡΡΡΠΏΠ°Π» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠ·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄:
# crummy_code_fixed.py
import platform
class CarClass:
«»»»»»
def __init__(self, color, make, model, year):
«»»Constructor»»»
self.color = color
self.make = make
self.model = model
self.year = year
if «Windows» in platform.platform():
print(«You’re using Windows!»)
self.weight = self.get_weight(3)
def get_weight(self, this):
«»»»»»
return «2000 lbs»
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| # crummy_code_fixed.py import platform Β class CarClass: Β Β Β Β «»»»»» Β Β Β Β Β Β Β Β def __init__(self, color, make, model, year): Β Β Β Β Β Β Β Β «»»Constructor»»» Β Β Β Β Β Β Β Β self.color = color Β Β Β Β Β Β Β Β self.make = make Β Β Β Β Β Β Β Β self.model = model Β Β Β Β Β Β Β Β self.year = year Β Β Β Β Β Β Β Β Β Β Β Β if «Windows» in platform.platform(): Β Β Β Β Β Β Β Β Β Β Β Β print(«You’re using Windows!») Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β self.weight = self.get_weight(3) Β Β Β Β Β def get_weight(self, this): Β Β Β Β Β Β Β Β «»»»»» Β Β Β Β Β Β Β Β return «2000 lbs» |
ΠΠ°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ Ρ pylint ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΌΡ ΠΏΡΠΎΠ²Π΅Π»ΠΈ ΡΠ°Π±ΠΎΡΡ. ΠΠ»Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ, ΠΌΡ Π΅ΡΠ΅ ΡΠ°Π· ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°ΡΡΡ:
c:\py101>c:\Python34\Scripts\pylint crummy_code_fixed.py
No config file found, using default configuration
************* Module crummy_code_fixed
C: 1,0: Missing docstring
C: 4,0: CarClass: Empty docstring
C: 21,4: CarClass.get_weight: Empty docstring
W: 21,25: CarClass.get_weight: Unused argument ‘this’
R: 21,4: CarClass.get_weight: Method could be a function
R: 4,0: CarClass: Too few public methods (1/2)
| c:\py101>c:\Python34\Scripts\pylint crummy_code_fixed.py Β No config file found, using default configuration ************* Module crummy_code_fixed C: 1,0: Missing docstring C: 4,0: CarClass: Empty docstring C: 21,4: CarClass.get_weight: Empty docstring W: 21,25: CarClass.get_weight: Unused argument ‘this’ R: 21,4: CarClass.get_weight: Method could be a function R: 4,0: CarClass: Too few public methods (1/2) |
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ. ΠΡΠ»ΠΈ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ docstrings, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ Π²Π΄Π²ΠΎΠ΅. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ pyflakes!
Π Π°Π±ΠΎΡΠ°Π΅ΠΌ Ρ pyflakes
ΠΡΠΎΠ΅ΠΊΡ pyflakes ΡΡΠΎ ΡΠ°ΡΡΡ ΡΠ΅Π³ΠΎ-ΡΠΎ, ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Divmod Project. Pyflakes Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ pylint. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ pyflakes ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ pip, easy_install, ΠΈΠ»ΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°.
ΠΠ°Π½Π½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΠΠ°ΠΌ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΏΡΠΈ Π·Π°ΠΊΠ°Π·Π΅ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π° ΠΏΠΎΡΡΡ ΠΈ ΡΠΎΡΠΎ Π² ΠΠ΄Π½ΠΎΠΊΠ»Π°ΡΡΠ½ΠΈΠΊΠΈ. ΠΡΠΈΠΎΠ±ΡΠ΅ΡΠ°ΠΉΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠ΅ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ ΡΠΊΠΈΠ΄ΠΊΠ°ΠΌΠΈ, Π½ΠΎ ΠΈ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ Π½Π°ΠΈΠ»ΡΡΡΠ΅Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ.
ΠΡ Π½Π°ΡΠ½Π΅ΠΌ Ρ Π·Π°ΠΏΡΡΠΊΠ° pyflakes Π² ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ pylint. ΠΠΎΡ ΠΈ ΠΎΠ½:
import sys
class CarClass:
«»»»»»
def __init__(self, color, make, model, year):
«»»Constructor»»»
self.color = color
self.make = make
self.model = model
self.year = year
if «Windows» in platform.platform():
print(«You’re using Windows!»)
self.weight = self.getWeight(1, 2, 3)
def getWeight(this):
«»»»»»
return «2000 lbs»
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import sys Β class CarClass: Β Β Β Β «»»»»» Β Β Β Β Β Β Β Β def __init__(self, color, make, model, year): Β Β Β Β Β Β Β Β «»»Constructor»»» Β Β Β Β Β Β Β Β self.color = color Β Β Β Β Β Β Β Β self.make = make Β Β Β Β Β Β Β Β self.model = model Β Β Β Β Β Β Β Β self.year = year Β Β Β Β Β Β Β Β Β Β Β Β if «Windows» in platform.platform(): Β Β Β Β Β Β Β Β Β Β Β Β print(«You’re using Windows!») Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β self.weight = self.getWeight(1, 2, 3) Β Β Β Β Β def getWeight(this): Β Β Β Β Β Β Β Β «»»»»» Β Β Β Β Β Β Β Β return «2000 lbs» |
ΠΠ°ΠΊ ΠΌΡ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅, Π² ΡΡΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΌΠ°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΠ΅ΡΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΡΠΈ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΡΡΡ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΆΠ΅ pyflakes ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ. ΠΠΎΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
c:\py101>c:\Python34\Scripts\pyflakes.exe crummy_code.py
crummy_code.py:1: ‘sys’ imported but unused
crummy_code.py:13: undefined name ‘platform’
| c:\py101>c:\Python34\Scripts\pyflakes.exe crummy_code.py crummy_code.py:1: ‘sys’ imported but unused crummy_code.py:13: undefined name ‘platform’ |
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΏΠ΅ΡΡΠΊΠΈ Π±ΡΡΡΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π²ΡΠ΄Π°ΡΠΈ, pyflakes Π½Π΅ Π½Π°ΡΠ΅Π» Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° getWeight ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ getWeight ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° self. Π§ΡΠΎ-ΠΆΠ΅, Π²Ρ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²Π°ΠΌ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ Π² ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈ ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ self. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠ΄, ΠΎΠΏΠ΅ΡΠΈΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π²Π°ΠΌ ΡΠΊΠ°Π·Π°Π» pyflakes, ΠΊΠΎΠ΄ Π½Π΅ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ.
ΠΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡΠΎΠ³ΠΈ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠ° Π·Π°ΠΏΡΡΠΊΠ° pylint ΠΈ pyflakes Π² Π²Π°ΡΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π»ΠΈΠ±ΠΎ ΠΆΠ΅ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ Python, Π²ΡΠΎΠ΄Π΅ SQLAlchemy, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·ΡΡΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π² Π²ΡΠ΄Π°ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΡΠ·Π½Π°ΡΡ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. pylint ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ Ρ Wingware, Editra, ΠΈ PyDev. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ pylint ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²Π°ΠΌ ΡΠ°Π·Π΄ΡΠ°ΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, ΠΈΠ»ΠΈ Π½Π΅ ΠΎΡΠΎΠ±ΠΎ ΡΠΌΠ΅ΡΡΠ½ΡΠΌΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΠ°ΠΊΠΈΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΠ± ΡΡΡΠ°ΡΠ΅Π²Π°Π½ΠΈΠΈ, ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ -generate-rcfile Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π° config, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ pylint. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ pylint ΠΈ pyflakes Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡ Π²Π°Ρ ΠΊΠΎΠ΄, ΡΠ°ΠΊ ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠ°Ρ .
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Python ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Hy / Π₯Π°Π±Ρ
1. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Hy
Hy β Π΄ΠΈΠ°Π»Π΅ΠΊΡ ΠΠΈΡΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΡΠΎΠ΅Π½ Π² ΠΏΠΈΡΠΎΠ½.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠΌΡ, ΡΡΠΎ Hy ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΡΠ²ΠΎΠΉ ΠΠΈΡΠΏΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΠ΅ΡΠ΅Π²ΠΎ (AST) ΠΏΠΈΡΠΎΠ½Π°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ Hy Π²Π΅ΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΌΠΈΡ ΠΏΠΈΡΠΎΠ½Π° β Π½Π° ΠΊΠΎΠ½ΡΠΈΠΊΠ°Ρ ΠΏΠ°Π»ΡΡΠ΅Π² ΠΈ Π² ΡΠΎΡΠΌΠ΅ ΠΠΈΡΠΏΠ°.
2. Π ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ Hy, ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΊΠΎ
Hy β ΡΠ²ΠΎΠ΅ΠΎΠ±ΡΠ°Π·Π½ΡΠΉ ΡΠ·ΡΠΊ, ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ²ΠΎΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ (Π±ΠΎΠ»ΡΡΠ΅, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π° ΠΠΈΡΠΏ). ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ ΠΠΈΡΠΏΠ°, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ.
- ΠΡΡΡΡΠΏ Π½Π΅ ΠΈΠ³ΡΠ°Π΅Ρ ΡΠΎΠ»ΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ β ΡΡΠΎΠ²Π½ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΡΠ΅ΠΊ.
- ΠΠΎ Π²ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΡΠΊΠΎΠ±ΠΊΠΈ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ; Π·Π°ΠΏΡΡΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ.
- ΠΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΎΠ½ΠΈ β ΡΡΠ½ΠΊΡΠΈΠΈ.
- ΠΠ²ΠΎΠ΅ΡΠΎΡΠΈΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ.
- ΠΠΈΡΠ΅ΡΠ°Π»Ρ Π΄Π»Ρ ΡΡΡΠΎΠΊ ΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅; ΡΡΡΠΎΠΊΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² Π΄Π²ΠΎΠΉΠ½ΡΡ ΠΊΠ°Π²ΡΡΠΊΠ°Ρ , ΠΊΠΎΡΡΠ΅ΠΆΠΈ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΊΠ°ΠΊ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ «,».
Π₯ΠΎΡΡ ΡΡΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΈ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΡΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° (ΡΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²) ΠΏΡΠΈΠ²ΡΠΊΠ½ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ.
3. Π’Π΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ β quoting, unquoting, quaziquoting, splicing, macro expansion. Π ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ ΠΊΠ½ΠΈΠ³ΠΈ Practical Common Lisp Π½Π° ΡΡΡΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ Π΄Π»Ρ Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ»ΠΎΠ²Π° Β«ΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β», Β«ΡΠ°ΡΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β», Β«ΠΊΠ²Π°Π·ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β» β ΠΈ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΠ· Π½ΠΈΡ β Β«ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ²Β». Π― Π½Π΅ ΡΡΠΈΡΠ°Ρ ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠ΄ΠΎΠ±Π½ΡΠΌ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² Β«ΡΠΊΡΡΡΠΈΠ΅Β» Π΄Π»Ρ quoting, Β«ΡΠ°ΡΠΊΡΡΡΠΈΠ΅Β» Π΄Π»Ρ unquoting, Β«ΠΊΠ²Π°Π·ΠΈΡΠΊΡΡΡΠΈΠ΅Β» Π΄Π»Ρ quaziquoting, Β«ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅Β» Π΄Π»Ρ splicing, Β«ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ°Β» Π΄Π»Ρ macro expansion.
Π ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΡ Π΄Π°Π»Π΅Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΊΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
'
:: ΡΠΊΡΡΡΠΈΠ΅; ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΌΠ΅ Hy; Π²ΠΌΠ΅ΡΡΠΎ Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π°ΠΊΠ°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅.`
:: ΠΊΠ²Π°Π·ΠΈΡΠΊΡΡΡΠΈΠ΅; Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΠΎΡΠΌΠ° ΡΠΊΡΡΡΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΡΡΡΠΎΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ.~
:: ΡΠ°ΡΠΊΡΡΡΠΈΠ΅; ΡΠ°ΠΊ ΠΊΠ°ΠΊ,
Π·Π°Π½ΡΡΠ° Π² ΠΏΠΈΡΠΎΠ½Π΅ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΉ Π΄Π»Ρ ΠΠΈΡΠΏΠ° Π·Π°ΠΏΡΡΠΎΠΉ. Π£ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΡΡΡ Π² ΠΊΠ²Π°Π·ΠΈΡΠΊΡΡΡΠΎΠΉ ΡΠΎΡΠΌΠ΅ ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π² Π½Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π·Π° Π½Π΅ΠΉ ΡΠΎΡΠΌΡ.~@
:: ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅; ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ΠΌ: ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠΎΡΠΌΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ, ΠΈ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΌΠ»ΡΡΡΡ ΠΊΠ²Π°Π·ΠΈΡΠΊΡΡΡΡΡ ΡΠΎΡΠΌΡ.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π΅ΡΠ»ΠΈ ΡΠΎΡΠΌΠ° β ΡΠΏΠΈΡΠΎΠΊ, ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅; Π»ΠΈΡΠ΅ΡΠ°Π»Ρ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΡΡΠ°ΡΡΡΡ ΡΠ°ΠΌΠΈ ΡΠΎΠ±ΠΎΠΉ.
4. Π‘ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°
ΠΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈΠ· hy
ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΊΡΡΡΠΈΡ. Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ β ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ°Π·Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΡΠΊΡΡΡΠΈΡ Π½Π΅ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
(macroexpand '(my-macro param1 param2 (do (print "hello!"))))
ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π΅Π½Π΅ΡΠΈΡΡΡ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ .
Π’ΡΡ Π½Π°Ρ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π»ΡΠ·Ρ Π·Π°Π±ΡΠ²Π°ΡΡ.
- Π‘ΠΊΡΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠ°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½Π° Π±ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ
hy
. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°. - ΠΠ΅ Π²ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ
hy
ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ β ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π° ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²hy
Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ°ΡΡΠ»Π°Π±Π»Π΅Π½Π½Π΅Π΅.
ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ), ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
(with [fd (open "some/python/file.py" "a")]
(.write fd "\n")
(.write fd (disassemble code True)))
5. ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΠΌΡΠ½
ΠΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠΈΡΠΎΠ½Π΅, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π΄Π»Ρ Π½Π°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ Π½ΠΎΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Ρ.Π΅. Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠΈΡΠΎΠ½Π° β ΠΈΠΌΠ΅Π½Π° Π²Π½ΠΎΠ²Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π² ΠΠΈΡΠΏΠ΅ ((gensym)
) Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ Π² hy
Π½Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π»ΠΈΡΠΏΠΎΠ² (intern)
, ΡΠ»ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π΄Π»Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ (Ρ ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΎΠΉ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅) Π² ΡΠΈΠΌΠ²ΠΎΠ».
Π ΡΡΠ°ΡΡΡΡ, Π²ΡΡ Π±Π°Π·Π° ΠΊΠΎΠ΄Π° hy
Π΄ΠΎΡΡΡΠΏΠ½Π°, ΠΈ Π±ΡΡΡΡΡΠΌ ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΠΌΡ ΡΠ±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, ΡΡΠΎ (gensym)
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ HySymbol
. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡΡΠΏΠΈΡΡ ΠΈ ΠΌΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΡΠ°Π½Π΅Π΅ β ΠΌΠ°ΠΊΡΠΎΡ.
(defmacro make-vars [data]
(setv res '())
(for [element data]
(setv varname (HySymbol (+ "var" (str element))))
(setv res (cons `(setv ~varname 0) res)))
`(do ~@res))
ΠΠΎΠΌΠΈΠΌΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π² Π½ΡΠΌ Π΅ΡΡΡ Π΅ΡΡ ΠΎΠ΄Π½Π° ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π΄Π΅ΡΠ°Π»Ρ. ΠΡΠΎ β ΡΠ±ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ AST ΠΈΠ· ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΡΡΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° ΡΡΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ², Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΎΠ±ΡΠ°ΠΌΠ»Π΅Π½ΠΈΠΈ.
6. ΠΡΠΈΠΌΠ΅Ρ ΠΈ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ hy
Π΄Π»Ρ ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΡ Π½Π° Π½ΡΠΌ), Π²ΡΠΏΠ»ΡΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΠΊΠΎΠ΄Π° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΊΡΡΡΡΠΌΠΈ.
Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ AST ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΠΈ.
[ ]
Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΈΡΠΎΠ½Π°, Π°HyList
;{ }
ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π½Π΅ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΏΠΈΡΠΎΠ½Π°, Π°HyDict
, ΠΈ Π² Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈhy
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ;""
Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π° HyString.
ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΠΎΠ²: ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ (ΠΈ Π΄ΡΡΠ³ΠΈΠ΅) ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π±ΡΠ΄ΡΡΠΈ ΡΠΊΡΡΡΡΠΌΠΈ, ΠΏΡΠΈ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ python
.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°ΡΠΈ Π² ΠΊΠΎΠ΄Π΅ python
, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΊΡΡΡΠΈΡ.
(setv class-def [`(defclass ~class-name [~(HySymbol (. meta-base __name__))]
[army_name ~army-name
faction_base ~(HyString faction)
alternate_factions [~@(map HyString alternate-fac-list)]
army_id ~army-id
army-factions [~@(map HyString army-factions)]]
(defn --init-- [self &optional [parent None]]
(apply .--init-- [(super ~class-name self)]
{~@(interleave (map HyString class-grouping)
(repeat 'True))
"parent" parent})
~@(map (fn [key]
`(.add-classes (. self ~(HySymbol key))
[~@(genexpr (HySymbol (. ut __name__))
[ut (get class-grouping key)])]))
class-grouping)))]))))
Π ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ² Π² ΠΏΠΎΠ»ΡΡ
alternate_factions
ΠΈ army-factions
ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π² ΠΏΠΈΡΠΎΠ½ΠΎΠ²ΡΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΎΠ±Π° ΡΡΠΈΡ
ΠΏΠΎΠ»Ρ Π±ΡΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· Π½ΠΈΠΆΠ½Π΅Π΅ ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅. ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΏΠΈΡΠΊΠΎΠ² ΡΡΡΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Ρ
ΠΎΠ΄ΡΡΠΈΡ
ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΡΠΎΠΊ python
Π² HyString
.
ΠΠ· ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π° Π½Π° hy
ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠΈΡΠΎΠ½Π΅:
class DetachPatrol_adeptus_ministorum(DetachPatrol):
army_name = u'Adeptus Ministorum (Patrol detachment)'
faction_base = u'ADEPTUS MINISTORUM'
alternate_factions = []
army_id = u'patrol_adeptus_ministorum'
army_factions = [u'IMPERIUM', u'ADEPTA SORORITAS', u'<ORDER>', u'ADEPTUS MINISTORUM']
def __init__(self, parent=None):
super(DetachPatrol_adeptus_ministorum, self).__init__(*[], **{u'heavy': True, u'troops': True, u'transports': True, u'hq': True, u'fast': True, u'elite': True, u'parent': parent, })
self.heavy.add_classes([Exorcist, Retributors, PenitentEngines])
self.troops.add_classes([BattleSisters])
self.transports.add_classes([ASRhino, Immolator])
self.hq.add_classes([Celestine, Canoness, Jacobus])
self.fast.add_classes([Dominions, Seraphims])
self.elite.add_classes([ArcoFlagellants, Assassins, Celestians, Dialogus, Hospitaller, Imagifier, Mistress, Priest, Repentia, PriestV2, Crusaders])
return None
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ Π²ΡΠ·ΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
- ΠΠ»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· ΠΊΠ»Π°ΡΡΠ° (ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π½Π°
.
),apply
ΡΡΠ°ΠΊΡΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π΅ΠΌΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ (ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ°, ΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ Π΅Π³ΠΎ Π²ΡΠΎΡΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ) ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ; - ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΊΡΡΡΠΈΡ;
- ΠΠ»Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠ»ΡΡΡ (ΡΡΡΠΎΠΊΠ΅, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²
HyString
) Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡinterleave
, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ Π΄Π²ΡΠΌ ΡΠΏΠΈΡΠΊΠ°ΠΌ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΠΆΠ°Ρ ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ; - Π‘ΠΈΠΌΠ²ΠΎΠ»
True
ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠΊΡΡΡΠΈΡ, Π² ΠΊΠΎΠ΄Π΅python
Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² ΡΠ΅Π±Ρ; - Π ΡΠΊΡΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ (ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅) ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. ΠΡΠΌΠ΅ΡΠΈΠΌ; Ρ
ΠΎΡΡ Π² ΡΠΊΡΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π°
parent
ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ°, Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅ΠΉ ΡΠΊΡΡΡΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ; - ΠΠΎΠΆΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈΠ· ΡΠΏΠΈΡΠΊΠΎΠ², ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Ρ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΊΡΡΡΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠΊΡΡΡΡΡ
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ
hy
(ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°).
7. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ
ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Hy ΠΈ ΡΡΡΡΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Practical Common Lisp.
Python Π² Visual Studio Code
Π Π°Π±ΠΎΡΠ°ΡΡ Ρ Python Π² Visual Studio Code Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Microsoft Python ΠΏΡΠΎΡΡΠΎ, Π²Π΅ΡΠ΅Π»ΠΎ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ. Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ VS Code ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠΌ Python ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π»ΡΠ±ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ Python. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΡ ΠΌΠΎΡΡ VS Code Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ IntelliSense, Π»ΠΈΠ½ΡΠΈΠ½Π³Π°, ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ΅Π΄Π°ΠΌΠΈ Python, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄Ρ ΠΈ ΡΡΠ΅Π΄Ρ conda.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π·ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Python Π΄Π»Ρ VS Code. ΠΠ»Ρ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π·Π°ΠΏΡΡΠΊΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Π½ΠΈΠΆΠ΅.
Π£ΡΠ΅Π±Π½ΠΎΠ΅ ΠΏΠΎΡΠΎΠ±ΠΈΠ΅ Python Hello World
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Python ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python
Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΡΠΎΠ²Π΅Π΄Π΅Ρ Π²Π°Ρ ΡΠ΅ΡΠ΅Π· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Python ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. ΠΠ»Ρ Π±ΡΡΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Python 3.7 ΠΈΠ· python.org ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· VS Code Marketplace.
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ Python Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Python: Select Interpreter . ΠΡΠ»ΠΈ VS Code Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΊΠΎΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ°Π·Π΄Π΅Π»Ρ Β«Π‘ΡΠ΅Π΄Ρ — ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π²ΡΡΡΠ½ΡΡΒ».
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python ΡΠ΅ΡΠ΅Π· Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. Π‘ΠΌ. Π‘ΠΏΡΠ°Π²ΠΊΡ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ½ΡΠ°ΠΉΠ΄Π΅ΡΠΎΠ²
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Python ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΡΡΠΊΠΎΠΌ, Π²ΠΊΠ»ΡΡΠ°Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈΠ±ΠΎ ΠΎΡΠΊΡΡΡΡ ΠΏΠ°Π»ΠΈΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ (β§βP (Windows, Linux Ctrl + Shift + P)) ΠΈ Π²ΡΠ±ΡΠ°ΡΡ Python: Switch to Insiders Daily / Weekly Channel , Π»ΠΈΠ±ΠΎ Π²Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ (β, (Windows, Linux Ctrl +,)) ΠΈ Π½Π°ΠΉΡΠΈ Python: Insiders Channel , ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°Π½Π°Π»Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΒ» ΠΈΠ»ΠΈ Β«Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡΠ½ΠΎΒ».
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ΄ Python
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΡΡΠ°ΡΡ Python, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ) Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ hello.py
ΠΈ Π²ΡΡΠ°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ (ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ Python 3):
ΠΏΠ΅ΡΠ°ΡΡ (Β«Hello WorldΒ»)
ΠΠ°ΡΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ»ΡΠΊΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ΄Π° Python Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ ( Python: Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Interpreter Π² ΠΏΠ°Π»ΠΈΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄):
- Π ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅: ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» Python Π² Π’Π΅ΡΠΌΠΈΠ½Π°Π»Π΅ .ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ° Π²ΡΠ±ΠΎΡΠΊΠ°.
- Π ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ΅: ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ ΡΠ°ΠΉΠ» Python ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» Python Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ .
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Terminal: Create New Integrated Terminal , ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ VS Code Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ. Π‘ΠΌ. Β«Π‘ΡΠ΅Π΄ΡΒ» Π½ΠΈΠΆΠ΅. Python: Start REPL Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Python REPL.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ Π·Π°ΠΏΡΡΠΊΡ ΠΊΠΎΠ΄Π° ΡΠΌ. Π ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅.
ΠΠ²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ IntelliSense
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°Π²ΡΠΎΠ·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ IntelliSense Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°. IntelliSense — ΡΡΠΎ ΠΎΠ±ΡΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½ Π΄Π»Ρ ΡΡΠ΄Π° ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° (ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ) Π΄Π»Ρ Π²ΡΠ΅Ρ Π²Π°ΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
IntelliSense Π±ΡΡΡΡΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π²Π²ΠΎΠ΄Π°, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ βSpace (Windows, Linux Ctrl + Space).ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π²Π΅ΡΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΡΡΠΈ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΎ Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
Π‘ΠΎΠ²Π΅Ρ : ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ IntelliCode Π΄Π»Ρ VS Code (ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ). IntelliCode ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ° Π΄Π»Ρ IntelliSense Π² Python, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½ΡΡ Π°Π²ΡΠΎΠ·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΊΠΎΠ΄Π°.
ΠΠΈΠ½ΡΠΈΠ½Π³
Linting Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄ Python Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΎΠ±Π»Π΅Π³ΡΠ°Ρ ΠΏΠΎΠΈΡΠΊ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π»ΠΈΠ½ΡΠ΅ΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ Pylint, pycodestyle, Flake8, mypy, pydocstyle, prospector ΠΈ pylama. Π‘ΠΌ. ΠΠΈΠ½ΡΠΈΠ½Π³.
ΠΡΠ»Π°Π΄ΠΊΠ°
ΠΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΠ°ΡΡ
ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°! Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π°, ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΈ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠ»Π°ΠΆΠΈΠ²Π°ΠΉΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Python, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅, Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ»Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠ΅ΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ Python, Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Π·Π°ΠΏΡΡΠΊΠ° .json
ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ, ΡΠΌ. ΠΡΠ»Π°Π΄ΠΊΠ°. ΠΠ±ΡΠ°Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ VS Code Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅. Π£ΡΠ΅Π±Π½ΠΈΠΊΠΈ Django ΠΈ Flask ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΠΈΡ
Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΡΠ»Π°Π΄ΠΊΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΡΡΠ°Π½ΠΈΡ Django.
Π€ΡΠ°Π³ΠΌΠ΅Π½ΡΡ
Snippets Π²ΡΠ²ΠΎΠ΄ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ. Π€ΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠ·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° β ΠΡΠΎΠ±Π΅Π» (Windows, Linux Ctrl + ΠΡΠΎΠ±Π΅Π»).ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ Python ΡΠΌ. Π ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°Ρ ΠΏΠΎ Django ΠΈ Flask.
ΠΠΊΡΡΠΆΠ°ΡΡΠ°Ρ ΡΡΠ΅Π΄Π°
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Python, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΠΌΠ΅ΡΡΠ°Ρ
. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ΅Π΄Ρ conda, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄Ρ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. Π‘ΠΌ. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΡΠ΅Π΄ Python. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ python.pythonPath
, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°.
Π’Π΅ΠΊΡΡΠ°Ρ ΡΡΠ΅Π΄Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ VS Code:
Π ΡΡΡΠΎΠΊΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊ Π½Π΅ Π²ΡΠ±ΡΠ°Π½:
ΠΡΠ±ΡΠ°Π½Π½Π°Ρ ΡΡΠ΅Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ IntelliSense, Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π»ΠΈΠ½ΡΠΈΠ½Π³Π°, ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠ·ΡΠΊΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΡΠΎΠΌΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ Python Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅.
Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° conda ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄Ρ, Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΈΠΌΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π² ΡΡΡΠΎΠΊΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Python: Select Interpreter .
VS Code ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π²Π°ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ Π² ΡΠ²ΠΎΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ (ΡΠΌ. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΡΠ΅Π΄ Python).
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΠ°ΠΊΠ΅ΡΡ
ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ Terminal ΠΈ ΡΠ°ΠΊΠΈΡ
ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠ°ΠΊ pip install <ΠΈΠΌΡ_ΠΏΠ°ΠΊΠ΅ΡΠ°>
(Windows) ΠΈ pip3 install
(macOS / Linux).VS Code ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ Π² Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ. ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΡΠ΅Π±Π½ΠΈΠΊΠ΅ Python, Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°Ρ
ΠΏΠΎ Django ΠΈ Flask.
ΠΠΎΡΡΠ±ΡΠΊΠΈ Jupyter
ΠΡΠ»ΠΈ Π²Ρ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΠ΅ ΡΠ°ΠΉΠ» Π·Π°ΠΏΠΈΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠΆΠΊΠΈ Jupyter ( .ipynb
) Π² VS Code, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Jupyter Notebook Editor Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠ΅Π΅ΠΊ ΠΊΠΎΠ΄Π°.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΈ ΠΎΡΠΊΡΡΡΡ Π·Π°ΠΏΠΈΡΠ½ΡΡ ΠΊΠ½ΠΈΠΆΠΊΡ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ» ΠΊΠΎΠ΄Π° Python. Π―ΡΠ΅ΠΉΠΊΠΈ Π·Π°ΠΏΠΈΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠΆΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π² ΡΠ°ΠΉΠ»Π΅ Python ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ # %%
, Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Run Cell ΠΈΠ»ΠΈ Run All Cells CodeLens.ΠΡΠ±ΠΎΡ CodeLens Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ΅ΡΠ²Π΅Ρ Jupyter ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΡΠ΅ΠΉΠΊΡ (Ρ) Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Python:
ΠΡΠΊΡΡΡΠΈΠ΅ Π·Π°ΠΏΠΈΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠΆΠΊΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΉΠ»Π° Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ VS Code. ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΠ» Π·Π°ΠΏΠΈΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠΆΠΊΠΈ ΠΈ ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΡΡΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ½ΡΡ ΠΊΠ½ΠΈΠΆΠΊΡ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Π·Π°ΠΏΠΈΡΠ½ΡΡ ΠΊΠ½ΠΈΠΆΠ΅ΠΊ, Jupyter ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ°ΠΊΡΡ ββΡΠ»ΡΠΆΠ±Ρ, ΠΊΠ°ΠΊ Azure Notebooks.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π·Π°ΠΏΠΈΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠΆΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ» Python, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ Jupyter Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΌ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Jupyter.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² unittest, pytest ΠΈ Π½ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ² Π²Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ . Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΡΡΠΈ ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ².
ΠΠΎΡΠ»Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ VS Code ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ (Π² ΡΡΡΠΎΠΊΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΏΠ°Π»ΠΈΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ ) Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ΅ΡΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΡΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ½ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ΅ΠΌΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΠΈΠ½ΡΠΈΠ½Π³, ΠΡΠ»Π°Π΄ΠΊΠ° ΠΈ Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠΏΡΠ°Π²ΠΊΠ΅ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ.
ΠΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Python
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Microsoft Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ°Π½Π΅Π΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ·ΡΠΊΠ° Python ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² VS Code, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Python.
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Extensions (β§βX (Windows, Linux Ctrl + Shift + X)).
- ΠΡΡΠΈΠ»ΡΡΡΡΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, Π½Π°Π±ΡΠ°Π² Β«pythonΒ».
ΠΠΎΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ. Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΠ»ΠΈΡΠΊΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π²ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ·ΡΠ²Ρ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π°Ρ. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π° ΡΠΎΡΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠ΅.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ
07.03.2019
.
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Python Π² Visual Studio Code
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Python Π² Visual Studio ΠΠΎΠ΄:
Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Linting ΠΈ Jupyter.
ΠΠ²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ IntelliSense
ΠΠ²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
ΠΈ IntelliSense ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΈ Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Python, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ .
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π»ΠΊΠ½ΡΡΡ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌ, ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ (F12) ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ΄, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ.
Peek Definition (β₯F12 (Windows Alt + F12, Linux Ctrl + Shift + F10)), Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ (ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ ΠΌΠ΅ΡΡΠΎ Π² ΠΎΠΊΠ½Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠΊΡΡΡΠΈΡ ΠΊΠΎΠ΄Π°). ΠΠ°ΠΆΠΌΠΈΡΠ΅ Escape, ΡΡΠΎΠ±Ρ Π·Π°ΠΊΡΡΡΡ ΠΎΠΊΠ½ΠΎ Peek, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ x Π² ΠΏΡΠ°Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ.
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΡΠΎΡΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
Peek Declaration Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½, Π½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅. Π‘Π½ΠΎΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Escape ΠΈΠ»ΠΈ x Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΌ ΡΠ³Π»Ρ, ΡΡΠΎΠ±Ρ Π·Π°ΠΊΡΡΡΡ ΠΎΠΊΠ½ΠΎ Peek.
ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ IntelliSense
Π§ΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π°Π½Π°Π»ΠΈΠ·Π°, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΎΠ±ΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ IntelliSense, Π΄Π°ΠΆΠ΅ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.Π‘ΠΌ. Π Π°Π·Π΄Π΅Π» ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° IntelliSense.
Π‘ΠΎΠ²Π΅Ρ : ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ IntelliCode Π΄Π»Ρ VS Code (ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ). IntelliCode ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ° Π΄Π»Ρ IntelliSense Π² Python, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½ΡΡ Π°Π²ΡΠΎΠ·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΊΠΎΠ΄Π°. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠ°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΎ IntelliCode Π΄Π»Ρ VS Code.
ΠΠΊΠ»ΡΡΠΈΡΡ IntelliSense Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ IntelliSense Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ
Π² Π΄ΡΡΠ³ΠΈΡ
Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΠΌΠ΅ΡΡΠ°Ρ
, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΈ ΠΌΠ΅ΡΡΠ° Π² Python .ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΡ autoComplete.extraPaths
Π² ΡΠ°ΠΉΠ»Π΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ (ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΡΡΠ°). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Google App Engine Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ
ΠΌΠ΅ΡΡΠ°Ρ
, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
Π² app.yaml
, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Flask. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠΈ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΊΠ½Π°:
"python.autoComplete.extraPaths": [
"C: / Program Files (x86) / Google / google_appengine",
"C: / Program Files (x86) / Google / google_appengine / lib / flask-0.12 "]
macOS / Linux:
"python.autoComplete.extraPaths": [
"~ / .local / lib / Google / google_appengine",
"~ / .local / lib / Google / google_appengine / lib / flask-0.12"]
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ python.autocomplete.addBrackets
(ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ false
) ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π±ΡΠ΄Π΅Ρ Π»ΠΈ VS Code Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ( ()
) ΠΏΡΠΈ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ addBrackets
Π½Π° true
:
"ΠΏΠΈΡΠΎΠ½.autoComplete.addBrackets ": true,
, Π° Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ import os
, Π° Π·Π°ΡΠ΅ΠΌ os.getc
, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ os.getcwd
. ΠΡΠ±ΠΎΡ ΡΡΠΎΠ³ΠΎ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ os.getcwd ()
ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΡΡΡΠΎΡ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°Π²Π½ΠΎ false, Π² ΡΠ°ΠΉΠ» Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ os.getcwd
.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ IntelliSense Π² ΡΠ΅Π»ΠΎΠΌ ΡΠΌ. IntelliSense.
ΠΠΎΠΈΡΠΊ ΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΠ΅ΠΉ
ΠΡΠ»ΠΈ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ IntelliSense Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ:
ΠΡΠΈΡΠΈΠ½Π° | Π Π΅ΡΠ΅Π½ΠΈΠ΅ |
---|---|
ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Python | ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΡ pythonPath .ΠΡΠ»ΠΈ Π²Ρ Π²Π½Π΅ΡΠ΅ΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ VS Code. |
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ (Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pip). | ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΡ python.autoComplete.extraPaths ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ VS Code. |
ΠΡΡΡΡΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠ° Quick Fix ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈΠΌΠΏΠΎΡΡΠ°. ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, ΠΈ Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΠ΅, ΡΡΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΡΡΠ΅Π΄Π΅).ΠΠ°Π²Π΅Π΄ΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΡΡΠΈ Π½Π° ΡΠ΅ΠΊΡΡ (ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ Π²ΠΎΠ»Π½ΠΈΡΡΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ), Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π»Π°ΠΌΠΏΠΎΡΠΊΡ Code Action, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° ΠΏΠΎΡΠ²ΠΈΡΡΡ. ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ°.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠ° Code Action ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Python: numpy
ΠΊΠ°ΠΊ np, tensorflow
ΠΊΠ°ΠΊ tf, pandas
ΠΊΠ°ΠΊ pd, matplotlib.pyplot
ΠΊΠ°ΠΊ plt, matplotlib
, ΠΊΠ°ΠΊ mpl, math
ΠΊΠ°ΠΊ m, scipi.io
ΠΊΠ°ΠΊ spio ΠΈ scipy
ΠΊΠ°ΠΊ sp.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ) Π²Π²Π΅ΡΡ Ρ, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ»Π΅Π΄ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ / ΠΈΠ»ΠΈ ΡΠ»Π΅Π½ΠΎΠ² (ΠΊΠ»Π°ΡΡΠΎΠ², ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ Ρ. Π.) ΠΠ· ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ : ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Microsoft Python Language Server. Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅
python.jediEnabled
Π½Π° false Π² ΡΠ²ΠΎΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ .json ΡΠ°ΠΉΠ». ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π»ΠΈΠ½ΡΠΈΠ½Π³ Π²ΠΊΠ»ΡΡΠ΅Π½, ΠΎΡΠΊΡΡΠ² ΠΏΠ°Π»ΠΈΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ( View> Command Palette … ΠΈΠ»ΠΈ β§βP (Windows, Linux Ctrl + Shift + P)) ΠΈ Π·Π°ΠΏΡΡΡΠΈΠ² Python: Enable ΠΠΎΠΌΠ°Π½Π΄Π° Linting (ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π½Π° Π² ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΌΡΡ ΠΌΠ΅Π½Ρ).
ΠΡΠ±ΠΎΡ Π·Π°ΠΏΡΡΠΊΠ° / ΠΠΈΠ½ΠΈΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ (REPL)
ΠΠΎΠΌΠ°Π½Π΄Π° Python: Run Selection / Line in Python Terminal (Shift + Enter) — ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π²Π·ΡΡΡ Π»ΡΠ±ΠΎΠΉ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅, Π΅ΡΠ»ΠΈ Π½Π΅Ρ Π²ΡΠ±ΠΎΡΠ°, ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Python .ΠΠ΄Π΅Π½ΡΠΈΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Run Selection / Line Π² Python Terminal ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅.
VS Code Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΎΡΡΡΡΠΏΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π½Π΅ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΄Π²ΠΈΠ³Π°Ρ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π²Π»Π΅Π²ΠΎ.
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ / REPL, Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡ.
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Python ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ; Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΠ΅Π΄Ρ REPL Π½Π°ΠΏΡΡΠΌΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Python: Start REPL .(ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΠΉ Π²Π°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ — ΡΡΠΎ import
.)
ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Python: Run Selection / Line in Python Terminal VS Code ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ΅ΠΊΡΡ Π² REPL Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠ° ΡΡΠ΅Π΄Π° Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ²Π°, ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ. ΠΡΠ»ΠΈ Π²Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΅ΡΠ΅ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° REPL Π·Π°Π²Π΅ΡΡΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΡ.
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π»ΡΠ΄ΡΠΌΠΈ Π·Π° ΡΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ» ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΌΠ΅ΠΆΡΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°, ΠΎΡΡΡΡΠΏΠΎΠ², ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΈ Ρ. Π. (Π‘ΠΌ. ΠΡΠΈΠΌΠ΅Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ autopep8).Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. (ΠΠΈΠ½ΡΠΈΠ½Π³, Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΎΠ±ΡΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ , ΡΡΠΈΠ»ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ. Π₯ΠΎΡΡ Π΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Π»ΠΈΠ½ΡΠΈΠ½Π³ΠΎΠΌ, ΡΡΠΈ Π΄Π²Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°.)
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ autopep8 (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ), ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ yapf.
ΠΠ±ΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° (python.ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.) | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ | "autopep8" | ΠΠ°Π΄Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²ΡΠΈΠΊ: autopep8, yapf ΠΈΠ»ΠΈ black. |
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΡ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»ΡΠΌ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python ΠΈΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ pythonPath
. Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΡΡΠΎ ΠΌΠ΅ΡΡΠΎ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΡΠΈ.ΠΠΎΠΌΠ°Π½Π΄Ρ pip install
ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π².
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²ΡΠΈΠΊ | Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°Π³ΠΈ | ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² (python.formatting.) | ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΡΠΈ (python.formatting.) |
---|---|---|---|
autopep8 | pip install pep8 pip install —upgrade autopep8 | autopep8Args | autopep8 ΠΡΡΡ |
ΡΠ΅ΡΠ½ΡΠΉ (ΡΠΌ. ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅) | pip install ΡΠ΅ΡΠ½ΡΠΉ | ΡΠ΅ΡΠ½ΡΠΉ Args | ΡΠ΅ΡΠ½ΡΠΉ ΠΡΡΡ |
ΡΠΏΡ | pip install yapf | yapfArgs | yapfPath |
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ : ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Black formatter Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π°ΠΊΡΠΈΠ²Π½Π° ΡΡΠ΅Π΄Π° Python 2.ΠΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Β«Formatter black Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ?Β». ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Black Π² ΠΎΡΠ²Π΅Ρ, ΠΏΠΎΡΠ²ΠΈΡΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅: Β«ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ Π½Π°ΠΉΡΠΈ Π²Π΅ΡΡΠΈΡ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ blackΒ» ΠΠ»Ρ ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Β».
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Black Ρ Python 2, ΡΠ½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Black Π² ΡΡΠ΅Π΄Π΅ Python 3. ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°
python.formatting.blackPath
ΡΡΠΎ ΠΌΠ΅ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΡΡΠΎΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π² ΡΠΏΠΈΡΠΊΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
"python.formatting.autopep8Args": ["--max-line-length", "120", "--experimental"],
"python.formatting.yapfArgs": ["--style", "{based_on_style: chromium, indent_width: 20}"],
"python.formatting.blackArgs": ["--line-length", "100"]
ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ {based_on_style: chromium, indent_width: 20}
ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ±Π΅Π»Ρ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ Π²ΡΠ΄Π΅Π»ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
ΠΠΎΠΈΡΠΊ ΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΠ΅ΠΉ
ΠΡΠ»ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ:
ΠΡΠΈΡΠΈΠ½Π° | Π Π΅ΡΠ΅Π½ΠΈΠ΅ |
---|---|
ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ python. | ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΡ pythonPath . |
Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ΅Π΄Π΅. | ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ, ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ pythonPath , ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ pip install Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΡΠ΅ΡΠ°. |
ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΡ. | ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° python.formatting. . |
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅Π²Π΅ΡΠ½Ρ. | Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ python.formatting. Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΡΠΎ python.formatting. ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ "python.formatting.yapfArgs ": [" --style "," {based_on_style: chromium, indent_width: 20} "] . |
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ VS Code Π²ΡΠ΄Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π²ΡΡΠ°Π²ΠΊΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ: Π§Π΅ΡΠ½ΡΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«ΠΡΠ±ΠΎΡ ΡΠΎΡΠΌΠ°ΡΠ°Β».
Π§ΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π·Π°ΠΏΠΈΡΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΡΡΠΎΠ±Ρ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ Π²ΡΡΠ°Π²ΠΊΠ΅ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Python:
"[ΠΏΠΈΡΠΎΠ½]": {
"ΡΠ΅Π΄Π°ΠΊΡΠΎΡ.formatOnPaste ": false
}
Π Π΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Python Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π°: Extract Variable , Extract Method ΠΈ Sort Imports .
ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ Π²ΡΠ΅ ΠΏΠΎΡ
ΠΎΠΆΠΈΠ΅ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠΎΠ²ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ ΠΈΠΌΡ newvariableNNN
, Π³Π΄Π΅ NNN — ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.
ΠΡΠ·Π²Π°Π½ΠΎ:
- ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ: ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΠ·Π²Π»Π΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
- Command Palette (β§βP (Windows, Linux Ctrl + Shift + P)), Π·Π°ΡΠ΅ΠΌ Python Refactor: Extract Variable .
- ΠΠ°Π·Π½Π°ΡΡΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
python.refactorExtractVariable
.
ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ Π²ΡΠ΅ ΠΏΠΎΡ
ΠΎΠΆΠΈΠ΅ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ° Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠΎΠ²ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ ΠΈΠΌΡ newmethodNNN
, Π³Π΄Π΅ NNN — ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.
ΠΡΠ·Π²Π°Π½ΠΎ:
- ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ: ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Extract Method .
- Command Palette (β§βP (Windows, Linux Ctrl + Shift + P)), Π·Π°ΡΠ΅ΠΌ Python Refactor: Extract Method .
- ΠΠ°Π·Π½Π°ΡΡΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
python.refactorExtractMethod
.
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠ°
Sort Imports ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅Ρ isort Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ import
ΠΈ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈΠΌΠΏΠΎΡΡΠ° import
Π² Π°Π»ΡΠ°Π²ΠΈΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠ·Π²Π°Π½ΠΎ:
- Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠ° (Π²ΡΠ±ΠΎΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ)
- (β§βP (Windows, Linux Ctrl + Shift + P)), Π·Π°ΡΠ΅ΠΌ Π Π΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ Python: Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠ°
- ΠΠ°Π·Π½Π°ΡΡΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
python.sortImports
ΠΠ°Π»ΠΈΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ isort ΡΠΊΠ°Π·Π°Π½Ρ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ python.sortImports.args
, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅:
"ΠΏΠΈΡΠΎΠ½.sortImports.args ": [" -rc "," --atomic "],
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ isort, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ python.sortImports.path
, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΡΡ.
ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Ρ Π² ΡΠ°ΠΉΠ»Π΅ .isort.cfg
, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ isortΒ».
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ : ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Ρ isort4 Π½Π° isort5, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π°Π³ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ, ΡΠΌ. Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ isort5 ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ
- ΠΠΈΠ½ΡΠΈΠ½Π³ — Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π»ΠΈΠ½ΡΠ΅ΡΠΎΠ² Python.
- Debugging — ΠΠ°ΡΡΠΈΡΠ΅ΡΡ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ Python ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ.
- Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ — Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΡΠ΅Π΄ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΡΡΠΊ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΡΠ΅ΡΡΠΎΠ².
- Basic Editing — Π£Π·Π½Π°ΠΉΡΠ΅ ΠΎ ΠΌΠΎΡΠ½ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ VS Code.
- ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ ΠΊΠΎΠ΄Ρ — Π±ΡΡΡΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ.
- IntelliSense — ΡΠ·Π½Π°ΠΉΡΠ΅ ΠΎ ΡΡΠ½ΠΊΡΠΈΡΡ IntelliSense.
29.01.2019
.ΠΠ±ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ΄Π°
— Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Python 3.9.0
ΠΠ±ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π΄Π΅ΡΠ°Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CPython.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ»
ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ.
-
PyCodeObject
C-ΡΡΡΡΠΊΡΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠΎΠ΄Π°. Π
ΠΏΠΎΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
- PyTypeObject
PyCode_Type
ΠΡΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ
PyTypeObject
, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Python
ΠΊΠΎΠ΄
ΡΠΈΠΏ.
- int
PyCode_Check
(PyObject * co ) ΠΠ΅ΡΠ½ΡΡΡ true, Π΅ΡΠ»ΠΈ co ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ
Ρ ΠΊΠΎΠ΄ΠΎΠΌ
.
- ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»
PyCode_GetNumFree
(PyCodeObject * co ) ΠΠ΅ΡΠ½ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² co .
- PyCodeObject *
PyCode_New
(int argcount , int kwonlyargcount , int nlocals , int stacksize , int flags , PyObject * ΠΊΠΎΠ΄ , PyObject * consts , ΠΈΠΌΠ΅Π½Π° PyObject * varnames , PyObject * freevars , PyObject * cellvars , PyObject * ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° , PyObject * ΠΈΠΌΡ , int firstlineno , PyObject * lnotab ) - ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΠΠΎΠ²Π°Ρ ΡΡΡΠ»ΠΊΠ°.
ΠΠ΅ΡΠ½ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΈΠΊΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ°,
Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅PyCode_NewEmpty ()
. ΠΡΠ·ΠΎΠ²PyCode_New ()
Π½Π°ΠΏΡΡΠΌΡΡ
ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ Π²Π°Ρ ΠΊ ΡΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Python, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°
ΡΠ°ΡΡΠΎ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
- PyCodeObject *
PyCode_NewWithPosOnlyArgs
(int argcount , int posonlyargcount , int kwonlyargcount , int nlocals , int stacksize , int flags , PyObject , int flags , PyObject * ΠΈΠΌΠ΅Π½Π° , PyObject * varnames , PyObject * freevars , PyObject * cellvars , PyObject * filename ,
.
1. ΠΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΈ ΡΡΠ΅Π΄Π° — Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Python 3.9.0
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ CPython ΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΈ ΡΡΠ΅Π΄Ρ Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
ΠΠ΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CPython: Π‘Ρ
Π΅ΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄ΡΡΠ³ΠΈΡ
ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ. ΠΠΈΠ΄Π΅ΡΡ
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅ΡΡΡΡΠΎΠ².
1.1. ΠΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ°
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π»ΡΠ±ΡΡ ΠΈΠ· ΡΡΠΈΡ ΠΎΠΏΡΠΈΠΉ:
python [-bBdEhiIOqsSuvVWx?] [-C ΠΊΠΎΠΌΠ°Π½Π΄Π° | -m ΠΈΠΌΡ-ΠΌΠΎΠ΄ΡΠ»Ρ | ΡΡΠ΅Π½Π°ΡΠΈΠΉ | -] [Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ]
Π‘Π°ΠΌΡΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ — ΡΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΡΠΎΡΡΠΎΠΉ Π²ΡΠ·ΠΎΠ² ΡΠΊΡΠΈΠΏΡΠ°:
1.1.1. ΠΠ°ΡΠΈΠ°Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠΎΡ
ΠΎΠΆ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ UNIX, Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°:
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ Π²Ρ ΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΊ tty-ΡΡΡΡΠΎΠΉΡΡΠ²Ρ, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΡ Π΄ΠΎ EOF (ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅
ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ, ΡΡΠΎ Ρ Ctrl-D Π² UNIX ΠΈΠ»ΠΈ Ctrl-Z, Π²Π²Π΅Π΄ΠΈΡΠ΅ Π² Windows) ΡΠΈΡΠ°Π΅ΡΡΡ.ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°
ΡΠΈΡΠ°Π΅Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.ΠΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΠΎΠ½ ΡΠΈΡΠ°Π΅Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ
ΡΡΠ΅Π½Π°ΡΠΈΠΉ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
-c
ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ (Ρ) Python, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠ°ΠΊ
ΠΊΠΎΠΌΠ°Π½Π΄Π° . ΠΠ΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π½ΠΎΠ²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ. ΠΠ΅Π΄ΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ Π²Π°ΠΆΠ½Ρ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ Python!ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Ρ
-m ΠΈΠΌΡ-ΠΌΠΎΠ΄ΡΠ»Ρ
, Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π°
ΠΡΡΡ ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ Python ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΊΡΠΈΠΏΡ.
Π Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²Π΅ΡΡ Π²Π²ΠΎΠ΄ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.
ΠΠΏΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ,
Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π±ΡΠ΄ΡΡ Π² sys.argv
— ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ
ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π½ΡΠ»Π΅Π²ΠΎΠΉ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ( sys.argv [0]
), ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΡΠΎΠΊΡ, ΠΎΡΡΠ°ΠΆΠ°ΡΡΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊ.
-
-c
<ΠΊΠΎΠΌΠ°Π½Π΄Π°>
ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄ Python Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ . ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π²Π΅Π΄ΡΡΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ, ΠΊΠ°ΠΊ Π²
Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠ΄ΡΠ»Ρ.ΠΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π° ΡΡΠ° ΠΎΠΏΡΠΈΡ, ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
sys.argv
Π±ΡΠ΄Π΅Ρ
"-c"
ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Π½Π°ΡΠ°Π»ΠΎ
sys.path
(ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π² ΡΡΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΊΠ°ΠΊ Π²Π΅ΡΡ Π½ΠΈΠ΅
ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΡΠΎΠ²Π½Ρ).ΠΡΠ·ΡΠ²Π°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ Π°ΡΠ΄ΠΈΡΠ°
cpython.run_command
Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌcommand
.
-
-m
<ΠΈΠΌΡ-ΠΌΠΎΠ΄ΡΠ»Ρ>
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅
sys.path
Π΄Π»Ρ Π½Π°Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠ°ΠΊ
ΠΌΠΎΠ΄ΡΠ»Ρ__main__
.ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ , Π²Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°
(
.