Пример:
Не знаешь, как какие-то ветки слить в Гите - и придётся весь проект многогодичный выбрасывать, придётся его превращать в сегодняшний, сделанный за один день. Естественно, вся история улетела, все многостраничные описания в коммитах улетели. Вот Линус Торвальдс любит по несколько страниц в одном коммите написать ценной информации всякой. Сидишь, читаешь один коммит полдня. Вот это всё может пропасть только из-за незнания того, как в Гите что-то там выдрать из проекта. Мне так пришлось один проект переначинать свой. По неопытности туда пароль занёс и вырезать его так и не смог из структуры репозитория через пару прошедших лет. Гит просто отказывался выполнять операцию по переделке этих деревьев. Там нужно было сам коммит раскладывать на части, так как он таким, собранным объектом является из разных кусочков, потом переделывать содержимое, а потом это обратно собирать и закоммичивать этот видоизменённый коммит заново. А чтобы выполнить эту операцию, нужно было более глубокое понимание Гита, которого у меня не было тогда, больше всяких знаний. И времени на это не было, чтобы всё это изучать сидеть. Пришлось всю эту историю проекта коммитов на триста со всеми объяснениями в коммитах (где, что и почему делал) удалить, а потом создавать проект типа “здрасьти, я проект, сделанный за один день”. Просто историю проекта не проследишь. А в коммитах бывают многие мысли про плюсы и минусы решений.
Почитай просто какой-нибуд репозиторий типа линуксового ядра, там много всякой инфы в коммитах. Там же и учишься их писать правильно

OceanДа хочется всё и сразу. Не, может показаться, что это простая тема. Но это не простая тема. Там за этим стоит математика. И чем лучше ты видишь эту математику за тестами, тем чище у тебя тесты. Тесты тоже можно дерьмово написать. Наличие тестов ни о чём не говорит. Они банально могут нихера не проверять. Тесты есть, они пишут, что всё окей, а там дрова. Мало ли что они пишут.
Я хочу для практики тесты и к простым писать сейчас, чтобы навык до автоматизма довести и библиотеку освоить хорошо, и кейсы уметь годные.
Поэтому будешь плохие тесты писать. Вот как задачи решаешь “я решила! я решила! у меня всё написано!”, вот так же и тесты будешь писать “у меня всё правильно! у меня всё правильно! у меня тесты показывают OK везде!”.
OceanГит - вообще сложнейшая тема. Его за секунду так просто не изучишь. Его надо изучать послойно, много слоёв в нём.
Я так с гитом работать училась и с виртуальными окружениями. Коммитила всякую фигню, чтобы последовательность действий до автоматизма запомнилась и я в ступор не впадала при необходимости
То есть изучать и тесты, и Гит в одно и то же время - ну, такое. Это как взять с собой в бассейн велосипед. Можно же ехать по дну бассейна на велосипеде и заодно руками там разные стили плавания осваивать. Так ты научишься ездить без рук на велосипеде и потренируешься плавать разными стилями. Ага. Ну, кажется так-то логично всё. А ещё виртуальное окружение, конечно же, как мы про него забыли. Добавим ко всему этому акваланг ещё. Дело же как раз на глубине будет происходить и там можно аквалангизму поучиться.
Короче, это туфта всё. Ты ничего уметь не будешь. И эта экономия времени, ради которой этой всё делается, в итоге выльется в большие затраты времени. Потому что научиться надо будет этому всему, а учиться этому придётся с нуля или с одной тысячной.
OceanИменование - это сложная тема. Там много всяких стилей. Где-то их нужно менять с одного на другой и обратно. Где-то их нужно склеивать вместе. Если тебе кажется, что это простая тема - прочитал статью или главу в книге и всё знаешь, - то не, оно так не работает. Там нужно много чего прочитать и прочитать одно и то же от нескольких разных авторов, потому что кто-то что-то да забудет упомянуть. И только потом ты будешь видеть, где вот нужно это сделать, а где не нужно вот это делать, а где нужно одно заменить на другое. Всё это нужно знать к этому моменту.
Я сначала писала ну как давно на паскале учили, не вникая особо в нейминги
OceanЭтот стиль пришёл с Java. Java - это другой язык. Он по-другому сделан, поэтому тащить что-то из Java в Python не надо. В Java нужно всегда знать, какой у тебя тип там передаётся или возвращается. А в Python не надо никогда знать про то, какой тип передаётся или возвращается. Поэтому вот этот стиль сделан под IDE, под Java-программистов, которым без типов ничего не понятно, под что угодно. Но к питону он отношения не имеет.
Тут сразу спрошу, раз речь про доки зашла: я уже тренируюсь докстринги писать. Чтобы нарабатывать навык, а не потом страдать, как с именами. Это рано еще?
Примерно в таком духе:def cube_lateral_area(edge): """Calculate area of a cube lateral surface using cube's edge size :argument: edge(int): size of cube edge :return: (int): a cube lateral surface area """ return 4 * edge **2
OceanХочешь написать, что возвращается, - пишешь своими словами.
Вот когда нет определенного имени переменной у того, что функция возвращает, но я хочу тип возвращаемого указать как правильно это сделать?
Например
import math help(math.cos)
cos(...)
cos(x)
Return the cosine of x (measured in radians).
import re help(re.search)
search(pattern, string, flags=0)
Scan through string looking for a match to the pattern, returning
a match object, or None if no match was found.

OceanЭто нужно узнавать не из IDE, это нужно узнавать из PEP8 и подобных руководств (они в разных языках бывают, называются “стилевые руководства”). Его нужно заучивать и потом наизусть знать. Иначе IDE может тебе не показать, что там есть какая-то ошибка, а она там в это время будет. Тебе будет казаться просто, что там всё правильно. А IDE может вообще не обрабатывать какие-то случаи, потому что она не обязана их обрабатывать. Особенно какие-нибудь замороченные случаи, где глубокая семантика. Слишком дорого её бывает реализовывать по времени, поэтому идешники - разработчики IDE - её могут проигнорировать, причём она будет стоять в PEP или его аналоге чуть ли не на центральном месте.
в задании коварно дан коэф с именем l, который я не восприняла проблемой, глядя на само задание, но в процессе решения IDE мне напомнила, что это же ambiguous variable и нарушает договоренности о стиле кода! Теперь я это запомню осознанно
OceanИх не надо импортировать. Надо импортировать модуль, а потом обращаться к ним по имени модуля.
мне пришлось вспомнить и проверить встроенные функции python и осознанно импортировать нужные логарифмы из math
Есть несколько косинусов. Они все называются cos().
>>> import math >>> import cmath >>> >>> math.cos <built-in function cos> >>> cmath.cos <built-in function cos> >>> >>> math.sqrt(-1) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: math domain error >>> cmath.sqrt(-1) 1j >>>
OceanБитовые операции очень важны. Все устройства, порты, сетевые пакеты, заголовки файлов (архивы, экзешники, графика, базы данных, файловые системы) хранят и передают информацию в виде битов. Допустим, у тебя есть опции какой-то фигни в программе, хранить ты их будешь в одном числе в виде битовых флажков. Никто не делает 100500 переменных, чтобы все опции хранить в виде True/False. Просто в одном числе хранятся все опции и это число потом быстро везде передаётся, пересылается по сети, по кабелю и так далее.
У меня была еще одна группа “нелюбимых” задач: про побитовые операторы и переводы из одной системы счисления в другую.
Системы счисления просто учат тебя работать с числами, как и множество других задач числодробительных. Это даёт мышление алгоритмами. Это учит работать с полиномами как с массивами немножко. На полиномах вообще много чего построено. Вся эта графика ужатая - это всё полиномы.
OceanНачинать надо с блокнота. А Pycharm может пропасть. Как только она пропадёт, ты останешься полностью без рук. Подключишься на сервер, там нужно будет с кодом поработать, а Pycharm не запускается, так как оконной системы нет. Зато куча блокнотов консольных доступна практически отовсюду, а ты в них работать не умеешь, потому что они там за тобой сопельки не подтирают, тут за тобой сопельки не подтирают и думать обо всём теперь нужно самому (раньше за тебя среда думала), а у тебя нет этих навыков. В итоге вся твоя работа разваливается. Как с невыученной таблицей умножения - стопор и всё.
Я год не могла понять в чем проблема с Pycharm
То есть IDE после блокнота должна быть, а не вместо блокнота. Как и тесты должны быть после мозгового дебаггера, а не вместо мозгового дебаггера. Я вот твою программку тестами не обкладывал, я её просто в голове у себя запустил и всё - ошибки посыпались.
OceanНе, тебе свои файлы надо заводить. На каждую книжку - новую директорию с файлами, на каждый ресурс - новую директорию с файлами. И там везде заметки оставлять. На книжку делается файл конспект книжки и файл прохождения книжки, также могут сохраняться какие-то картинки из книжки. Для этого всего директория и нужна, которая объединит это всё, как модуль объединяет функции воедино вокруг чего-то общего. На ресурс делается файл заметок. В файле заметок идёт адрес и информация, которая лежит по этому адресу (сохранять информацию можно целиком, а можно только описание этой информации сохранять). Адрес этого топика, например, - это число 40288. Его легко сохранить, как и список таких адресов. Ты любой топик открываешь на форуме через год-два-три и там просто число в адресной строке заменяешь на 40288. То есть это не напряжно. Можно и ссылки сразу сохранять, но они будут длиннее фигурировать и больше места занимать. И потом ты эти файлы конспектов, заметок, картинок, примеров можешь обвесить скриптами
А тут есть какая-то функция на форуме, чтобы сохранить тему в избранное. Я некоторые перечитываю и возвращаюсь к ним, но становится все сложнее их все не терять. Я нашла функцию подписки на тему, но это немного не то.

Вот для создания директорий для всяких ресурсов можешь на облаке https://drive.google.com создать документ xls и туда сохранять ссылки и информацию. На любые ресурсы. Обычно папку делаешь для ресурса и заполняешь её документами, HTML-страницами, текстовыми файлами, картинками. Картинки тоже изготавливаешь, потому что иногда лень перенабирать какую-то информацию, проще сфотографировать экран и соединить вместе несколько картинок с формулами. Так ты сможешь смотреть и с компа там инфу, и со смартфона. Иногда нужно быстро что-то вспомнить записанное, а комп выключен. Поэтому смартфон тоже должен доступ иметь к этим данным.
Главное, всё в одном место не писать. Как учиться нужно каждой теме по отдельности, так и сохранять информацию нужно тоже для каждого ресурса по отдельности и не скупиться ни на папки, ни на файлы. Лучше раздельно всё иметь, чем в виде такой “удобной” и “экономной” каши.