Как хранить секреты

Никогда не храните секретные данные (логины, пароли, токены, ключи доступа) в вашем коде, это плохая практика. В функции и в объекты любой ключ доступа должен передаваться только в виде переменной, хранящей этот ключ. Тут вам поможет библиотека dotenv
Скопировать кодPYTHON
# небезопасный вариант # отправляем запрос с токеном к API ВКонтакте, # токен пишем прямо в функции. # никогда_так_не_делайте def any_function(): secret_token = {'token': 'my_super_secret_token'} # шпионы рады, шпионы крадут токен отсюда response_post = requests.post('https://api.vk.com/method/users.get', data=token) # безопасный вариант # отправляем запрос с токеном к API ВКонтакте # токен получаем из специального хранилища # = только так и делайте = from dotenv import load_dotenv load_dotenv() def other_function(): secret_token = '123' # взяли переменную token из загруженного внешнего хранилища # шпионы печальны, шпионы ушли с пустыми руками response_post = requests.post('https://api.vk.com/method/users.get', data=secret_token)
В следующих уроках вы будете много работать с токенами, не пренебрегайте правилами безопасности даже во время учёбы, пусть лёгкая паранойя войдёт в привычку и станет рефлекторной.
Когда в коде используются какие-то секретные данные, импортируйте их в код извне. Это можно сделать как минимум двумя способами:

Локальное хранение секретных ключей

Создайте файл .env (все файлы, которые начинаются с точки — скрыты от просмотра в консоли и в некоторых операционных системах) и запишите в него переменные в формате ключ=значение, по одной переменной на строку:
Скопировать кодPYTHON
Token=123 Login=test Sid=some_sid
Для доступа к переменным установите через pip библиотеку dotenv :
Скопировать кодBASH
pip install python-dotenv
Затем импортируйте и выполните функцию load_dotenv :
Скопировать кодPYTHON
import os from dotenv import load_dotenv load_dotenv() token = os.getenv('Token') print(token) # 123
Файл .env должен лежать в той же директории, что и исполняемый файл.
Никогда не храните файл .env в репозитории! Проверьте, что в .gitignore есть строчка .env, чтобы случайно не запушить файл на удалённый сервер.

Глобальное хранение секретных ключей

Выполните в баше команду export token=123, это запишет токен в общее пространство переменных окружения. Просмотреть содержимое этого пространства можно командой env в терминале.
Чтобы получить доступ к переменным окружения из кода, воспользуйтесь методом getenv из встроенного модуля os:
Скопировать кодPYTHON
import os account_sid = os.getenv("account_sid") auth_token = os.getenv("token")
Для доступа к глобальным переменным достаточно метода os.getenv.
Где и почему лучше хранить секретные данные проекта?