Змея / Говнокод #25805 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
connect_attempt = 0
		while True:
			try:
				r = requests_method(**kwargs)
			except Exception as e:
				if connect_attempt < cls.CONNECT_ATTEMPT_MAX:
					connect_attempt += 1
				else:
					connect_attempt = 0
					switchNext('Bad proxy')
				
				continue
			
			connect_attempt = 0
			if cls.re_captcha.search(r.text):
				switchNext('Capthca')
				continue
			return r

Отрывок из прокси свитчера для моего парсера.
try except в цикле - это плохо?

Запостил: OlegUP OlegUP, (Updated )

Комментарии (140) RSS

  • Не знаю.

    Можно просто
    except:

    Но по-моему плохо ловить все подряд исключения без разбора.

    Еще, что такое "Каптхка"?
    Ответить
    • Просто except Будет ловить keyboardinterrupt, например.

      >switchNext
      В питоне используется сишный_стиль, в одной проге использовать несколько плохо смотрится.
      Ответить
      • "Сишного" стиля не существует, это называется "snake_case". Кстати, пройдись по именам стандартной библиотеки питона, нет там никакого стиля.
        Ответить
        • Читни пепца,
          https://www.python.org/dev/peps/pep-0008/

          Function names should be lowercase, with words separated by underscores as necessary to improve readability.



          А про сишный стиль согласен
          В Win32API есть си, а стиля такова нет
          Ответить
            • Ну и что? Пиздон сам свою же коньституцию не соблдает
              Даже в твоем выводе я насчитал два разных кодстайла
              Ответить
              • Искать неконсистентности в язычке, который даже структурируется пробелами это всё равно, что бить млоденцов.
                Ответить
                • Ну вот например в Java, Kotlin, Swift, даже частично в ObC и уж конечно в C# анально-ректально насильно ввели кодстайл, и все его соблюдают, как миленькие
                  Ответить
                  • Куда что ввели?

                    Единственный язык, куда что-то ввели, это go, потому что там дедушка лучше знает, когда тебе писать
                    Ответить
                    • Ввели тебе за щеку же

                      В ObjC у тебя класс NSPetuh. Не nsPetuh не ns_petiih, а NSPetuh, например.
                      Ответить
                • Школоуебан, ты отступы не осилил? Они есть в любом хуё-моё профессиональном коде.
                  Ответить
                  • Ты дурак
                    Насрал в кулак
                    Держишь крепко
                    Думаешь конфетка
                    Ответить
          • pep8 для python и google code style для C++ - говно.
            Мне нужно быстро отличать функции от полей.
            И кстати я не пользуюсь IDE (Спасибо 2ГБ на моем старом ноуте)

            Сначала в C++ я применял google code style.
            Но все таки то, что вроде как называется "Венгерская нотация" будет получше.
            Ответить
            • Какой багор, когда питон не по pep8.
              Ответить
              • И таки pep8 говно, как и правила именования для Linux Kernel.

                потому что переменные, поля и функции именуются одинаково snake case'ом.
                А в Linux до кучи еще и струтуры так же.
                Ответить
                • >pep8 говно
                  во-первых нет

                  во-вторых лучше куржопеньский стандарт, чем никакого
                  Ответить
                • Потому что функции — это тоже поля. Если ты не можешь по названию отличить callable поле, то значит твоё именование переменных — говно, RTFM.
                  Ответить
                  • А как ты прикажешь быть с пропертей?

                    class GostPetuh:
                      @property
                      def is_bukva(): #...
                    Ответить
                    • Проперти симулируют поведение обычных полей, что с ними может быть не так?
                      Ответить
                      • Как они должны называться, чувак?
                        Как проперти?
                        Ответить
                        • Очевидно: так, чтобы точно отображать смысл свойства. А неоднозначностей с «is_X» можно избежать, если писать конситентный код, в котором либо есть проперти (тогда — «guest8.is_petuh»), либо их нет («guest8.is_petuh()»).
                          Ответить
                          • Не понял про консистеный код

                            Где-то нужны проперти, где-то нет. Проперти обычно идемпотентны и шустры

                            Методы -- нет
                            Ответить
                            • Ещё раз: проперти созданы для того, чтобы абстрагироваться от богомерзких «геттеров» и «сеттеров». С точки зрения пользователя класса, проперти идентичны полям, и, не нарушая абстракцию, нельзя определить, является ли «petuh.dlina_grebeshka» простым полем или проперти. Поэтому проперти должны именоваться точно так же, как и обычные, non-callable, поля.

                              > Где-то нужны проперти, где-то нет. Проперти обычно идемпотентны и шустры
                              Ну да. Если получение длины гребешка — слишком тяжёлая операция для прозрачного заворачивания в проперти, можно явно объявить метод (который принято именовать в форме «сказуемое_подлежащее», или, в частности, «действие_ресурс»): «petuh.calculate_dlinu_grebeshka()».

                              Но вообще, статей по правильному™ именованию сущностей — вагон и маленькая тележка, выбирай любую и применяй с умом.
                              Ответить
                              • Хорошо, я тебя понял.

                                В Java и методы и поля начинаются с маленькой буквы.
                                В C# -- с большой (и проперти тоже).

                                Верно-ли я понимаю, что и C# и Java кодстайлы тоже говно?
                                Ответить
                                • Про кодстайлы я ничего и не говорил, я говорил про именование сущностей. От кодстайла, по большому счёту, требуется только консистентность, а сам он может быть любым в рамках разумного (например, в «Python» для пельменных/полей у меня используется пеповский snake_case, в «C», «C++» и прочем — camelCase; имена типов — везде UpperCase).

                                  А вот «C#», кстати, я не одобряю: код, в котором с больших букв начинаются только названия типов, визуально выглядит легче, чем решёточный подход. Но это уже вкусовщина, конечно.
                                  Ответить
                                    • Стиль? «Mixed_Case_With_Underscores». Такой используется в языке «Ада», именно поэтому я за «Ад» у него такое длинное название.
                                      Ответить
                                  • ничего не понял

                                    чем кодстайл отличается от наименований?

                                    что именно не нравится тебе в пеп 8?
                                    чем это отличается от сишарпа и джавы?
                                    Ответить
                                    • > чем кодстайл отличается от наименований?
                                      Кодстайл — это правила, по которым код оформляется: отступы, новые строки, разделение слов в многословных идентификаторах (snake_case, camelCase, MACRO_CASE, etc), пробелы вокруг выражений и так далее.

                                      Правила именования — это то, как именно программист называет переменные, функции, классы, методы и прочие сущности. Одно из таковых я уже приводил: функции/методы принято называть в виде «сказуемое_подлежащее»: «get_user_info», «create_words», «delete_instance» — нутыпонел. Заметь, что примеры я привёл в snake_case, но в контексте правил именования конкретный кодстайл совершенно неважен.
                                      Вот небольшая статейка на тему: https://hackernoon.com/the-art-of-naming-variables-52f44de00aad.

                                      > что именно не нравится тебе в пеп 8?
                                      Он мне нравится. Я за «PEP8».

                                      > чем это отличается от сишарпа и джавы?
                                      В них мне тоже всё нравится, кроме того, что в шарпеях методы принято писать с большой буквы. По моему субъективному мнению, это немного ухудшает читабельность кода.

                                      UPD: хотя я несколько неточен. Зачастую, в локальные кодстайлы (правила, подробно регаментирующие написание кода, которые действуют только в одной организации/команде) в том числе входят и правила именования, да.
                                      Ответить
                                      • Подлежащее сказуемое подлежит сказанию.

                                        Туфтологическая федорация.
                                        Ответить
                                        • В «PHP» нет никаких подлежащих и никаких сказуемых. Именно поэтому я за «PHP».
                                          Ответить
                                            • В 'APL' и в 'J' точно есть. Хотя их принято называть не членами предложения, а частями речи: глаголом, существительным, наречием, союзом, знаками препинания.

                                              А в S" Forth" только операторы над содержимым стека и данные: слова, словари (списки), статьи.

                                              Поправьте меня, если я ошибаюсь.
                                              Ответить
                                        • > твои слова?
                                          Мои слова заканчиваются так:
                                          >>> то значит твоё именование переменных — говно

                                          > petuh.predict или petuh.collapse: поле или метод?
                                          Сравни:
                                          «petuh.predict_answer или petuh.collapse_matrix»
                                          В такой форме это — однозначно методы. Именно это я и пытаюсь донести.

                                          > https://www.joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong/
                                          Хорошая статья, полезная, ещё бы не экономить буквы и писать «unsafe_name» — было бы вообще заебись. Чай, не начало двухтысячных, и ширина экранов — не 80 символов.
                                          Только я не понимаю, как она противоречит идее о том, что называть сущности надо точно и однозначно.
                                          Ответить
                                          • >однозначно методы.
                                            class Petuh:
                                              def process():
                                                if self.predict_answer:
                                                    self.do_predict_asnwer()
                                                if self.pokovyratsa_v_zhope:
                                                    self.do_pokovyratsa_v_zhope()


                                            как видишь, не все так однозначно
                                            Ответить
                                            • Ну так правильно, если поля именуются как методы, то такое именование — говно.

                                              class Petuh:
                                                def process():
                                                  if self.need_answer_prediction:
                                                      self.predict_asnwer()
                                                  if self.is_zhopa_cheshetsya:
                                                      self.pokovyratsa_v_zhope()

                                              Исправил. Теперь всё однозначно, проверь.
                                              Ответить
                                                • Пожалуйста. Приятно подискутировать с умным человеком.
                                                  Ответить
                                              • Чем петух ковыряться то будет? Клювом?
                                                Ответить
                                                • А петух может переставлять джамперы?
                                                  Ответить
                                                  • Конечно, иначе как он выберет master, slave или cable select в своем 5400 hdd?
                                                    Ответить
                                                    • У них заводская конфигурация cable select поэтому работают искаропки
                                                      Ответить
                                                      • Ну это у тебя свежачок, года так 1997-го
                                                        Ответить
                  • а? что? съел? съел про пертю? а? как тебе такое? а? прожуй-ка! а? что? съел? Чего молчишь? В Бобруйск ездил? А? Чего косишь? А? Заело, да? Ездил в Бобруйск? Ты, хуй? В Бобруйск ездил? Ездил, падло? Ездил, гад? Ездил, падло? Ездил, бля? Ездил, бля? Ездил, бля? Чего заныл? Ездил, сука? Ездил, бля? Ездил, бля? Ездил, бля? Чего ноешь? Чего сопишь, падло? Чего, а? Заныл? Заныл, падло? Чего сопишь? Так, бля? Так, бля? Так вот? Вот? Вот? Вот? Вот, бля? Вот так? Вот так? Вот так? Вот так, бля? На, бля? На, бля? На, бля? Вот? Вот? Вот? Вот? На, бля? На, сука? На, бля? На, сука? На, бля? На, сука? Заныл, бля? Заело, бля?
                    Ответить
                  • А еще в «Python» никаких полей нет и называются они аттрибутами. Именно поэтому я за «Python».
                    Ответить
                        • GIL есть в "cPython" -- конкретной реалзиации пустона
                          В самом питоне нет
                          Ответить
                            • Воще я не очень уверен, что GIL это плохо.

                              Синхронизация тредов и борьба с гонками -- дело сложное, скриптомакаки не осиливают обычно.

                              Конечно, GIL портит настроение когда у тебя 56 ядер, но в эпоху микросервисов можно и 56 микросервисов запустить.
                              Ответить
                          • Does PyPy have a GIL? Why?

                            Yes, PyPy has a GIL. Removing the GIL is very hard. On top of CPython, you have two problems: (1) GC, in this case reference counting; (2) the whole Python language.

                            For PyPy, the hard issue is (2): by that I mean issues like what occurs if a mutable object is changed from one thread and read from another concurrently. This is a problem for any mutable type: it needs careful review and fixes (fine-grained locks, mostly) through the whole Python interpreter. It is a major effort, although not completely impossible, as Jython/IronPython showed. This includes subtle decisions about whether some effects are ok or not for the user (i.e. the Python programmer).

                            CPython has additionally the problem (1) of reference counting. With PyPy, this sub-problem is simpler: we need to make our GC multithread-aware. This is easier to do efficiently in PyPy than in CPython. It doesn’t solve the issue (2), though.

                            Note that since 2012 there is work going on on a still very experimental Software Transactional Memory (STM) version of PyPy. This should give an alternative PyPy which works without a GIL, while at the same time continuing to give the Python programmer the complete illusion of having one. This work is currently a bit stalled because of its own technical difficulties.

                            Отсюда: https://doc.pypy.org/en/latest/faq.html#does-pypy-have-a-gil-why

                            Так что и в «пи-пи» он тоже есть.

                            А вот в «Jython» и в «Iron Python» похоже, что нет.
                            Ответить
                    • Объясни, что ты спизднул.

                      A = в «Python» никаких полей нет
                      B = называются они аттрибутами
                      A и B => в «Python» никаких атрибутов нет.

                      ???
                      Ответить
                      • В «PHP» ничего этого нет. Именно поэтому я за «PHP».
                        Ответить
                        • Переведи на «PHP».
                          Поэтому я за «PHP».
                          Именно поэтому я за «PHP».
                          В «PHP» ничего этого нет. Именно поэтому я за «PHP».
                          Ответить
                            • >> Позволю себе напомнить, что на "PHP" работают такие мастодонты IT-индустрии, как "ВКонтакте" и "Facebook".

                              >> Для того, чтобы создавать проекты уровня "ВКонтакте" и "Facebook" на "PHP", вся эта хуйня не требуется.

                              >> Кому нужно "C++" когда есть "PHP" и прочее?

                              >> Советую процедурный "PHP" без фреймворков.

                              >> Позволю себе в очередной, блядь, раз напомнить, что на "PHP" работают такие гиганты IT-индустрии, как "ВКонтакте", "Facebook", "Yahoo" и "Wikipedia".

                              >> А ведь "C#" и подобные ему - полное говнище, не в пример "PHP".

                              >> Вы все заебали со своим кодом на "C++", "bach", "Python" и "VisualBasic". На этих блядущих языках уже давно адекватные программисты ничего не пишут - все перешли на "PHP".
                              Ответить
            • Венгерская нотация описывает только префиксы
              Ответить
        • Нету разве что в библиотеках, написаных в 90-х типа threading.
          Ответить
                • у пыха тоже много калек с джавы
                  тупых и нелгичных, как и все в пыхе

                  пыхеры напоминают девочку девяти лет, которая накрасила маминой помадой пол лица и напялила мамины туфли на 4 размера больше
                  Ответить
  • вообще нормально

    ловля блох в питоне ничего не стоит
    это не жаба и не кресты
    Ответить
    • То есть в крестах, которые в разы быстрее питона исключения едят больше ресурсов? Что то не верится.
      Ответить
      • Подозреваю, что гость имел в виду другое: в «Питоне» и без того много лишней нагрузки, так что ловля исключений на общем фоне будет незаметна.
        Ответить
      • Язык не может быть быстрее или медленнее другого языка.

        Но исключения в оптимизированном нативном коде куда более заметны (Как минимум -- просёром префетча)
        Ответить
        • А как же холивары на тему того, какой язык быстрее? А как же фейсбуковский кокококомпилятор из «PHP» в сишку? А как же заявления компаний-гигантов о том, кокококой буст пирфоманса они получили в результате перехода с одного ЯП на другой?
          Ответить
  • Есть ли среди вас такие дауны, что пойдут на голосувание?
    Ответить
  • @@try except в цикле - это плохо?

    Попахивает гнилью.
    Любопытно, что в языках не поддерживающих обработку исключений, подобие конструкции try..except можно запилить... c помощью макроса с циклом внутри.
    Ответить
          • Сорян, не ту ссылочку запостил. Ну тогда вот код:

            ; http://www.purebasic-lounge.de
            ; Author: remi_meier
            ; Date: 09. December 2006
            ; OS: Windows
            ; Demo: Yes
            
            
            Global ___Exception.l
            Macro Throw(ex)
              ___Exception = ex
              ProcedureReturn
            EndMacro
            
            Macro Exception(ex = -1)
              CompilerIf ex = -1
                If ___Exception : ProcedureReturn : EndIf
              CompilerElse
                If ex = ___Exception : ProcedureReturn : EndIf
              CompilerEndIf
            EndMacro
            
            Macro CatchException(ex = -1)
              CompilerIf ex = -1
                If ___Exception : Break : EndIf
              CompilerElse
                If ex = ___Exception : Break : EndIf
              CompilerEndIf
            EndMacro
            
            Macro Try()
              Repeat ;<
            EndMacro
            
            Macro EndTry()
              Until #True ;>
            EndMacro
            
            Macro Catch(ex = -1)
              CompilerIf ex = -1
                If ___Exception ;<
              CompilerElse
                If ex = ___Exception ;<
              CompilerEndIf
            EndMacro
            
            Macro EndCatch()
              EndIf ;>
            EndMacro
            
            Macro ClearException()
              ___Exception = 0
            EndMacro
            
            
            
            ;- EXAMPLE
            
            Enumeration 1
              #ALLOCATION_FAILED
              #READFILE_FAILED
              #OPENWINDOW_FAILED
            EndEnumeration
            
            
            Procedure.l memAlloc(Size.l) : Exception()
              Protected *mem
              *mem = AllocateMemory(Size)
              If Not *mem
                Throw(#ALLOCATION_FAILED)
              EndIf
              ProcedureReturn *mem
            EndProcedure
            
            Procedure.l fileRead(name.s) : Exception()
              Protected file.l
              file = ReadFile(#PB_Any, name)
              If Not file
                Throw(#READFILE_FAILED)
              EndIf
              ProcedureReturn file
            EndProcedure
            
            Procedure.l winOpen() : Exception()
              Protected win.l
              win = OpenWindow(#PB_Any, 0, 0, 200, 200, "")
              If Not win
                Throw(#OPENWINDOW_FAILED)
              EndIf
              ProcedureReturn win
            EndProcedure
            
            
            Try() ;>
              winOpen()
              *mem = memAlloc(20)
              CatchException()
              PokeS(*mem, "c:\lol")
              
              file = fileRead(PeekS(*mem))
              CatchException()
              WriteString(file, "lol")
            EndTry() ;<
            
            Catch() ;>
              Debug "exception!!"
            EndCatch() ;<
            
            ; IDE Options = PureBasic v4.02 (Windows - x86)
            ; Folding = --


            На сях видел аналогичное, пример поищите сами.
            Ответить
      • Хз. Без костылей такое не запилиит, и совместимость будет нулевая.
        В винде можно вызвать API RaiseException.
        Ответить
        • В форте есть доступ к стеку возвратов, слова для работы с исключениями полноценно реализуются на самом же форте: CATCH сохраняет состояние стека развратов и зовет слово, THROW его восстанавливает и делает возврат, таким образом попадаем туда, откуда вызвали CATCH.
          Ответить
    • Забавно, что реализация исключений и сделана как раз с помощью прыжков
      И даже SEH
      Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8