|
|
|
4.46, Аноним84701 (ok), 13:39, 08/01/2022 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +9 +/– |
>> Случайно пропущенная запятая в списках, кортежах и множествах, приводящая к объединению строк вместо их интерпретации как отдельных значений
> проблемы с запятыми в си сильно зависят от компиляторов, в неправильных компиляторах часто пробел как ошибка
$ echo '#include<stdio.h>
int main(void) { return puts("привет" "анонимно""параллельный" "мир");}'| gcc -Wall -Wextra -xc -oнашареальность - && ./нашареальность
приветанонимнопараллельныймир
(ISO/IEC 9899:TC3): " 6. Adjacent string literal tokens are concatenated."
Хорошо вам там, в параллельной вселенной! А в нашей реальности все немного по другому :(
| |
|
5.57, Аноним (57), 14:28, 08/01/2022 [^] [^^] [^^^] [ответить] [↓] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| –7 +/– |
Да ты ещё трусы на голову надень, чтобы тебе удобней было, и всё будет хорошо, но только для тебя.
Никогда не пиши код, который оформлен, как в твоём примере, ибо это признак того, что программист - чудак на букву "м" и программирует только для себя.
| |
|
6.62, Аноним84701 (ok), 14:41, 08/01/2022 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +6 +/– |
>>> в неправильных компиляторах часто пробел как ошибка
>> цитата ISO C99 плюс простейший пример прямо в шелл
> Да ты ещё трусы на голову надень, чтобы тебе удобней было, и всё будет хорошо, но только для тебя.
Спешу Вас огорчить -- в нашей реальности ношение трусов на голове как-то не способствует изменению стандарта ЯП.
Так что Ваш опыт нам не подходит, увы :(
> Никогда не пиши код, который оформлен, как в твоём примере, ибо это признак того, что программист - чудак на букву "м"
Какая унылая попытка перевести стрелки ...
| |
|
5.68, Аноним (68), 15:05, 08/01/2022 [^] [^^] [^^^] [ответить] [↓] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +1 +/– |
Справедливости ради, с puts() ошибиться не получится - запятые она не примет. И с printf тоже - количество стрингов, если пропустить запятые, не будет совпадать с тем, что в строке-шаблоне.
А вот в питоне беда с этими кортежами и массивами. Вот из недавнего:
Image.open(fname).convert(mode) вернёт 3х мерный массив, если mode='RGB', и двухмерный, если mode='L'. Где логика?
| |
5.79, pavlinux (ok), 16:09, 08/01/2022 [^] [^^] [^^^] [ответить] [↓] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| –3 +/– |
Детская попытка высера.
> puts("привет"
...
В C можно нах...ячить так, что ни одни парсер, анализатор, человек не вдуплят.
#include<stdio.h>
int main(void) {
int value = 1;
return printf("value %d" "value+1 %d", "value +2 %d\n", value, value+1, value+2);
}
$ ./a.out
value -412667900 value+1 1
Рекомендую для старта: grep -R va_list /usr/include/
А не выёб... гуглением стандартов.
| |
|
|
7.84, pavlinux (ok), 16:28, 08/01/2022 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| –2 +/– |
> Рекомендую перед
Я ж говорю, завязывай с дpoчиловом на идеальный мир ...
Сходи на хитбаб, ознакомься как в реaльном мире живут с -W -Wall -Wextra -petantic -ansi -Wstrict- .... итп
Такой муйнёй занимаются только домашние хелловордисты. :D
Когда у тебя в проекте заняты 50 человек, 5-6 языков, три платформы, 4 аппаратные арх.
личные тикеты расписаны до ноября 2022 года ... те не до рассматривания срача от -Wall -Wextra
| |
|
|
|
|
|
|
1.12, Аноним (12), 11:12, 08/01/2022 [ответить] [﹢﹢﹢] [ · · · ] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
Вообще забавно, с пропущенной между строками запятой это прямо жиза. Сомневаюсь конечно, что кто-нибудь пропускает запятую в кортеже или добавляет в конце (разве что те, кто никогда не юзал питон прежде, потому что это анриал). Поэтому обычно элементы списков разделяют построчно. То, что ошибки обнаружили только в шляпных проектах, довольно показательно.
| |
1.19, Аноним (19), 11:38, 08/01/2022 [ответить] [﹢﹢﹢] [ · · · ] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +3 +/– |
values = (1,)
ааа... да. я помню было наоборот. когда силами копипасты из строки вида "a, b, c, ..." в коде получается вот такое
def some_method(self, a, b, c):
self.a = a,
self.b = b,
self.c = c,
и забываешь про эти запятые, темболее никто на синтаксис не ругается. но в процессе работы с этими переменными тщетно силишься понять почему они кортеж, темболее если это датакласс в другом файле который на глаза не попадается.
очевидно под подозрением становятся аргументы метода, особенно если аргументы получаешь из недоверяемого апи. часа полтора дебага.
| |
|
|
|
|
5.124, . (?), 10:13, 09/01/2022 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
Ну, скажем так - устаревший на сорок лет. Ему (как и Си) простительно - компьютеры были большие, код простым, мощности надо было экономить, а ломать совместимость нельзя.
Нескучному язычку ломающему совместимость раз в год "патамуштамагем" - как бы не.
А, ну да, ну да - зато у нас есть PEP!
| |
|
|
|
|
7.156, Аноним (31), 03:39, 11/01/2022 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +2 +/– |
Да мне глубоко накласть на ваши питонопроблемы с клиническим пробелодрочерством, когда есть более адекватные языки. Сами объясняйте друг-другу, почему вы не можете избавиться от грабель, на которые сами же постоянно и натыкаетесь. А мне в это болото лезть незачем.
Сначала сам же заявил про ненужный атавизм, потом отправил куда-то читать - почему он нужен...
| |
|
|
|
|
|
|
|
|
|
|
|
6.160, ptr (ok), 03:27, 12/01/2022 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
> Для GCC, чтобы тут не попасться, можно использовать -Wtraditional. А что использовать
> для Python?
Просто штатный ключ компиляции и статический анализатор кода - это все же различные вещи.
Линтер использовать проблематично при написании скриптов для встроенного в какое-то приложение Python. Да запретить пушить недописанный код в git - усложнить регулярное резервное копирование исходников, которое при пуше выполняется автоматически.
| |
|
|
|
|
|
1.115, kai3341 (ok), 23:06, 08/01/2022 [ответить] [﹢﹢﹢] [ · · · ] [↓] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| –1 +/– |
Эм. Я смею заметить, что многих ошибок можно было легко избежать, если бы соблюдалось хотя бы PEP8. Знаете, сколько раз я тыкал носом и заставлял писать каждый элемент списка на отдельной строке? Сколько раз я возмущался, что 2 коротких элемента в одной строке не читаются?
А сколько раз константные списки просил выносить из функций наружу?
| |
|
2.122, угу (?), 07:51, 09/01/2022 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
Язык г-но и псевдокомпилятор ничего не проверяет - поэтому мы просто запритим-запритим ниправильные-ниправильные, плахие стили кодинга - вместо того чтобы этим занималась собственно языковая среда. И потом будем плакать, потому что опять какой-то гад нисаблюл.
Причем от уже процитированного выше self.a=a,
никак не защищает.
| |
|
3.127, Аноним (-), 13:05, 09/01/2022 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
> Язык г-но и псевдокомпилятор ничего не проверяет - поэтому мы просто запритим-запритим
> ниправильные-ниправильные, плахие стили кодинга - вместо того чтобы этим занималась собственно
> языковая среда. И потом будем плакать, потому что опять какой-то гад нисаблюл.
>> При этом проблемы с запятыми не специфичны для Python и часто всплывают в проектах на C/C++
А, ну да, "Вынипонимаити! Это другое!"
| |
|
|
|