LINUX.ORG.RU

Python стал юзабельным

 ,


0

2

http://www.pythonb.org/

Ъ:

Python with Braces is a variant of the Python programming language, that has one significant difference: it uses standard C style braces for defining scopes rather than the classic python indentation. This makes Python more similar to other programming languages, and can also enable the introduction of new concepts such as anonymous functions and classes to Python.


Ответ на: комментарий от anonymous

Ну так не приравнивай себя к остальным, если у тебя мозг не позволяет это осилить, то не значит что у всех так.

z00ke
()

and can also enable the introduction of new concepts such as anonymous functions and classes to Python.

new concepts

anonymous functions and classes

не понятно, вроде бы и то, и другое есть

Virtuos86 ★★★★★
()
Последнее исправление: Virtuos86 (всего исправлений: 1)
Ответ на: комментарий от anonymous

я вообще без понятия, о чем ты

С этого же и надо было начинать! У меня бисер кончился.

baverman ★★★
()
Ответ на: комментарий от baverman

Если бы ты не привет js как пример

То я бы его даже палочкой не ткнул. this в js это добрая половина всех ошибок и WTF. Более сломанной фичи найти тяжело, а ты тут про автоматический мозг задвигаешь. Убаюкайся, уже, идиотик.

Ты дебил и не лечишься.

Пока ты не пришел в тред, тут разговаривали про синтаксис. Ты припёрся и пытаешься что-то лечить про семантику, при этом наезжая в агрессивной форме.

Может тебя начальник заставлял писать на JS и анально карал, когда ты не осилил? Иначе откуда столько бугурта при упоминании JS?

Но чтобы тебе стало легче, я скажу: семантика в JS действительно полное говно. Даже если специально стараться сделать язык более испорченный, чем JS, не уверен, что получилось бы. Тебе полегчало теперь?

Но при этом к синтаксису всё это не имеет никакого отношения. Так что теперь, когда твой бугурт, надюсь, улёгся, слейся из треда и не мешай адекватным людям общаться.

anonymous
()
Ответ на: комментарий от z00ke

Ну так не приравнивай себя к остальным, если у тебя мозг не позволяет это осилить, то не значит что у всех так.

Забавно, как одни и те же люди рассказывают сначала про «удобный для чтения питон по сравнению с другими языками», а потом скатываются в «если у тебя мозг не позволяет это осилить».

Ммм... люблю ЛОР за это.

anonymous
()
Ответ на: комментарий от anonymous

self — это просто объект [экземпляр класса] а не визуальное разделение.

и кстате, расскажи действительно, — что-такое визуальное разделение?

ключевое слово «def» (в Python) — создаёт визуальное разделение или нет?

user_id_68054 ★★★★★
()

фу, выглядит как говно

ei-grad ★★★★★
()
Ответ на: комментарий от user_id_68054

потому что Java/C# а также и C/C++ --- это практически writeonly-языки программирования

Тут всё зависит от кривизны рук программиста, если изначально всё грамотно написано, то проблем обычно не возникает. Можно и на питоне полную лажу написать, что хрен разберёшься.

как узнать в каком модуле эти bar() и baz() ????

Отчасти спасает грамотное наименование модулей и функций. Но тут соглашусь, поиск, только поиск.

xterro ★★★★★
()

If you like this project and want to support it's >development, we'd love to get some help.

Bitcoin Donations: 1FvX1FBu6aTHnSQwEzRcbcyxc87RaA17qm
Dogecoin Donations: DCi6dMR7S9tmokzgp5iDhbudPDrf2xzgMU

мне кажется или этот сайт принимает незаконные финансовопирамидальные суррогаты (для финансирования терроризма)? :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от KRoN73

Я к тому, что при объявлении класса, он обрамляется скобками, и сразу видно, относится ли метод к классу или нет.

xterro ★★★★★
()
Ответ на: комментарий от user_id_68054

и кстате, расскажи действительно, — что-такое визуальное разделение?

Я просто продолжил твою идею:

отсутствие self — это writeonly-стиль программирования.

например ты читаешь чужой код и видишь там:

foo()

вопрос — что именно за foo() ? это член класса или что-то другое?

,применив её к другим понятиям. «вопрос — что именно за foo? это А или Б?» (где А или Б любые понятия). Наример, есть языки, которые принуждают имена классов писать с заглавной буквы, а есть языки, которые не принуждают.

В принципе, идея «глядя на то, как это записано, мы понимаем, что именно это такое» - хорошая, если не доводить её до маразма. Но в питоне мне не нравится именно то, что нет фиксированного обозначения для понятия «этот инстанс».

anonymous
()

назвали бы ЭТО сразу ugly python

feofil
()
Ответ на: комментарий от xterro

Можно и на питоне полную лажу написать, что хрен разберёшься.

это да..

например можно неплохо запутать код через длинное наследование (с учётом множественного наследования)..

множество маленьких полиморфных функций в классе с большим наследованием — могут создать не плохой Ад внутр объекта self :-)

ну или просто наделать макаронного кода, даже и без привлечения классов :-)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от xterro

Я к тому, что при объявлении класса, он обрамляется скобками, и сразу видно, относится ли метод к классу или нет.

Вообще-то, в Java, как и в Питоне, методы и свойства класса пишутся с отступами. И только по ним сразу видно, принадлежит метод классу или нет. Хотя бы потому, что скобки могут быть вообще за пределами экрана. Так что тут вся разница только в том, что в Питоне отступ объявлен обязательным, а в Java — это общепринятое соглашение по форматированию.

Визуально же разницы никакой. И там, и там всё визуально оформляется отступами. И практикуется массово такой стиль лет 30, не меньше. Он куда старше и Явы, и Питона. Предложен же был и вовсе 40 лет назад. man структурное программирование.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

Но в питоне мне не нравится именно то, что нет фиксированного обозначения для понятия «этот инстанс».

Зато нет синтаксиса для обращения к родительскому инстансу из методов внутреннего класса. Просто называешь self this'ом.

baverman ★★★
()
Ответ на: комментарий от baverman

О, любитель шликать на синтаксис в отрыве от семантики. Это прекрасно.

О, да. Прекрасно - это когда человек не в состоянии в своей башке различить мысли «этот инструмент работает нормально/херово» и «корпус у этого инструмента хорош/имеет недостатки».

А потом вот такие организмы, которым по умственному развитию самое место дворы подметать, пишут промышленный код, олала. Как ты можешь создавать что-то нвоое, если ты не в состоянии объективно оценивать преимущества и недостатки существующего?

anonymous
()
Ответ на: комментарий от anonymous

если ты не в состоянии объективно оценивать преимущества и недостатки существующего?

Из нас двоих только ты эльф. У тебя жестокий недостаток матчасти в крови, ты же сам признался. Именно ты лапочешь про царапины на лаке, а я говорю про тухлую внутрянку.

baverman ★★★
()
Ответ на: комментарий от anonymous

в питоне мне не нравится именно то, что нет фиксированного обозначения для понятия «этот инстанс».

ну это наверное потому что поведение экземпляра класса — зависит от того какой использован метакласс?

обычный метакласс (type) — во время вызова метода экземпляра передаёт инстанс как аргумент функции члена-класса, а теоретически другой метакласс мог бы запрограммировать поведение экземпляра таким образом чтобы во время вызова метода передавались бы и +другие служебные аргументы (кроме self).

,применив её к другим понятиям. «вопрос — что именно за foo? это А или Б?» (где А или Б любые понятия). Наример, есть языки, которые принуждают имена классов писать с заглавной буквы, а есть языки, которые не принуждают.

понятно.. но исходя из того что в Python всё есть переменная (всё есть объект) — то было бы не логично разделять переменные\класс\функции\объекты.

class Foo:
    pass
bar = Foo # обычная переменная

user_id_68054 ★★★★★
()
Ответ на: комментарий от baverman

Именно ты лапочешь про царапины на лаке, а я говорю про тухлую внутрянку.

Я уже обратил твоё внимание на то, что ты совок. Но поскольку ты совок, уверен, что понять этого факта ты не в состоянии. И всё-таки попытаюсь еще раз.

— У этого инструмента рукоять неанатомичная, вот у фирмы XYZ было лучше.
Что ответит нормальный человек? Например, так:
— Ну да, есть такая проблема, но в целом мне не мешает. Инструмент хороший.
Или так:
— Рукоять на самом деле спроектирована правильно и заточена под определённые юзкейсы. Тебе просто надо почитать инструкцию.

Что ответит совок:
— Да ты идиотик, у фирмы XYZ же инструменты полное говно, разваливающееся через две недели!!!111

При этом совершенно не важно, действительно ли фирма XYZ делает говно или нет. Совок - всё равно совок.

anonymous
()
Ответ на: комментарий от anonymous

Если ты не заметил, первое мое сообщение как раз и было про рукоять, заточенную под определенные юзкейзы. Но я не офтальмолог, так что ничем помочь не могу, звиняй.

baverman ★★★
()
Ответ на: комментарий от rskeyf
foo = (lambda:
             print("hi!") or
             print("i'm") or
             print("a lambda function"))

foo() 

я это к тому, что «однострочные» это неточная характеристика

Virtuos86 ★★★★★
()
Ответ на: комментарий от xterro

Ещё бы они убрали это дурацкое «self.» и было бы вообще замечательно.

Что предлагаешь вместо self использовать?

Siado ★★★★★
()
Ответ на: комментарий от Miguel

Нажать соответствующую комбинацию клавиш в вашей IDE?

отсутствие writeonly подразумевает в том числе и ситуцию: в которой тот кто читает код — обладает ДРУГИМ набором инструментов по сравнению с тем тот кто пишет код.

ты любишь использовать IDE? молодец! я у меня нет IDE. и я хочу чтобы код оставался читабельным даже если нет IDE (или если моя IDE по какой-то причине не смогла переварить чужой код из чужой IDE).

ты можешь сказать «а мне плевать что ты там хочешь. твои проблемы».. а я могу сказать: «окей, но твой код написан в стиле writeonly — смирись с этим»

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от xterro

Почмеу например в C# мы не пишем такого?

Нормальные люди в C# не пишут в принципе. А вот вы, судя по всему, городите там макароны.

Siado ★★★★★
()
Ответ на: комментарий от user_id_68054

у меня нет IDE. и я хочу чтобы код оставался читабельным даже если нет IDE

OK; возьми тот же пример и замени вызовы неизвестно каких функций на вызов методов неизвестно каких классов. Как именно ты узнаешь, где они определены?

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

OK; возьми тот же пример и замени вызовы неизвестно каких функций на вызов методов неизвестно каких классов. Как именно ты узнаешь, где они определены?

то есть ты про такую ситуацию?

from b import Baz
from q import Quux

...
...

class Bar(Baz):
    ...
    def qux(self, quux):
        assert isinstance(quux, Quux)
        ...
        quux.foo()
        ...
    ...
...
...

здесь даже к годалке не ходи я могу сказать что чтобы узнать получше про «quux.foo()» — нужно посмотреть модуль «q» :) [а не модуль «b»!!!]

однако я согласен с вами, что в случае если «quux» является далёким потомком «Quux» — то всё может быть не так очевидно как кажется на первый взгляд.

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от anonymous

То. Лишнее объявление параметра в каждом методе.

не нравится - делай функциями, отдельно от классов. какие проблемы?

anonymous
()
Ответ на: комментарий от xterro

Почмеу например в C# мы не пишем такого?

мб потому, что семантика оного бездумно содрана с жабы?

anonymous
()
Ответ на: комментарий от user_id_68054

ты наверно должно быть позабыл про staticmethod и classmethod

да он о них даже и не знает. и нафиг оно ему сдалось? ему бы на лоре посрать по комментить..

anonymous
()
Ответ на: комментарий от xterro

Оно и так ясно и понятно. Почему например в той же Java этого нет или в C#?

для малограмотных объясню, чё уж там:

в Питоне, методы класса - это отдельные сущьности, с помощью которых можно сделать н.п. такое:

class A:

    def a(self, value):
        self._value=value

class B:

    b = A.a

    def b(self):
        return self._value


b = B()

b.a('test')
print(b.b())

anonymous
()
Ответ на: комментарий от anonymous

извиняюсь, в классе B 'b = A.a' заменить на 'a = A.a'

Осиль уже документацию по питону, перед тем как писать подобные перлы.

Siado ★★★★★
()
Ответ на: комментарий от Siado

И что оно должно делать?

как минимум повышенный code reuse.

anonymous
()
Ответ на: комментарий от Siado

а что я неправильно написал? более того, я уверен, что у меня знаний и опыта по оному, побольше твоего будет. без обид, только.

anonymous
()

Оно косметический транслирует это в нормальный Python? А если написать по старому, работает?

vertexua ★★★★★
()
Ответ на: комментарий от Siado

Осиль уже документацию по питону, перед тем как писать подобные перлы.

аноним всё верно сказал.. хоть и не с первого раза :-)

код:

class A:
    def a(self, value):
        self._value=value

class B:
    a = A.a
    def b(self):
        return self._value

b = B()

b.a('test')
print(b.b())

на мой взгляд — вполне хороший пример

и даже можно было бы написать вот так:

class A:
    def a(self, value):
        self._value=value

class B:
    a = A.a
    def b(self):
        return self._value

del A # мы больше не знаем ни про какой class A ..
      #     при этом class B даже не является его потомком

b = B()

b.a('test')
print(b.b())
user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

на мой взгляд — вполне хороший пример

А на мой - бессмысленная акробатика. За использование таких трюков в программах надо наказывать.

tailgunner ★★★★★
()
Ответ на: комментарий от user_id_68054

Суть в том, что питон такие «фичи», которым самое место в известном рессурсе «говнокод», выполнить не позволит. По крайней мере в версии 2.7*

Siado ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.