@python_beginnersЭта группа больше не существует

Страница 588 из 1885
Pavel
18.10.2016
10:18:50
моя мысль - снаружи навешивать на любой объект какой-то произвольное действие. Например, если мне нужно постоянно считать элементы, которые делятся на какое-то число, то можно sum(filter(lambda i: i%N, my_list)) или sum(i for i in my_list if i%N) или в общем случае def divisible_by(lst, N): return (i for i in lst if i%N) even_only = functools.partial(N=2) sum(my_list.even_only())

Zart
18.10.2016
10:19:27
==0

Pavel
18.10.2016
10:19:39
просто этот фокус можно делать в шарпе, и мне реально нравится эта фича.

Cykooz
18.10.2016
11:04:44
В шарпе строгая типизация, как питон должен догадаться что можно примениить foo(...) для переменной, если в этом foo не указаны типы аргументов?

Google
Артем
18.10.2016
11:05:25
sum(i for i in my_list if i%N) это сугубо питоновкая практика, никак не привыкну, и условие и сразу в лит и тут же сумм

Igor
18.10.2016
11:05:25
так название вроде вполне логичное, toUpperOnlyVowel

Pavel
18.10.2016
11:05:26
Igor
18.10.2016
11:05:45
можно применить только к строке. ну к юникоду. ну к байтам. не получилось - бросить эксепшн и ебись как хочешь

Pavel
18.10.2016
11:06:46
я же могу вызвать len(5). Упадёт, правда, но могу ведь, да?

Igor
18.10.2016
11:07:19
воооот!

Cykooz
18.10.2016
11:09:55
Вспоминается матра "Явное лучше не явного".

Pavel
18.10.2016
11:11:03
что вот? всё, что я предлагаю - добавить к возможностит писать foo(x, 5) ещё и x.foo(5). Для foo ничего не поменяется.

fluent interface будет удобно писать. my_list.filter().map().filter().group_by() Хотя, возможно в какой-нибудь руби это уже есть.

Cykooz
18.10.2016
11:14:38
По поводу явности C#. Когдя я на нём кодил лет 10 назад как то не думал об этом. Но год назад пришлось поковырятся с кодом на C# - дико бесило, что без подсказки умного IDE я не мог понять откуда в пространстве модуля берётся та или иная функция. В тексте есть только малоговорящие using и всё.

что вот? всё, что я предлагаю - добавить к возможностит писать foo(x, 5) ещё и x.foo(5). Для foo ничего не поменяется.
В общем такой подход ломает моск, не понятно что будет вызвано - foo из класса которому принадлежит x, или foo из пространства модуля. А с учётом того, что можно в рантайме сделать XClass.foo = some_func или даже x.foo = some_func то вообще убъёшся потом разбираться что на самом деле у тебя выполняется при вызове x.foo()

Roman
18.10.2016
11:51:26
в кортежах данные в виде констант? правильно понял?

Google
Igor
18.10.2016
11:55:35
не совсем, но если упростить, то можно и так выразиться

кортежи нельзя изменять нельзя добавлять новые элементы в имеющийся кортеж, нельзя удалять элементы из него, нельзя заменять один элемент на другой

при этом In [18]: tuple2 = (4, 5, 6) In [19]: tuple1 = (1, 2, 3) In [20]: tuple2 = (4, 5, 6) In [21]: big_tuple = tuple1 + tuple2 In [22]: big_tuple Out[22]: (1, 2, 3, 4, 5, 6) In [23]: a = 5 In [24]: b = 2 In [25]: (a, b) = (b, a) In [26]: a Out[26]: 2 In [27]: b Out[27]: 5 In [29]: q = [1, 2, 3] In [30]: x = (q, 7, 8, 9) In [31]: x Out[31]: ([1, 2, 3], 7, 8, 9) In [32]: q.append(4) In [33]: x Out[33]: ([1, 2, 3, 4], 7, 8, 9) но это уже тонкости

Zart
18.10.2016
12:06:07
кортежи могут быть из мутабельных элементов

чтото мне не нравится то как магически вылез метод из ниоткуда

Igor
18.10.2016
12:10:05
почему? разве в Нормальных Языках (типа шарпа и джавы) используют похожие на self костыли, чтобы обращаться к другим методам внутри класса?

Zart
18.10.2016
12:12:51
почему все считают селф костылём?

меня волшебный this всегда удивлял

Igor
18.10.2016
12:14:16
ыы, особенно всякие $this = $(this) в jquery еще

Zart
18.10.2016
12:14:27
ммм

откуда оно в жквери мне понятно

изза того как в жс привязка прототипов происходит

Cykooz
18.10.2016
12:19:19
почему? разве в Нормальных Языках (типа шарпа и джавы) используют похожие на self костыли, чтобы обращаться к другим методам внутри класса?
Зато в питоне за счёт наличия self можно делать внутри класса функции без self ? In [1]: class A(object): ...: def pr_name(f): ...: print f.__name__ ...: return f ...: @pr_name ...: def foo(self): ...: return 'bar' ...: foo

Igor
18.10.2016
12:20:14
не понял(((( а @staticmethod или как там его - это не то?

Cykooz
18.10.2016
12:20:37
Нет не то

Zart
18.10.2016
12:20:50
чтото я не понял

ты просто хитровыебанно сделал принт

Cykooz
18.10.2016
12:21:05
Статикметод помечается декоратором @staticmethod

Zart
18.10.2016
12:21:11
причем тут метод без селф?

Cykooz
18.10.2016
12:21:42
ты просто хитровыебанно сделал принт
Я просто сделал декоратор, который доступен только внутри инициализации класса

Google
Zart
18.10.2016
12:21:46
весь этот пр_ крап и декоратор занимается тем что делает print foo.__name__

ты забыл del pr_name

Cykooz
18.10.2016
12:22:26
Ах тыж, точно

Zart
18.10.2016
12:22:32
потому что иначе мы получаем левый метод, который ничо ценного не делает

не, то что ты заюзал временную функцию - это всё к селфам отношения не имеет аще

Cykooz
18.10.2016
12:23:26
Ну как бы без self это нельзя было бы сделать вообще

Zart
18.10.2016
12:23:40
но да, когда я понял что классы в питоне состоят из suite, внутри которого может быть что угодно - я Просветлился

Cykooz
18.10.2016
12:23:41
т.к. любая вункция внутри класса считалась бы методом класса

Zart
18.10.2016
12:23:59
а, ты про это

Cykooz
18.10.2016
12:24:22
Кстати этот pr_name по моему без выебонов нельзя вызвать после инициализации класса

Zart
18.10.2016
12:24:39
я потом издевался - делал метакласс, который позволял определять всги приложения через синтаксис класса

Cykooz
18.10.2016
12:24:55
In [5]: A.pr_name(A) TypeError: unbound method pr_name() must be called with A instance as first argument (got type instance instead)

Zart
18.10.2016
12:24:56
статикметодом объяви и всё ок

Cykooz
18.10.2016
12:25:17
In [3]: a = A() In [4]: a.pr_name(a) TypeError: pr_name() takes exactly 1 argument (2 given)

Zart
18.10.2016
12:25:18
pr_name = staticmethod(pr_name)

Igor
18.10.2016
12:25:24
знач я не хуйню подумал

In [2]: class Foo(object): 2 def test(): 3 pass 4 print test.__name__ test

вот тебе без self :D

Cykooz
18.10.2016
12:26:15
В общем такую функцию можно нормально использовать только в момент создания класса

Google
Cykooz
18.10.2016
12:27:32
ну а че, то же самое ведь делает!
Что вы за print зацепились? Это просто как пример. Туда можно что угодно запихать что пихают в декораторы. Или вообще не декораторы, а сделать функцию для рантайм генерации методов класса по каким то параметрам.

Можно конечно тоже самое и через метаклассы сделать, но...

Zart
18.10.2016
12:28:18
class A: if 0: def foo...

УСЛОВНАЯ КОМПИЛЯЦИЯ, DUDE

if __debug__: например

Admin
ERROR: S client not available

Cykooz
18.10.2016
12:29:19
class A: def gen(...): .... method1 = gen(....) method2 = gen(....) method3 = gen(....)

?

А ещё эти функции не наследуются In [6]: class B(A): ...: @pr_name ...: def bar(self): ...: return 'foo' ...: NameError: name 'pr_name' is not defined

Cykooz
18.10.2016
12:45:01
In [11]: class A(object): ...: locals().update({'foo%d' % i: lambda self: 'foo' for i in range(3)}) In [12]: a = A() In [13]: a.foo0() Out[13]: 'foo'

Юра
18.10.2016
14:58:11
Всем привет

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

St. Art
18.10.2016
15:01:13
так в шапке ж полно информации

или она не устраивает???

Юра
18.10.2016
15:13:11
Понял, не увидел сразу)

Спасибо

?Егор?
18.10.2016
17:18:02
почему выдает ошибку синтаксиса

всю жизнь так выполняю программы

Google
Pavel
18.10.2016
17:20:59
И повторить

b0g3r
18.10.2016
17:21:03
так ты из питона пытаешься запустить скрипт из питона)

b0g3r
18.10.2016
17:21:13
из интерактивного режима

улыбнули три попытки)

ultranoise ?
18.10.2016
17:24:22
гламурная убунта

Pavel
18.10.2016
17:25:00
улыбнули три попытки)
Вторая в кавычках:))

?Егор?
18.10.2016
17:25:59
Блин неделю не кодил)

Leonid
18.10.2016
17:38:16
Блин неделю не кодил)
неделю зря прожил)

Yuryhalf
18.10.2016
18:03:01
Janek
18.10.2016
18:16:06
Минчане

Что у нас по востребованности джангистов в городе?

[Anonymous]
18.10.2016
18:17:12
Что за среда?

?Егор?
18.10.2016
18:28:53
Ubuntu

Страница 588 из 1885

Эта группа больше не существует Эта группа больше не существует