πŸ”‘ Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅: ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

Для создания ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ConfigParser. Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


import configparser

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ConfigParser
config = configparser.ConfigParser()

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ сСкции ΠΈ настройки
config.add_section('Настройки')
config.set('Настройки', 'host', 'example.com')
config.set('Настройки', 'port', '8080')

# Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°
with open('config.ini', 'w') as configfile:
    config.write(configfile)

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ любоС имя для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали "config.ini". Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ добавляСм ΡΠ΅ΠΊΡ†ΠΈΡŽ "Настройки" ΠΈ Π·Π°Π΄Π°Π΅ΠΌ значСния для хоста ΠΈ ΠΏΠΎΡ€Ρ‚Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ "open" ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ "write" ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ConfigParser.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅!

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² являСтся Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π½Π° Python. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· нСобходимости измСнСния самого ΠΊΠΎΠ΄Π°. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы создания ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°.

1. ИспользованиС модуля ConfigParser

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ConfigParser (Ρ‚Π°ΠΊΠΆΠ΅ извСстный ΠΊΠ°ΠΊ configparser) являСтся встроСнным ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π² Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ INI. INI-Ρ„Π°ΠΉΠ»Ρ‹ состоят ΠΈΠ· сСкций ΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния ΠΈ чтСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.


import configparser

config = configparser.ConfigParser()
config.read('config.ini')

# Π§Ρ‚Π΅Π½ΠΈΠ΅ значСния ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°
database_host = config.get('Database', 'host')
database_port = config.get('Database', 'port')

# ИзмСнСниС значСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅
config.set('Database', 'port', '5432')

# Π—Π°ΠΏΠΈΡΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»
with open('config.ini', 'w') as config_file:
    config.write(config_file)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ConfigParser для чтСния ΠΈ записи Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° 'config.ini'. ΠœΡ‹ считываСм значСния 'host' ΠΈ 'port' ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 'Database' ΠΈ измСняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'port' Π½Π° '5432' ΠΏΠ΅Ρ€Π΅Π΄ записью ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ„Π°ΠΉΠ».

2. ИспользованиС модуля YAML

ΠœΠΎΠ΄ΡƒΠ»ΡŒ YAML позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ YAML. YAML - это ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ для чтСния ΠΈ записи Π΄Π°Π½Π½Ρ‹Ρ… Π² структурированной Ρ„ΠΎΡ€ΠΌΠ΅.


import yaml

# Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° ΠΈΠ· Ρ„Π°ΠΉΠ»Π°
with open('config.yaml', 'r') as config_file:
    config = yaml.safe_load(config_file)

# Π§Ρ‚Π΅Π½ΠΈΠ΅ значСния ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°
database_host = config['Database']['host']
database_port = config['Database']['port']

# ИзмСнСниС значСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅
config['Database']['port'] = 5432

# Π—Π°ΠΏΠΈΡΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»
with open('config.yaml', 'w') as config_file:
    yaml.dump(config, config_file)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ YAML для чтСния ΠΈ записи Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° 'config.yaml'. ΠœΡ‹ считываСм значСния 'host' ΠΈ 'port' ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 'Database' ΠΈ измСняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'port' Π½Π° '5432' ΠΏΠ΅Ρ€Π΅Π΄ записью ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ„Π°ΠΉΠ».

3. ИспользованиС модуля JSON

ΠœΠΎΠ΄ΡƒΠ»ΡŒ JSON (JavaScript Object Notation) позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON. JSON - это Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ записываСмый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ языками программирования.


import json

# Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° ΠΈΠ· Ρ„Π°ΠΉΠ»Π°
with open('config.json', 'r') as config_file:
    config = json.load(config_file)

# Π§Ρ‚Π΅Π½ΠΈΠ΅ значСния ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°
database_host = config['Database']['host']
database_port = config['Database']['port']

# ИзмСнСниС значСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅
config['Database']['port'] = 5432

# Π—Π°ΠΏΠΈΡΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»
with open('config.json', 'w') as config_file:
    json.dump(config, config_file)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ JSON для чтСния ΠΈ записи Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° 'config.json'. ΠœΡ‹ считываСм значСния 'host' ΠΈ 'port' ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 'Database' ΠΈ измСняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'port' Π½Π° '5432' ΠΏΠ΅Ρ€Π΅Π΄ записью ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ„Π°ΠΉΠ».

4. ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния - это ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ настройки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· нСобходимости создания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ 'os' для доступа ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ окруТСния ΠΈ использования ΠΈΡ… Π² своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.


import os

# Π§Ρ‚Π΅Π½ΠΈΠ΅ значСния ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния
database_host = os.environ.get('DATABASE_HOST')
database_port = os.environ.get('DATABASE_PORT')

# ИзмСнСниС значСния Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния
os.environ['DATABASE_PORT'] = '5432'

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ 'os' для чтСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния 'DATABASE_HOST' ΠΈ 'DATABASE_PORT'. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ использованиС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ConfigParser, YAML ΠΈ JSON, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ способа зависит ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π²Π°ΡˆΠΈΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±Ρ‹Π»ΠΈ прСдставлСны ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих способов, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вашСй Π·Π°Π΄Π°Ρ‡ΠΈ.

НадСюсь, эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π£Π΄Π°Ρ‡ΠΈ Π² вашСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ИспользованиС config ini для настройки Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠ² Python (2021)

JSON ЀАЙЛ Π’ ΠΠΠ‘Π’Π ΠžΠ™ΠšΠ˜ ПИВОН ΠŸΠ ΠžΠ•ΠšΠ’Π | Python 3, ΠŸΠΈΡ‚ΠΎΠ½ 3

Python Π² .EXE β–Ί КАК?

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸπŸ‘¨β€πŸ’»ΠšΠ°ΠΊ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΈΡ‚ΠΎΠ½ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅? Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ возмоТности популярного языка программирования ΠΏΠΎ шагам

πŸ”Œ Как Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ math Π² python: ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

🐍 Python для Ρ‡Π΅Π³ΠΎ примСняСтся: основныС сфСры примСнСния ΠΈ возмоТности

πŸ”‘ Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅: ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² Python: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС

πŸ“₯ Как Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ CSV Π² Python Π±Π΅Π· усилий Π² нСсколько шагов

🧠 Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свою Π½Π΅ΠΉΡ€ΠΎΡΠ΅Ρ‚ΡŒ с нуля Π½Π° Python? Π›Π΅Π³ΠΊΠΈΠΉ Π³Π°ΠΉΠ΄ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²!