LINUX.ORG.RU

Три операции в одну строчку

 


0

2

Как в python3 засунуть в if присвоение переменной результата функции и проверку этого результата?

if out = my_function(my_arg):

И так далее.

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

Никак. Пиши:

out = my_function(my_arg)
if out == something:
    ...

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

Не-не:

In [2]: def set_crap(var, val):
   ...:     globals()[var] = val
   ...:     return val
   ...:

In [3]: if set_crap('out', 42): print out
42
theNamelessOne ★★★★★
()
Ответ на: комментарий от Deleted

Или что?

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

no-such-file ★★★★★
()

out = sideeffect1(arg) if my_function(my_arg) else sideeffect2(arg), где sideeffect1 и sideeffect2 возвращают свой аргумент. только вот в code golf играют не так, а за другие применения тебя осудят и будут правы.

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

Но лямбда-функции же там есть.

Multiple statement lambda уже завезли?

theNamelessOne ★★★★★
()
Ответ на: комментарий от no-such-file

Это из-за болезни? У меня такая фигня всю жизнь.

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

Но лямбда-функции же там есть

Аахах, да есть, такие же детсадовские - только в одну строчку. Видимо чтобы дети не путались в многабукаф.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

А есть болезнь мозга, при которой формируется зависимость от СКОБОК?

Deleted
()
Ответ на: комментарий от no-such-file

Зато изучать python одно удовольствие. И писать на нём тоже. Тот же c++ ну очень шершаво входит.

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

Какая-то странная постановка вопроса. Я разве заявлял, что пишу что-то глобальное и серьёзное? :D

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

И писать на нём тоже

И много ты на нем написал? Мне со временем стала не то что раздражать, а просто выбешивать необходимость постоянно следить, чтобы выравнивание не дай бог не «поехало».

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

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

Вы про отступы? Мне нравится.

Deleted
()
Ответ на: комментарий от no-such-file

Мне со временем стала не то что раздражать, а просто выбешивать необходимость постоянно следить, чтобы стояли закрывающие } или ;.

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

Мне со временем стала не то что раздражать, а просто выбешивать необходимость постоянно следить, чтобы стояли закрывающие }

А чё, твой редактор не умеет ставить закрывающие скобки?

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

Мол, чтоб никаких присваиваний не было в ifах

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

Вы про отступы? Мне нравится

Про них. Например, пишешь ты себе код, потом думаешь - какого чёрта, это нужно сделать отдельной функцией, выделяешь, пишешь def superFeature: вставляешь код и приплыли - нужно поправить отступы.

В любом нормальном языке мне не надо об этом даже вспоминать, просто сделать автовыравнивание и, слава скобочкам - всё красиво. А можно и не делать и просто продолжать набрасывать туда другие куски кода, возможно скопипащеные из других мест, с другим выравниванием и т.д. оставив выравнивание на потом.

Но питон - это другое дело, вставил код - выравнивай, вставил другой кусок - снова выравнивай и т.д. Не дай бог вставить кусок кода на один уровень с другим, когда он должен быть вложен, например, было

if bla(x):
  a()
  b()

стало после вставки

if bla(x):
  a()
  b()
  c()
  d()

А должно было стать:

if bla(x):
  a()
  b()
c()
d()
Тут не вздумай отвлекаться - сразу выравнивай (да, снова), иначе потом не вспомнишь где что кончается. И этот цирк без конца. Желаю, чтобы Гвидо в аду заставили править бесконечные программы на пистоне с убранными отступами.

no-such-file ★★★★★
()
Ответ на: комментарий от Deleted

Для удобства чтения усложнять не нужно.

Как и придумывать оправдания своей лени. Будь мужиком, пиши полностью.

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

А чё, твой редактор не умеет автоотступы?

Умеет. К чему ты это сказал?

theNamelessOne ★★★★★
()
Ответ на: комментарий от no-such-file

Тут не вздумай отвлекаться - сразу выравнивай

и тут я все понял: ты не используешь текстовый редактор. и vim и emacs умеют ставить сразу. а ты хвалишься мазохизмом.

t184256 ★★★★★
()
Ответ на: комментарий от no-such-file

Рубрика «вредные советы от so-such-file».

Сколько раз команде PVS-Studio надо писать статьи, чтоб наконец до всех дошло: не пользуйтесь Copy-Paste в программировании. Это почти как бомбочку заженную у себя в жопе «забыть». Попаболь будет большая, когда найдешь баг.

Deleted
()
Последнее исправление: merhalak (всего исправлений: 1)
Ответ на: комментарий от t184256

и тут я все понял

Я тоже понял, что ты не умеешь читать.

no-such-file ★★★★★
()
Ответ на: комментарий от Deleted

Сколько раз команде PVS-Studio надо писать статьи, чтоб наконец до всех дошло: не пользуйтесь Copy-Paste в программировании

Ох ЛОЛ!!! А ты видимо при рефакторинге переписываешь код с одного места в другое вручную. Мужик!

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

В любом нормальном языке мне не надо об этом даже вспоминать, просто сделать автовыравнивание и, слава скобочкам - всё красиво. А можно и не делать и просто продолжать набрасывать туда другие куски кода, возможно скопипащеные из других мест, с другим выравниванием и т.д. оставив выравнивание на потом.

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

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

Уменьшает область видимости переменной. Чем меньше она тем лучше же?

Скорее всего так сделали, что бы убрать ошибки, когда путают «=»/«==». Всякие lint'ы же обычно всегда пишут warning в таких местах без контекста.

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

умеет двигать блоки

Т.е. не редактор, а ты двигаешь блоки по отступам, при этом нужно чтобы блок наличистововал. Нафиг мне вообще что-то двигать, когда со скобочками можно просто ткнуть M-q?

no-such-file ★★★★★
()
Ответ на: комментарий от pawnhearts

вынести код в метод/функцию

Это конечно здорово, но допустим мне нужно 2 куска засунуть в одну функцию, причём один внутрь другого? Да чё уж там, даже в последнем примере с добавлением на одном уровне эта штука сольётся. Один хрен нужно следить.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Т.е. не редактор, а ты двигаешь блоки по отступам,

Нет именно редактор, vim умеет вставлять с соответствующим отступом если скоуп поменялся. За emacs не скажу.

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

не пользуйтесь Copy-Paste в программировании.

При рефакторинге часто использую Copy-Paste-Delete (вместо Cut-Paste, чтобы видеть изменения), ЧЯДНТ?

команде PVS-Studio

это которые считают, что сторонние библиотеки в своём проекте не надо использовать, а лучше пилить свои велосипеды?

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

При рефакторинге часто использую Copy-Paste-Delete (вместо Cut-Paste, чтобы видеть изменения), ЧЯДНТ?

Я.Так же удобно смотреть какие входные параметры на кусок кода.

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

vim умеет вставлять с соответствующим отступом если скоуп поменялся

Тем не менее, всё равно нужно сначала встать на нужный отступ.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

В пистоне блоки внутри условных конструкций не обладают собственным скоупом:

In [1]: def a(b):
   ...:     if b:
   ...:         c = 'tsds'
   ...:     return c
   ...: 

In [2]: a(True)
Out[2]: 'tsds'

In [3]: a(False)
---------------------------------------------------------------------------
UnboundLocalError                         Traceback (most recent call last)
<ipython-input-3-c63cc9cec36f> in <module>()
----> 1 a(False)

<ipython-input-1-55925eae8c82> in a(b)
      2     if b:
      3         c = 'tsds'
----> 4     return c
      5 

UnboundLocalError: local variable 'c' referenced before assignment
Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.