Author Topic: Не менее глупые вопросы по Питону  (Read 5588 times)

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #45 on: 10 June 2023, 19:11:34 »
  • 0
  • 0
А зачем, интересно, массив в if совать? Такое и в JS может интересным боком вылезти.
Затем же, зачем и для C++-ного вектора хочется, чтобы if (a) был эквивалентен if (!a.empty())
А так в C/C++ имплицитное приведение к bool для чисел и указателей (в том числе умных), этого уже достаточно, чтобы утверждать, что там тоже есть эта сила.
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 5677
  • Карма: +2054/-160
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #46 on: 10 June 2023, 19:18:47 »
  • 0
  • 0
А зачем, интересно, массив в if совать? Такое и в JS может интересным боком вылезти.
Затем же, зачем и для C++-ного вектора хочется, чтобы if (a) был эквивалентен if (!a.empty())
Хм. А если a пустой?

Насчёт массива в JS я, правда, немного ошибся, любой объект приводится к true. А вот если сначала приведётся к строке, может случиться ой.
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #47 on: 10 June 2023, 19:44:13 »
  • 0
  • 0
Хм. А если a пустой?
Так именно это же и проверяем
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 5677
  • Карма: +2054/-160
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #48 on: 10 June 2023, 20:23:29 »
  • 0
  • 0
А-а, ступил. Хотя не помешало бы логическому методу иметь название типа isEmpty.
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный

Offline Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29480
  • Карма: +4077/-343
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #49 on: 10 June 2023, 21:00:01 »
  • 0
  • 0
Это не баг, это фича.
Тот, кто только BASIC знает, может, тоже на лямбды круглыми глазами смотрит и не может поверить.
так я верю, но мне как хардкорному бейсикисту было дико. Тем более, что было в тесте на знание синтаксиса («найди неправильное выражение») и мне точно показалось, что за такое компьютер трасерами расстреливает ??? :-\

Offline Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29480
  • Карма: +4077/-343
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #50 on: 10 June 2023, 23:19:22 »
  • 0
  • 0
Делаю питоновский курс от IBM, они все практику делают в Junyper Notebook - у вас есть мнение о нем?

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #51 on: 10 June 2023, 23:32:26 »
  • 0
  • 0
Делаю питоновский курс от IBM, они все практику делают в Junyper Notebook - у вас есть мнение о нем?
Может всё-таки Jupyter? Если да, то хорошая штука, в нашей компании им пользуются, хотя сам мало в нём работал.
Если именно Junyper -- тогда подозреваю это в любом случае какой-то малоизвестный форк Jupyter-а.
« Last Edit: 10 June 2023, 23:38:04 by Upliner »
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Квас

  • Ветеран
  • *****
  • Posts: 1288
  • Карма: +370/-9
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #52 on: 10 June 2023, 23:38:41 »
  • 0
  • 0
так я верю, но мне как хардкорному бейсикисту было дико. Тем более, что было в тесте на знание синтаксиса («найди неправильное выражение») и мне точно показалось, что за такое компьютер трасерами расстреливает ??? :-\

Вообще, тот факт, что строки можно умножать на числа - это просто курьёз. Его легко можно было бы добавить в какой угодно язык, просто где-то реализовать правило "умножение строки на число понимать как конкатенацию этой строки с самой собой". Интереснее, что, оказывается, оператор "звёздочка" работает с любым объектом, для которого определён "волшебный" метод __mul__. Который, естественно, можно определять по своему усмотрению. Например,
Code: [Select]
class C:

    def __init__(self, message):
        self.message = message

    def __mul__(self, k):
        if (k == 1):
            return self
        if (k == 2):
            return C(f'{self.message} bis')
        if (k == 3):
            return C(f'{self.message} ter')
        return C(f'{self.message} iterum atque iterum')

salve = C('salve')
print((salve * 1).message)
print((salve * 2).message)
print((salve * 3).message)
print((salve * 4).message)
печатает
Code: [Select]
salve
salve bis
salve ter
salve iterum atque iterum
Пока в это необязательно, наверно, вникать, особенно если вы до классов не добрались. Но для питона характерны такие "волшебные методы", которые сами вызывать не надо, но они делают доступной ту или иную функциональность.

Offline Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29480
  • Карма: +4077/-343
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #53 on: 10 June 2023, 23:45:15 »
  • 0
  • 0
Да, извиняюсь, конечно Jupyter  :fp

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #54 on: 10 June 2023, 23:47:52 »
  • 0
  • 0
Интереснее, что, оказывается, оператор "звёздочка" работает с любым объектом, для которого определён "волшебный" метод __mul__. Который, естественно, можно определять по своему усмотрению.
Это называется "перегрузка операторов" (operator overloading) и конечно она работает не только для умножения, а вообще для любых операторов, и не уникальна для Питона. Вот в C++ уже с самого начала приходится учить, что оператор << может быть перегружен (переопределён). В С++17 ещё перегружают / для работы с директориями: std::filesystem::path("C:\\")/"Program Files"/"My Program" -- это даже удобнее, чем питоновский os.path.join.
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Квас

  • Ветеран
  • *****
  • Posts: 1288
  • Карма: +370/-9
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #55 on: 10 June 2023, 23:52:21 »
  • 0
  • 0
С Jupyter-ом я немного работал, не фанат.

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

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

Время от времени ядро ноутбука падало, приходилось перезапускать питон и восстанавливать определения.

Как текстовый файл ноутбук нечитаем, с гитом плохо сочетается.

Достоинства:
1. На безрыбье и рак рыба.
2. Можно картинки рисовать.

Offline Квас

  • Ветеран
  • *****
  • Posts: 1288
  • Карма: +370/-9
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #56 on: 10 June 2023, 23:53:43 »
  • 1
  • 0
В С++17 ещё перегружают / для работы с директориями: std::filesystem::path("C:\\")/"Program Files"/"My Program" -- это даже удобнее, чем питоновский os.path.join.

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

Offline Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4976
  • Карма: +440/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #57 on: 10 June 2023, 23:59:22 »
  • 0
  • 0
Кстати, у нас была настойчивая рекомендация использовать в питоне Path из pathlib, там такая же перегрузка слеша.
О, вот это интересно, не знал о таком
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29480
  • Карма: +4077/-343
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #58 on: 11 June 2023, 00:02:26 »
  • 0
  • 0
С Jupyter-ом я немного работал, не фанат.

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

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

Время от времени ядро ноутбука падало, приходилось перезапускать питон и восстанавливать определения.

Как текстовый файл ноутбук нечитаем, с гитом плохо сочетается.

Достоинства:
1. На безрыбье и рак рыба.
2. Можно картинки рисовать.
звучит как УГ, если честно  :'(

Offline Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 29480
  • Карма: +4077/-343
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #59 on: 11 June 2023, 01:54:23 »
  • 0
  • 0
заметил, что значение переменной можно вывести просто написав ее имя, без функции принт. Это такая фича, так и задумано? В реальных программах тоже можно или это дурной тон так делать?