All streams
Search
Write a publication
Pull to refresh
40
0

Инженер-программист

Send message
Не совсем понимаю, каким образом.
И изначальная идея сферических объектов в памяти, которые обмениваются сообщениями и сами решают, когда им сообщение обработать и в какое состояние перейти, тоже довольно далековата от чего-то хранящее методы и переменные, которые может дёргать любой дурак.
Какого принципа? Инкапсуляции? Как уже было сказано, этот принцип нарушается и в хвост, и в гриву.
И как можно быть не объектно-ориентируемым, но поддерживать создание классов и объектов?)
Вообще существует множество видений ООП, и видение Java, насколько я могу судить, ни чуть не ближе к Smalltalk, чем python и Java между собой.
Ну с точки зрения математики умножение на скаляр N — это сложение объекта с самим собой N раз. Вот python и складывает строку саму с собой 2 раза, со списками и кортежами так тоже можно.
Спасибо, я именно это и хотел сказать, но у вас получилось понятнее.
Про __slots__ думал в следующих статьях написать, но пока не придумал, как это получше сделать, наверно, стоило прямо здесь и сказать сразу после примера с добавлением полей, но по хорошему, надо ещё и механизм, как это обеспечивается описать, а я пока не разбирался.

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

Я вам даже больше скажу, изначально там именно так и было, только при предфинальной вычитке заметил, была даже идея, поставить там строчную «Р», но вы правы, оба слова подходят.
Без оценки статестической значимости пост смотрится пустенько, как-то я уже отвык верить статистическим отчётам без неё.

Результаты опроса были сопоставлены с результатами аналогичного опроса апреля 2017 года. Был сделан вывод, что самая распространенная зарплата за 1.5 года не изменилась, при этом по сравнению с 2017-04, к 2018-08 уменьшилось количество людей с зарплатой 80 тысяч рублей, увеличилось количество людей с зарплатой 60 тысяч рублей, уменьшилось количество людей с зарплатой 40 тысяч рублей, увеличилось количество людей с зарплатой 20 тысяч рублей.


По хорошему, после каждого такого утверждение должно идти p-value в скобках с поправкой на множественные сравнения.

Но начало хорошее, продолжайте, только выборки больше делайте.
Основная суть такая: если после звёздочки идёт имя — то все неименованные позиционные аргументы будут упакованы в кортеж с таким именем, если вы ничего дополнительно не указали, то кортеж будет пустой, а просто звёздочка запрещает передачу дополнительные параметров.
В вашем примере вы должны будете вызывать ф-цию именно так, вы её и вызвали, то есть передав первый аргумент по ключу или без него и второй только без ключа, если передать только один параметр или передать три, то программа упадёт.
Упс, перепутал |= и ||=.
Я учил python, наверно, языком 8. Просто гуглив синтаксические конструкции, согласен, лучше учить язык по хорошим учебникам или записям лекций, но иногда тебе просто надо сдать курсач через неделю\ты изменил место работы\перекинули на другой проект\решили, написать вспомогательную часть текущего на python.
Собственно статья для тех, у кого нет недели на чтение книги, но есть время на чтение статейки другой.
Но материала ещё много, надеюсь в последующих статьях вы тоже узнаете что-то новое.
Никаких преобразований типов не производится. Класс bool наследуется от класса int
print(int.__subclasses__()) # -> [<class 'bool'>]

Да, я к тому, что в других языках это можно сделать, но в python решили так не делать.
Спасибо за наводку, большинство интересных фишек я подсмотрел в выступлениях Raymond Hettinger, курсе python от CSC и официальной документации, разумеется. В принципе там таких приёмов на ещё ни одну статью. Чем и собираюсь заняться в ближайшее время.
Да, извиняюсь, я имел в виду логическое равенство, а не равенство id.
Просто использовать термин «равно», мне показалось тоже не хорошей идеей. Надо было выбрать другой термин.
Согласен, лучше пользоваться длинной формой, я решил указать здесь такую, чтобы показать, что она возможна.
А вот
collection |= []
# TypeError: unsupported operand type(s) for |=: 'NoneType' and 'list' 

не работает
Спасибо за замечания, поправил текст статьи, надеюсь, сейчас более понятно, для удобства скопирую и сюда.

def func(first, second, *, kwonly=True):
    print(first, second, kwonly)


def func2(first, second, *args, kwonly=True):
    print(first, second, *args, kwonly)


func(1)           #-> TypeError: func() missing 1 required positional argument: 'second'
func(1, 2)        #-> 1 2 True
func(1, 2, False) #-> TypeError: func() takes 2 positional arguments but 3 were given
                  # используя * в объявлении вы укажите, что
                  # ваша функция должна быть вызвана с двумя
                  # позиционными параметрами
func(1, 2, kwonly=False) #-> 1 2 False

func2(1, 2, False) #-> 1 2 False True
                   # *args заберёт в себя все позиционные
                   # параметры, то есть вашу функцию может будет
                   # вызывать с неограниченным (>2) числом
                   # параметров

12 ...
46

Information

Rating
Does not participate
Registered
Activity