All streams
Search
Write a publication
Pull to refresh
4
0
Send message

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

За статью спасибо, познавательно, некоторые (мало) слова понял, но выглядит это как попытки забивать гвозди микроскопом. Если для чего и нужны такие интеллектуальные экзерсисы так это точно не для написания типового круда. Для чего - конечно было бы любопытно узнать, начало то было многообещающее - мол от программ часто зависят финансы и даже жизнь, есть хоть один пример, где подобное что либо из ужасного предотвратило? Надеялся, что Вы, как представитель страховой компании, приведете примеры. В плане пофилософствовать - создание программы - это управление сложностью, т.е. типовой круд бесконечно сложен (непознаваем), если его с математической точки зрения оценивать на корректность, а обычные яп эту сложность сводят к компромиссу между ограниченно проверяемой корректностью и возможностью реализовать, не отправив команду в компанию к наполеонам и мертвым продуктам питания.

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

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

a = []

for i in [1, 2, 3]:
    a.append(lambda: i)
for f in a:
    print(f.__closure__) # None

a = [lambda: i for i in [1,2,3]]
for f in a:
    print(f.__closure__) # (<cell at 0x00000214C94E0940: int object at 0x00000214C8EA0130>,)


тобой займётся грамотный педагог, который в удобном для тебя темпе расскажет и растолкует, даст рекомендации, повозится с тобой, получит твоё задание, изучит его, еще раз даст свои рекомендации и растолкует непонятое

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

 потом во внешних функциях (enclosing)

Дада, точно, ключевое слово nonlocal

def f():
    def g():
        nonlocal x
        x = 2

    x = 1
    g()
    print(x)  # 2


f()


Тут кстати тоже есть где подзарыть кандидата

def f():
    def q():
        def g():
            nonlocal x
            x = 2

        g()

    x = 1
    q()
    print(x)  #  ??


f()


Мне кажется стоит упомянуть, что есть просто два "пространства имен" а именно глобальное, доступное через globals() и локальное, соответственно locals() и это просто словари, все имена питон относит или к одному или ко второму, присваивание или создает ключ в словаре или модифицирует. Соответственно пространство поиска засады на собеседовании сводится к тому чтобы определить к какому из двух пространств относится имя. С замыканиями чуть хитрее, кстати в примере про лямбды замыкание не создается, поэтому фраза "замкнулись на локальную переменную" не совсем корректна.

Чтобы создать замыкание надо использовать функции высшего порядка, и у полученного объекта прям будет атрибут с переменной, которую возвращаемая функция захватила. А в Вашем примере лямбды просто работают с глобальной переменной.

f_factory = lambda x: lambda:x
f = f_factory(1)
print(f.__closure__) # (<cell at 0x000002DE17A930A0: int object at 0x000002DE174500F0>,)


Хорошая статья, прям с удовольствием прочитал. Автора бы с профессором Савельевым познакомить, тот помог бы развить тему до церебрального сортинга. А так да - мало что в жизни полезно так же, как удачный выбор профессии. Распаковка это ок, интересный прием, но всё равно пока не попробуешь не узнаешь.

Не очень понятно зачем рынок и план противопоставлять, если можно совмещать. Для решения определенного рода задач государство может создавать структуры, заточенные на решение именно таких задач, отключая, при этом, отдельные рыночные механизмы, в первую очередь заточенность на получение прибыли. В качестве мотивации - личная ответственность. Собственно прям сейчас мы подобное видим в оборонке. Все инфраструктурные проекты - тоже своего рода симбиоз рыночных и вне-рыночных механизмов. Неплохо было бы сюда и жилье подключить, но это из области желаемого пока, хотя в Европе во многих странах государство активно эту отрасль так же регулирует. Т.е. управлять надо какими то крупными кластерами проблем, а "микроменеджемент" оставить рыночным механизмам. Что то подобное, как я понимаю, как раз в Китае и практикуется, отсюда вечный споры что там капитализм или социализм. И главное именно при капитализме для реализации подобного симбиоза вполне есть механизмы - госкорпорации, целевая эмиссия и вот это всё. Да, это всё очень плохо и приводит так или иначе к эксплуатации человека человеком, но если задаться догмой что эксплуатация безусловное и недопустимое зло, то гибкости в выборе инструментария остается сильно меньше, поэтому социализм совмещать с рынком как то сильно хуже получается.

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

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

Что то мало козырных питонячих плюх тут, нате еще одну, и да, бывает спрашивают на собеседованиях :)

def f():
  try:
    return 1
  finally:
    return 0

Что вернет функция :)

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

И примерно 2 десятка способов объединить поля в структуру. Вот это я считаю топом дзена.

ага, прикол, через repl False, если запустить скрипт то True

(.venv) PS C:\...\Documents\Projects\playground> python
Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=45234
>>> print(a is 45234)
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
False

C:\...\Documents\Projects\playground\.venv\Scripts\python.exe C:/.../Roaming/JetBrains/PyCharm2022.1/scratches/scratch_156.py
C:\...\AppData\Roaming\JetBrains\PyCharm2022.1\scratches\scratch_156.py:3: SyntaxWarning: "is" with a literal. Did you mean "=="?
  print(a is 45234)
True

А числа больше 256 не кэшируются?

a=45234
b=45234
print(a is b) # python 3.10 True

более того

a=None
b=None
if 1:
    a = 45234+1
    b = 45234+1
    print(a is b)

if 1:
    a = 45234+1
    print(a is b)
# True True

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

А мне вот сегодня задали
a=5
print(a is 5)
a=45234
print(a is 45234)

ну то есть в историческом разрезе интересно (во 2м питоне было бы True False, а в современных True True)

но вот зачем это знание может пригодиться в принципе и что именно показывает - загадка, это прям эталонная задача из серии "приколы нашего городка"

Чисто питонячий прикол для выражений вида 3>2>1, раскладывается в (55 == True) and (True is True)

через мобильный мегафон даже пакет вылить в pypi не получается :(

1
23 ...

Information

Rating
5,344-th
Registered
Activity