Лингвофорум

Общий раздел => Наука и техника => Компьютеры => Тема начата: Квас от декабря 23, 2011, 00:14

Название: Вопросы о Python-е
Отправлено: Квас от декабря 23, 2011, 00:14
Пока, собственно, только один вопрос, но может, и другие появятся.

Никак не могу освоиться с этим языком.

В учебных целях придумал следующую задачку: есть строка, по структуре представляющая таблицу (например, | играет роль разделителя столбцов, а \n — разделителя строк). Требуется эту строку распарсить, то есть создать некий iterable объект, содержащий отдельные ячейки. Навроде двумерного массива. Вот никак не могу сообразить, в виде какого объекта это можно реализовать.

Вообще, насколько понимаю, такое паршенье необходимо должно предшествовать, например, всяким конвертациям таблицы: поскольку строки являются неизменяемыми величинами, использование в цикле оператора вида
str1 = str1 + str2
приводило бы к тому, что перелопачивается слишком много памяти. Следовательно, надо обрабатывать ячейки как элементы большого объекта, а потом за один раз делать конкатенацию. Правильно я говорю? В Lua, по крайней мере, учат делать так.
Название: Вопросы о Python-е
Отправлено: Demetrius от декабря 23, 2011, 00:20
Цитата: Квас от декабря 23, 2011, 00:14
str1 = str1 + str2
Не делайте так. Переформулируйте задачу, чтобы использовать встроенные методы строк (строка.split('|'), например, или find): они работают быстрее (т.к. написаны на Си) и они удобнее.
Название: Вопросы о Python-е
Отправлено: Demetrius от декабря 23, 2011, 00:23
Мне сейчас лень что-то думать, потому что у меня нет Пюфона для экспериментов под рукой и я боюсь соврать.
Название: Вопросы о Python-е
Отправлено: Python от декабря 23, 2011, 00:52
Offtop
немного кложурного оффтопа:
Clojure 1.3.0
user=> (def s
"asdf | fg |ggg
asd| asd|dd
sdfg| fff|gg")
#'user/s

user=> (map #(seq (.split % "\\|")) (.split s "\n")) ;<--парсер
(("asdf " " fg " "ggg") ("asd" " asd" "dd") ("sdfg" " fff" "gg"))
Название: Вопросы о Python-е
Отправлено: Demetrius от декабря 23, 2011, 00:56
Нет, всё-таки Ваши лиспы страшные.
Название: Вопросы о Python-е
Отправлено: Python от декабря 23, 2011, 01:05
Научившись на них думать, начинаешь понимать весь ужас нелиспов.
Название: Вопросы о Python-е
Отправлено: Квас от декабря 23, 2011, 10:11
Цитата: Demetrius от декабря 23, 2011, 00:20
Цитата: Квас от декабря 23, 2011, 00:14
str1 = str1 + str2
Не делайте так. Переформулируйте задачу, чтобы использовать встроенные методы строк (строка.split('|'), например, или find): они работают быстрее (т.к. написаны на Си) и они удобнее.

Я же и пишу, что так нельзя делать. Если начать с пустой строки и прибавлять сто раз по символу, то в результате постоянного создания новых строк используется, грубо говоря, (1+2+...+100) б ≈ 5 кб памяти.

Поэтому мне и кажется, что нужно ячейки сделать элементами некоторого аналога двумерного массива, после чего можно пользоваться, например, операцией join.
Название: Вопросы о Python-е
Отправлено: Bhudh от декабря 23, 2011, 13:28
Так можно сначала разделить исходную строку по разделителю строк, а потом — в цикле — по разделителям ячеек...

В Pythonʼе же есть аналог jay-esʼового
Цитата: var s = "a1b2c3d".split(/\d/);
вернет массив ["a", "b", "c", "d"].


?
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 13:47
Цитата: Demetrius от декабря 23, 2011, 00:20
Цитата: Квас от декабря 23, 2011, 00:14str1 = str1 + str2
Не делайте так. Переформулируйте задачу, чтобы использовать встроенные методы строк (строка.split('|'), например, или find): они работают быстрее (т.к. написаны на Си) и они удобнее.
Не понял. Оператор "плюс" - не встроенный метод?
Тогда есть более встроенный метод: ''.join([str1,str2]).
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 13:56
Честно сказать, не понял проблему и что требуется.

Почему бы в качестве "что-то типа двумерного массива" не использовать например двумерный массив? Ну или дишкнари с киями в виде таплов по два.

Делаем просто два раза сплит на эту строку (по '\n' и по '|') и все.
Название: Вопросы о Python-е
Отправлено: Bhudh от декабря 23, 2011, 14:03
Я это и предложил.
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 14:09
Цитата: Bhudh от декабря 23, 2011, 14:03
Я это и предложил.
Значит я поддерживаю.

Цитата: Квас от декабря 23, 2011, 10:11
Я же и пишу, что так нельзя делать. Если начать с пустой строки и прибавлять сто раз по символу, то в результате постоянного создания новых строк используется, грубо говоря, (1+2+...+100) б ≈ 5 кб памяти.
А почему это вас волнует? Откуда вообще у вас такая инфа? :) Это же детали имплементации языка, а не часть языка.
Я не знаю как работает гарбаге цоллецтор в питоне (в каком из них?), но почему бы ему своевременно обрывки не подчищать, чтобы столько памяти не скапливалось? После выполенния str1 = str1 + str2, то на что раньше str1 указывал уже ничем не адресовано и подлежит удалению. Может новый стр1 вообще на его же место запишется.

Цитата: Квас от декабря 23, 2011, 10:11
Поэтому мне и кажется, что нужно ячейки сделать элементами некоторого аналога двумерного массива, после чего можно пользоваться, например, операцией join.
Запутался. Вам нужно построить такую строку или ее распарсить?
Название: Вопросы о Python-е
Отправлено: Bhudh от декабря 23, 2011, 14:14
Распарсить, обработать ячейки по отдельности и построить обратно, насколько я понял.
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 14:15
Ну строится обратно в обратном порядке, вместо двух сплитов два джоина.
Название: Вопросы о Python-е
Отправлено: Bhudh от декабря 23, 2011, 14:18
Погоди. А джойн берёт ряд массива в отдельности? Хотя что я, если у нас сплиты, то у нас одномерный массив...
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 14:26
И вообще питон это почти математика, там че хочешь берется. Пишешь как обычно пишут математики {f|f \in S} [f for f in S] и все дела.
Название: Вопросы о Python-е
Отправлено: Квас от декабря 23, 2011, 19:21
Цитата: RawonaM от декабря 23, 2011, 13:56
Почему бы в качестве "что-то типа двумерного массива" не использовать например двумерный массив? Ну или дишкнари с киями в виде таплов по два.

Надо попробовать.

Цитата: RawonaM от декабря 23, 2011, 13:56
Честно сказать, не понял проблему и что требуется.
Хочу вот это:
Цитата: Bhudh от декабря 23, 2011, 14:14
Распарсить, обработать ячейки по отдельности и построить обратно, насколько я понял.
но не мог сообразить, как это по-человечески сделать. Алгоритмически просто, но начинаю писать — дальше «def» не идёт.

Цитата: RawonaM от декабря 23, 2011, 14:09
Цитата: Квас от декабря 23, 2011, 10:11Я же и пишу, что так нельзя делать. Если начать с пустой строки и прибавлять сто раз по символу, то в результате постоянного создания новых строк используется, грубо говоря, (1+2+...+100) б ≈ 5 кб памяти.
А почему это вас волнует? Откуда вообще у вас такая инфа? :) Это же детали имплементации языка, а не часть языка.

Я читал Programming in Lua, и там был пример, когда последовательное добавление строк к строке-результату работает порядка 2 с, а объединение большого количества строк — элементов таблицы происходит мгновенно благодаря алгоритму ханойской башни или чего-то навроде. Это потому, что строки в Lua — неизменяемые объекты. В Pythone — тоже (согласно туториалу), поэтому я и соображаю, что идеологически верно за раз объединять кучу строк.
Название: Вопросы о Python-е
Отправлено: arseniiv от декабря 23, 2011, 19:36
Цитата: RawonaM от декабря 23, 2011, 13:56
Ну или дишкнари с киями в виде таплов по два.
Понял только на третьем прочтении.

Quase, split как раз будет быстрее, чем ручная функция-парсер.
Название: Вопросы о Python-е
Отправлено: Demetrius от декабря 23, 2011, 19:43
Цитата: RawonaM от декабря 23, 2011, 13:47
Не понял. Оператор "плюс" - не встроенный метод?
Тогда есть более встроенный метод: ''.join([str1,str2]).
Оператор плюс-то встроенный, но, как я понял, Квас собрался проходиться по каждому символу строки и прибавлять его к строке-результату.

А вообще да, РавонаМ прав, проще всего так:
a="""11|12|13
21|22|23
31|32|33"""

t = [x.split("|") for x in a.split("\n")]
Название: Вопросы о Python-е
Отправлено: Квас от декабря 23, 2011, 19:45
Цитата: arseniiv от декабря 23, 2011, 19:36
Quase, split как раз будет быстрее, чем ручная функция-парсер.

Я не против. Вопрос состоял в том, каким типом данных представить двумерный массив строк.
Название: Вопросы о Python-е
Отправлено: Квас от декабря 23, 2011, 19:47
Цитата: Demetrius от декабря 23, 2011, 19:43
Цитата: RawonaM от декабря 23, 2011, 13:47Не понял. Оператор "плюс" - не встроенный метод?
Тогда есть более встроенный метод: ''.join([str1,str2]).
Оператор плюс-то встроенный, но, как я понял, Квас собрался проходиться по каждому символу строки и прибавлять его к строке-результату.

Ну, не по символу, но можно представить, что от одной строки-таблицы откусываются, например, ячейки, и из них составляется другая строка. Что по моему разумению неграмотно.
Название: Вопросы о Python-е
Отправлено: Demetrius от декабря 23, 2011, 19:55
Цитата: Квас от декабря 23, 2011, 19:45
Я не против. Вопрос состоял в том, каким типом данных представить двумерный массив строк.
Списком списков же. Если будут проблемы с производительностью, тогда уже делать итератор с yield'ами.
Название: Вопросы о Python-е
Отправлено: arseniiv от декабря 23, 2011, 20:06
Цитата: Квас от декабря 23, 2011, 19:45
Я не против. Вопрос состоял в том, каким типом данных представить двумерный массив строк.
А, ну так вон тогда у Deme. в самом конце получается двумерный массив.
Название: Вопросы о Python-е
Отправлено: Demetrius от декабря 23, 2011, 20:11
Неправда, у Deme. получается список списков. Если честно, я вообще не знаю, как в Пюфоне сделать массив.
Название: Вопросы о Python-е
Отправлено: arseniiv от декабря 23, 2011, 20:15
Ну это я метаординарно говоря. Решил не читать, какие там типы, когда вопрос не такой конкретный.
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 20:21
Цитата: Квас от декабря 23, 2011, 19:21
Я читал Programming in Lua, и там был пример, когда последовательное добавление строк к строке-результату работает порядка 2 с, а объединение большого количества строк — элементов таблицы происходит мгновенно благодаря алгоритму ханойской башни или чего-то навроде. Это потому, что строки в Lua — неизменяемые объекты. В Pythone — тоже (согласно туториалу), поэтому я и соображаю, что идеологически верно за раз объединять кучу строк.
Вот совсем недавно я с таким же делом столкнулся за жабаскрипте.
В мозилле все отлично работало, а вдруг я решил на ИЕ запустить, жутко тормозило. У меня был цикл, который прибавлял к строке по чуть-чуть, пока она не достигала многих мегабайтов. ФФ вероятно умеет это оптимизировать сам, а ИЕ не умеет. Сделал массив в который добавлял по элементу, потом все это одним джоином, стало работать в ИЕ приемлемо.
Так что это зависит конкретно от имплементации.

Думаю, что нужно отделить мух от котлет язык от конкретного интерпретатора, и на этих этапах такими вещами не заморачиваться. :) Вдруг питон реализует это иначе, нежели Луа. Вы этого не знаете, а даже если знаете, то оно в данный момент только мешает.
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 20:22
Цитата: Demetrius от декабря 23, 2011, 20:11
Неправда, у Deme. получается список списков. Если честно, я вообще не знаю, как в Пюфоне сделать массив.
Список это и есть массив.
Название: Вопросы о Python-е
Отправлено: Demetrius от декабря 23, 2011, 20:31
Вас?! Список—это когда элементы связаны через указатели, массив—это когда он расположены подряд. :what:
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 20:34
Цитата: Demetrius от декабря 23, 2011, 20:31
Вас?! Список—это когда элементы связаны через указатели, массив—это когда он расположены подряд. :what:
То что вы написали это связанный список.
Списком может быть что угодно.
В питоне нет прямого доступа к памяти, так что что там как расположено вы не знаете и вам не нужно этого знать.
Для программиста разница между связанным списком и массивом состоит в том, что к элементам массива есть прямой доступ, а по связанному списку нужно гулять как по ленте.
Списки в питоне это самые настоящие массивы с точки зрения пользования.
Название: Вопросы о Python-е
Отправлено: arseniiv от декабря 23, 2011, 20:51
Цитата: RawonaM от декабря 23, 2011, 20:34
связный
Fxd.
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 20:57
Цитата: arseniiv от декабря 23, 2011, 20:51
Цитата: RawonaM от декабря 23, 2011, 20:34связный
Fxd.
Данкую.
Название: Вопросы о Python-е
Отправлено: Квас от декабря 23, 2011, 21:10
Да, список списков, два раза сплит и два раза джойн — это, видимо, то, чего моя душенька желала. :yes: Насчёт словаря тоже понравилось.
Название: Вопросы о Python-е
Отправлено: Kern_Nata от декабря 23, 2011, 21:13
походу у меня те же проблемы в sql
:fp:
оптимизация и фсётакое
до чего ж люди-то умные есть!
Название: Вопросы о Python-е
Отправлено: Kern_Nata от декабря 23, 2011, 21:14
Цитата: Demetrius от декабря 23, 2011, 20:31
Вас?!
а правду мне немцы говорили, шо нуна говорить (вопрошать) не "вас", а "битте"?
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 21:19
Квас, давайте еще вопросы :)

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

А на других языках нужно лишнего напихивать, так что суть уже теряется :(

У нас правда курсы сугубо теоретические, но вот два практических задания есть, смысл в коих мне не особо понятен.
Название: Вопросы о Python-е
Отправлено: Квас от декабря 23, 2011, 22:08
По мере поступления — обязательно. :)

Пока такой общий вопрос: как у питона обстоит дело с общением с внешним миром? Скажем, взаимодействие с другими программами или возможность использования его функций другими скриптовыми языками. Последнее, насколько понимаю — штучный товар.

Такая, например, ситуация: питон должен обработать некоторый файл и создать ТеХовский файл, который нужно обработать latex-ом. Я пока вижу единственный выход: взаимодействие организуется с помощью AutoHotkey, который запускает питоновский скрипт, ждёт его окончания и пару раз запускает латех.
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2011, 22:17
Цитата: Квас от декабря 23, 2011, 22:08
Такая, например, ситуация: питон должен обработать некоторый файл и создать ТеХовский файл, который нужно обработать latex-ом. Я пока вижу единственный выход: взаимодействие организуется с помощью AutoHotkey, который запускает питоновский скрипт, ждёт его окончания и пару раз запускает латех.
Не очень понял зачем тут АНК нужен.
Питон умеет читать файлы, он прочтет ТеХ файл, обработает, вызовет ЛаТеХ.
Название: Вопросы о Python-е
Отправлено: Квас от декабря 23, 2011, 22:21
Умеет вызывать? Это замечательно.

Насчёт AHK я — потому что quam cuisque nôrit artem, in hâc se exerceat.
Название: Вопросы о Python-е
Отправлено: Demetrius от декабря 23, 2011, 23:33
Offtop
Цитата: Kern_Nata от декабря 23, 2011, 21:14
Цитата: Demetrius от декабря 23, 2011, 20:31
Вас?!
а правду мне немцы говорили, шо нуна говорить (вопрошать) не "вас", а "битте"?
А я откуда знаю? Кто здесь видел немцев: я или Вы?  ;D

РавонаМ, спасибо, буду знать.
Название: Вопросы о Python-е
Отправлено: Квас от января 19, 2012, 22:49
Алгоритмически вопрос тупейший, но я запутался с кодировками.

Предположим, я хочу сделать элементарную русскую склонялку. Даётся слово «трава», от него надо оторвать -а и к основе добавлять окончания -а, -ы и по списку; результаты можно в список.

Я написал функцию и пытался тестировать её из интерактивного режима — не вышло. Я хочу, чтобы функция работала с utf-8 и не соображу, где надо ставить u, где какие unicode и пр. Может быть, глючит у меня от того, что в консоли не utf-8? Пока есть следующее:

# -*- coding: utf-8 -*-

def decline(word, type):
    if type == 11: # трава
        stem = word[0:len(word)-2]
        return [stem + u'а',
                      stem + u'ы',
                      stem + u'е',
                      stem + u'у',
                      stem + u'ой']
Название: Вопросы о Python-е
Отправлено: D3 от января 19, 2012, 23:26
Я вряд ли чем помогу, я плохо знаю Python 2, как-то мне третий больше нравится.

Цитировать
Может быть, глючит у меня от того, что в консоли не utf-8?
Всё возможно. word Вы передаёте как уникодовую строку? Если вы её прочитали откуда-то и она не в уникоде, делайте word.decode('cp1251') перед тем, как передавать её в функцию.

По идее, при выводе в консоль уникодные строки должны перекодироваться правильно. Можете на всякий вывод при выводе в консоль попробовать сделать text.encode('cp866')... Но, по идее, если строка уникодная, то Python сам должен разобраться.
Название: Вопросы о Python-е
Отправлено: Квас от января 20, 2012, 00:09
Спасибо, завтра попробую.

Я себе поставил 2.7, потому что на сайте было написано: «Не знаете что ставить — ставьте 2.7.» :) Неужели по такому маленькому кусочку уже понятна версия? ;) В принципе, можно и третий попробовать.
Название: Вопросы о Python-е
Отправлено: E4 от января 20, 2012, 04:05
Цитата: Квас от января 20, 2012, 00:09
Я себе поставил 2.7, потому что на сайте было написано: «Не знаете что ставить — ставьте 2.7.» :) Неужели по такому маленькому кусочку уже понятна версия? ;) В принципе, можно и третий попробовать.
С вторым питоном работают большинство сторонних библиотек (например, лингвистическая NLTK); их потихоньку портируют на 3, но очень медленно. Именно поэтому всем рекомендуют (пока что) второй питон.


3.x обратно не совместим с 2.x (ну, если не считать программы-автопреобразователя), зато там переделали некоторые вещи. Например, теперь все строки уникодовые, поэтому префикса u нет (зато есть префикс b, чтобы указать, что это не строка, а массив байт, замаскированный под строку). Вот по этому и узнал :)

Или вот, например, убрали варианты для увеличения скорости: нет xrange, зато теперь range сам разбирается, какое представление будет удобнее; нет cpickle, зато pickle сам вызывает ускоренную версию, если она доступа.
Название: Вопросы о Python-е
Отправлено: Квас от апреля 22, 2012, 11:32
IPython кто-нибудь пробовал на Windows установить? QT console работает?
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 22, 2012, 11:41
Je ne connais pas IPython, à quoi c'est bon?
IDLE n'est pas assez?
Название: Вопросы о Python-е
Отправлено: Квас от апреля 22, 2012, 12:02
I don't know yet. I'd say IDLE is a very rudimentary interactive tool. Google says IPython has certain advantages over the ordinary python console, whereas qt console has no rival whatever. :) I'd love to try NumPy  and SciPy. QT console must be useful for them (e. g. it can display graphics inline).
Название: Вопросы о Python-е
Отправлено: Demetrius от апреля 22, 2012, 12:20
Цитата: Квас от апреля 22, 2012, 12:02
I'd say IDLE is a very rudimentary interactive tool.
O_o"
I've never had a task for which I'd need something besides IDLE.
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 22, 2012, 12:29
Цитата: Квас от апреля 22, 2012, 12:02
I don't know yet.
Pourquoi cette langue hérétique?!! >(

Цитата: Квас от апреля 22, 2012, 12:02
I'd love to try NumPy  and SciPy. QT console must be useful for them (e. g. it can display graphics inline).
Alors utilise PyScriptor, IDE complet :)
Название: Вопросы о Python-е
Отправлено: Квас от апреля 22, 2012, 12:31
Цитата: Demetrius от апреля 22, 2012, 12:20
Цитата: Квас от апреля 22, 2012, 12:02I'd say IDLE is a very rudimentary interactive tool.
O_o"
I've never had a task for which I'd need something besides IDLE.

I'm afraid IDLE won't do tricks like this:
http://www.scipy.org/Cookbook/OptimizationDemo1
Generally, I don't see any essential advantages of IDLE over the console, except, perhaps, the copypaste. On the other hand, the console has the command history.
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 22, 2012, 12:33
Offtop
:fp: Je peux pas la voir ici...
Название: Вопросы о Python-е
Отправлено: Квас от апреля 22, 2012, 12:34
Offtop
Цитата: RawonaM от апреля 22, 2012, 12:29
Цитата: Квас от апреля 22, 2012, 12:02I don't know yet.
Pourquoi cette langue hérétique?!! >(

Ce matin j'ai découvert que j'avais désappris toutes les langues. Quel dommage ! :(
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 22, 2012, 12:36
Цитата: Квас от апреля 22, 2012, 12:31
Generally, I don't see any essential advantages of IDLE over the console, except, perhaps, the copypaste.
La console a copypaste aussi.
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 22, 2012, 12:37
Цитата: Квас от апреля 22, 2012, 12:34
Ce matin j'ai découvert que j'avais désappris toutes les langues. Quel dommage ! :(
Quel dommage de voir que quelqu'un, qui peut écrire français, écrit cette autre langue :(
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 22, 2012, 12:40
Quasus, ILF est juste pour toi maintenant! :)
Название: Вопросы о Python-е
Отправлено: Demetrius от апреля 22, 2012, 12:40
Цитата: Квас от апреля 22, 2012, 12:31
I'm afraid IDLE won't do tricks like this:
http://www.scipy.org/Cookbook/OptimizationDemo1
Generally, I don't see any essential advantages of IDLE over the console, except, perhaps, the copypaste. On the other hand, the console has the command history.
I'm not sure about what the screenshot demonstrates, but why do you think IDLE can't do this?  :donno:
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 22, 2012, 12:42
Цитата: Demetrius от апреля 22, 2012, 12:40
Цитата: Квас от апреля 22, 2012, 12:31I'm afraid IDLE won't do tricks like this:
http://www.scipy.org/Cookbook/OptimizationDemo1
Generally, I don't see any essential advantages of IDLE over the console, except, perhaps, the copypaste. On the other hand, the console has the command history.
I'm not sure about what the screenshot demonstrates, but why do you think IDLE can't do this?  :donno:
Il peut, pas de problème. C'est la fonctionalité de python, pas d'une shell.
Название: Вопросы о Python-е
Отправлено: Квас от апреля 22, 2012, 12:45
Offtop
Цитата: RawonaM от апреля 22, 2012, 12:37
Цитата: Квас от апреля 22, 2012, 12:34Ce matin j'ai découvert que j'avais désappris toutes les langues. Quel dommage ! :(
Quel dommage de voir que quelqu'un, qui peut écrire français, écrit cette autre langue :(

Pas aujourd'hui. :( Je ne peux pas me figurer combien de temps il me demandrait d'écrire en français ce que j'ai écrit en anglais. Alors je fais ce que je peux pour internationaliser LF.
Название: Вопросы о Python-е
Отправлено: Квас от апреля 22, 2012, 12:50
Цитата: Demetrius от апреля 22, 2012, 12:40
Цитата: Квас от апреля 22, 2012, 12:31I'm afraid IDLE won't do tricks like this:
http://www.scipy.org/Cookbook/OptimizationDemo1
Generally, I don't see any essential advantages of IDLE over the console, except, perhaps, the copypaste. On the other hand, the console has the command history.
I'm not sure about what the screenshot demonstrates, but why do you think IDLE can't do this?  :donno:

If I manage to find instructions, I'll give it a try. I understand that all this Python stuff may be extremely powerful tools, but it all is so counter-intuitive. For example, my second attempt to install IPython succeeded, but qtconsole kept asking for packages and other stuff until it spat out a UnicodeDecodeError, and now I'm quite at a loss.  :wall:
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 22, 2012, 12:54
Цитата: Квас от апреля 22, 2012, 12:50
If I manage to find instructions, I'll give it a try. I understand that all this Python stuff may be extremely powerful tools, but it all is so counter-intuitive. For example, my second attempt to install IPython succeeded, but qtconsole kept asking for packages and other stuff until it spat out a UnicodeDecodeError, and now I'm quite at a loss.  :wall:
Use Linux, feel libre :) apt-get — solves tout!
Название: Вопросы о Python-е
Отправлено: Квас от апреля 22, 2012, 23:45
Now I see that the cause of the error is not the IPython itself, but a package called 'socket': socket.gethostbyname_ex('localhost') raises the UnicodeDecodeError. Perhaps it has something to do with non-ASCII characters in my user name. :(
Название: Вопросы о Python-е
Отправлено: Квас от апреля 23, 2012, 01:40
Not in my username, but somewhere in the register.
http://victor-k-development.blogspot.com/2010/07/unicodedecodeerror-django.html
Название: Вопросы о Python-е
Отправлено: Квас от апреля 26, 2012, 22:34
Цитата: Квас от апреля 22, 2012, 23:45
Now I see that the cause of the error is not the IPython itself, but a package called 'socket': socket.gethostbyname_ex('localhost') raises the UnicodeDecodeError. Perhaps it has something to do with non-ASCII characters in my user name. :(

This proved a minor problem. The cyrillic letters in the localhost mattered. I found out that socket.gethostbyname_ex('localhost') didn't work on my computer altogether and commented out a couple of lines in ipython (I'm sure it was safe, but I'm too lazy to explain why).

Finally qt console appeared. Alas! At the very moment Windows notified me that python.exe had to stop right away. The sad truth is that I've never managed to use the qt console and apparently I have to wait for further releases. Such a pity! I won't see any embedded pictures. :'(

Yet I've managed to get ipython working. From the very beginning I had problems with encodings: the shell works in cp866, whereas it thinks it reads files in cp1251. Goddammit! I've learnt I can change the shell's encoding with chcp (this is the advantage of ipython: it can function as the shell), and I've replaced the contents of cp1251.py with that of utf_8.py—now I can run utf-8 encoded scripts interactively! (http://www.smileyvault.com/albums/stock/smiley-party0006.gif)
Название: Вопросы о Python-е
Отправлено: Квас от апреля 30, 2012, 11:55
Не подскажете, как запускают программу с параметрами?
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 30, 2012, 13:03
Цитата: Квас от апреля 30, 2012, 11:55
Не подскажете, как запускают программу с параметрами?
Quels paramétres?
Название: Вопросы о Python-е
Отправлено: Квас от апреля 30, 2012, 13:05
К примеру, "c:\blah-blah\sumatrapdf.exe" -reuse-intance <имя файла> <номер строки>
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 30, 2012, 13:11
Alors il faut faire la même chose :)
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 30, 2012, 13:12
e.g. "python my.py par1 par2"
Название: Вопросы о Python-е
Отправлено: Квас от апреля 30, 2012, 13:15
Мне бы из скрипта запустить программу и передать ей параметры.
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 30, 2012, 14:06
import os
os.system("notepad 1.txt")
Название: Вопросы о Python-е
Отправлено: Квас от апреля 30, 2012, 14:54
Спасибо! Вроде заработало. Но думает слишком долго. :-\
Название: Вопросы о Python-е
Отправлено: Квас от апреля 30, 2012, 16:06
Ещё люди, оказывается, через subprocess.call делают. Я пытаюсь настроить прямой поиск из вима (ТеХ) в суматре (пдф) — должно «летать», но оба питоновские решения думают по нескольку секунд. Так не пойдёт.
Название: Вопросы о Python-е
Отправлено: Квас от мая 6, 2012, 15:07
Вопрос из вима, но больше, как понимаю, питоноспецифический. Главным образом, виндоспецифический.

Пытаюсь пробовать применять фильтрацию текста: текст из вима передаётся через stdin питону, который должен его обработать. Я пробовал
sys.stdin.read()
— работает для русских и английских букв. Если сделать
sys.stdin.buffer.read().decode('cp1251'),
аналогично. Если же
sys.stdin.buffer.read().decode('utf-8'),
то для русских не работает. Для греческих не работает ни в каком варианте.

При этом вимовский файл в utf-8. То есть когда он передаёт текст питону, тот почему-то уверен, что это cp1251. Есть ли способ его разубедить?

Вообще, может кто-нибудь знает форум, где есть про вим и питон вместе, и желательно русский?
Название: Вопросы о Python-е
Отправлено: Квас от мая 6, 2012, 15:12
Кстати, по поводу вызова внешних приложений. Если вызывать процесс через os.system, скрипт будет ждать его завершения. Можно воспользоваться subprocess.Popen. Я написал себе на пробу скриптик — консольный поисковик страницы в одном отсканированном словаре, тандем python—SumatraPDF работает замечательно.
Название: Вопросы о Python-е
Отправлено: RawonaM от мая 6, 2012, 15:13
Peux-tu montrer le code entier?
Название: Вопросы о Python-е
Отправлено: Квас от мая 6, 2012, 15:22
Цитата: RawonaM от мая  6, 2012, 15:13
Peux-tu montrer le code entier?

C'est python 3.2.


import sys
#inp=sys.stdin.buffer.read().decode('cp1251')
inp=sys.stdin.read()
outp=inp + '\nαβγδ.'
sys.stdout.buffer.write(outp.encode())
# the following assumes the output should be in cp1251
# and doesn't accept Greek letters
#sys.stdout.write(outp)



En effet, je comprends que mes questions sont peut-être trop spécifique, mais à présent je ne connais pas de bons forums informatiques. (En effet, je crois que LF n'est point mal à cet égard.)
Название: Вопросы о Python-е
Отправлено: RawonaM от мая 6, 2012, 22:03
 :donno:
Название: Вопросы о Python-е
Отправлено: RawonaM от мая 6, 2012, 22:04
Je vais l'essayer dans les Fenêtres demain.
Название: Вопросы о Python-е
Отправлено: Квас от мая 6, 2012, 22:38
Je ne sais pas qu'est-ce que je dois faire pour l'essayer sans vim.
Название: Вопросы о Python-е
Отправлено: RawonaM от мая 6, 2012, 22:46
Créer un test.py comme ça et l'exécuter :)
Название: Вопросы о Python-е
Отправлено: Квас от мая 6, 2012, 22:56
Mais qu'est-ce que je dois faire pour terminer l'input ? Я нажимаю Enter до бесконечности.
Название: Вопросы о Python-е
Отправлено: RawonaM от мая 6, 2012, 23:00
Ctrl-Z? Sinon, crée un ficher comme j'ai fait et utilise l'opérateur "<".
Название: Вопросы о Python-е
Отправлено: Квас от мая 6, 2012, 23:23
Quant'à Ctrl-Z, il me semble qu'il ne marche pas.
Название: Вопросы о Python-е
Отправлено: RawonaM от мая 7, 2012, 08:15
Les Fenêtres.  :fp:
Quasus, déménage à Linux.
Название: Вопросы о Python-е
Отправлено: Квас от мая 7, 2012, 10:09
Цитата: RawonaM от мая  7, 2012, 08:15
Les Fenêtres.  :fp:

Je suis de ton avis. Mais Linux, c'est trop. :'(
Название: Вопросы о Python-е
Отправлено: RawonaM от мая 7, 2012, 22:34
Цитата: Квас от мая  7, 2012, 10:09
Mais Linux, c'est trop. :'(
Dans lequel sens? Il est plus facile de faire ce que tu veux en Linux.
Pour installer quelque chose il faut exécuter une ligne.
Название: Вопросы о Python-е
Отправлено: Квас от мая 7, 2012, 22:35
Je crois qu'il ne vaut pas la peine. :)
Название: Вопросы о Python-е
Отправлено: RawonaM от мая 7, 2012, 22:36
 :donno:
Название: Вопросы о Python-е
Отправлено: Квас от мая 7, 2012, 22:44
Je me suis habitué à Windows et je m'y sens bien avec autohotkey et cet. Je n'ai pas d'expérience avec d'autres systemes d'exploitation. Pour le moment je joue avec ces facilités de vim, et j'ai peur que je perdrai plus que je trouverai. Alors, il ne vaut pas la peine.
Название: Вопросы о Python-е
Отправлено: Квас от мая 8, 2012, 20:28
Собрал gvim 7.3 с поддержкой интерфейса python 3.2! Теперь мне фильтрация не нужна.  :=
Название: Вопросы о Python-е
Отправлено: Квас от мая 24, 2012, 22:04
Насчёт windows messages никто не в курсе?
Название: Вопросы о Python-е
Отправлено: RawonaM от мая 24, 2012, 22:12
Quels messages?
Название: Вопросы о Python-е
Отправлено: arseniiv от мая 24, 2012, 22:16
Как их из Python'а? Не знаю.
Название: Вопросы о Python-е
Отправлено: Квас от мая 24, 2012, 22:24
Toutes sortes de messages tels comme WM_ACTIVATE. En effet, je voudrais gérer des fenêtres ouvertes. On peut le faire à l'aide de l'Autohotkey, mais peut-être y a-t-il déjà un instrument propre au python.

Je m'y rends compte, que l'on ne se sert pas de Windows ici, mais tout de même... ;D
Название: Вопросы о Python-е
Отправлено: Квас от мая 24, 2012, 22:28
Цитата: arseniiv от мая 24, 2012, 22:16
Как их из Python'а? Не знаю.

А есть какие-то ещё способы, например, сделать окно активным?

Подозреваю, что это может быть завязано с Popen.send_signal.
Название: Вопросы о Python-е
Отправлено: arseniiv от мая 24, 2012, 22:32
В WinAPI ведь должно быть можно из него пролезть? Тогда SendMessage. В неё надо передавать не помню что, но для окон и элементов управления — их handle. Не помню, какой функцией его взять; и их должно быть несколько. Вроде бы есть функция-итератор окон. Тогда перебираем и ищем окно с нужным заголовком.

Цитата: Квас от мая 24, 2012, 22:28
Подозреваю, что это может быть завязано с Popen.send_signal.
Если это что-то, оборачивающее WinAPI достаточно широко — то хорошо, не надо будет этой низкоуровневой возни.
Название: Вопросы о Python-е
Отправлено: fujhi от мая 24, 2012, 22:32
http://stackoverflow.com/questions/1025029/how-to-use-win32-apis-with-python
Название: Вопросы о Python-е
Отправлено: Квас от мая 24, 2012, 22:48
Спасибо.

:o Да боже ж ты мой! Кроме прочего, пакет win32api, очевидно, не входит в стандартный дистрибутив.

По-моему, легче работать через AutoHotkey. (Через него можно делать практически всё, а тривиальные операции типа «найти и активировать окно» весьма просты.)
Название: Вопросы о Python-е
Отправлено: Hellerick от октября 8, 2013, 06:37
Поставил себе Python 3.3.
Был шокирован, что print теперь требует скобок.
Скажите, дальше стоит соваться? А то меня весьма весьма смутило, что совместимость со второй версией нарушена даже на уровне программы «Hello World».
Название: Вопросы о Python-е
Отправлено: RawonaM от октября 8, 2013, 09:08
Цитата: Hellerick от октября  8, 2013, 06:37
Скажите, дальше стоит соваться? А то меня весьма весьма смутило, что совместимость со второй версией нарушена даже на уровне программы «Hello World».
Мне третий больше нравится.
Плохие традиции когда-то надо заканчивать.
Название: Вопросы о Python-е
Отправлено: arseniiv от октября 8, 2013, 14:21
Цитата: Hellerick от октября  8, 2013, 06:37
А то меня весьма весьма смутило, что совместимость со второй версией нарушена даже на уровне программы «Hello World».
Мне пришлось исправлять ez_setup.py, и единственные исправления, которые помню — это скобки у print и смена синтаксиса catch.
Название: Вопросы о Python-е
Отправлено: Hellerick от октября 24, 2013, 05:07
Цитата: Hellerick от октября  8, 2013, 06:37
Поставил себе Python 3.3.
Был шокирован, что print теперь требует скобок.

Это еще что.

Цитировать>>> 1/2
0.5

Твоюжмать :o
Название: Вопросы о Python-е
Отправлено: RawonaM от октября 24, 2013, 08:28
Hellerick, а нельзя просто кратко прочитать нововведения в питон 3 и не удивляться каждый раз?
Название: Вопросы о Python-е
Отправлено: Hellerick от октября 24, 2013, 08:33
А еще они куда-то дели `мои косые скобочки`!  :uzhos:

Цитата: RawonaM от октября 24, 2013, 08:28
Hellerick, а нельзя просто кратко прочитать нововведения в питон 3 и не удивляться каждый раз?
А толку? Я ж всё равно сюда буду бегать свои эмоции выплескивать.
Название: Вопросы о Python-е
Отправлено: Python от октября 24, 2013, 15:34
Что язык поменяли до полной несовместимости — ладно, майкрософтовские бейсики 80-х и 90-х годов тоже имеют мало общего между собой. Но зачем еще одно и то же название интерпритатора и расширение файлов для 2-х и 3-х питонов использовать? Особенно с учетом, что файлы .py рассчитаны на самосоятельный запуск как скрипты. После выхода 3-го питона, простые способы запуска питоновских скриптов (бóльшая часть которых написана на Python 2.x) остались в прошлом.
Название: Вопросы о Python-е
Отправлено: Hellerick от октября 24, 2013, 15:43
Ну, лично я теперь взял за привычку специально писать так, чтоб и второй (дома), и третий (на работе) пvѳоны код корректно исполняли. Хотя зачем эту свистопляску придумали, понимаю плохо. Видать, про то, что лучшее — враг хорошего, они не слышали.
Название: Вопросы о Python-е
Отправлено: Timiriliyev от октября 24, 2013, 15:47
Летом сего года понадобилось запустить один скрипт (чтобы всего-то распаковать хромопак ради интереса), написанный на питоне. С питоном я знаком весьма поверхностно на уровне хеллоуворлда, поэтому просто скачал и установил последнюю версию. Много думал. Только потом дошло, что скрипт написан на втором питоне, хотя написан и выложен был за несколько дней до того, как я его скачал.

Второй питон всё ещё так популярен или прогер, писавший тот скрипт, был "динозавром"?
Название: Вопросы о Python-е
Отправлено: Python от октября 24, 2013, 15:53
Судя по всему, 2-й именно и популярен. На 3-м пишут реже.
Название: Вопросы о Python-е
Отправлено: Hellerick от октября 24, 2013, 15:58
Цитата: Timiriliev от октября 24, 2013, 15:47
Второй питон всё ещё так популярен или прогер, писавший тот скрипт, был "динозавром"?
Не смотря на некоторые теоретические преимущества Третьего, каких-то практических шагов для перехода не него предпринимается мало. Всё уже ориентировано на Второй, и морочиться с переездом никому не хочется. Вон в моей Убунте тоже Второй искаропки установлен.
Название: Вопросы о Python-е
Отправлено: arseniiv от октября 24, 2013, 23:44
Если писать на втором аккуратно, можно будет получить код на третьем автоматически с помощью 2to3.py.

Цитата: Python от октября 24, 2013, 15:34
Но зачем ещё одно и то же <...> расширение файлов для 2-х и 3-х питонов использовать?
+1
Название: Вопросы о Python-е
Отправлено: Hellerick от октября 25, 2013, 03:04
А нет ли конвенции, чтобы в коде прописывать что-то вроде
Цитировать# -*- version: 2.7 -*-
?
Название: Вопросы о Python-е
Отправлено: arseniiv от ноября 11, 2013, 17:03
Dēmē передаёт:

Цитировать#! python3

http://docs.python.org/dev/whatsnew/3.3.html#pep-397-python-launcher-for-windows
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 3, 2013, 16:02
Впервые смог выжать из питона хоть какую-то графику. Похоже, что этот вопрос считается слишком простым, чтобы покрывать его справкой или иллюстрировать примерами.

Ужаснуло, что для того, чтобы программка работала и дома, и на работе, начинать ее пришлось словами:

try:
    from Tkinter import *
    from tkinter import *
except BaseException: pass
Название: Вопросы о Python-е
Отправлено: arseniiv от декабря 3, 2013, 18:39
А что ужасаться-то? Вполне нормальная для своего назначения конструкция.
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 4, 2013, 04:08
Цитата: Hellerick от декабря  3, 2013, 16:02
try:
    from Tkinter import *
    from tkinter import *
except BaseException: pass


Не работает  :(

Python 3 почему-то потребовал, чтобы tkinter шел первым. А Python 2, небось, захочет, чтобы первым был Tkinter?
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 4, 2013, 08:20
Цитата: Hellerick от декабря  4, 2013, 04:08
Не работает  :(
Логично. Попробуйте так:

try:
    from tkinter import *
except BaseException: pass
try:
    from Tkinter import *
except BaseException: pass
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 4, 2013, 08:41
Цитата: RawonaM от декабря  4, 2013, 08:20
Попробуйте так:
Я сначала так и сделал, но потом обнаружил, что на двоечке они и вместе работают. А потом пришел на троечку, и обнаружил, что там не работают.
В общем, затеребили они мена со своими версиями.
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 4, 2013, 08:52
Цитата: Hellerick от декабря  4, 2013, 08:41
Я сначала так и сделал, но потом обнаружил, что на двоечке они и вместе работают.
Значит у вас на двойке первый вариант есть на обоих системах.
Не может же он выполнить вторую строку если первая выдала эксепшн.
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 4, 2013, 09:29
Цитата: RawonaM от декабря  4, 2013, 08:52
Значит у вас на двойке первый вариант есть на обоих системах.
Не может же он выполнить вторую строку если первая выдала эксепшн.

А, во оно как.

А я думал, что try — это такой режим, когда просто все сообщения об ошибках откладываются до поры до времени.
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 4, 2013, 09:48
Цитата: Hellerick от декабря  4, 2013, 09:29
А я думал, что try — это такой режим, когда просто все сообщения об ошибках откладываются до поры до времени.
Бесполезный был бы режим :)
Название: Вопросы о Python-е
Отправлено: Python от декабря 4, 2013, 19:24
Цитата: arseniiv от ноября 11, 2013, 17:03
Dēmē передаёт:

Цитировать#! python3

http://docs.python.org/dev/whatsnew/3.3.html#pep-397-python-launcher-for-windows
Немного поэкспериментировав, обнаружил, что питоновский ланчер py.exe поддерживает не только виртуальные имена питона (#!python2, #!python3) или #!py -НОМЕР.ВЕРСИИ, но и другие интерпритаторы. Т.е., можно, например, назвать файл perlprogram.py, указать в первой строчке #!perl — он будет работать как перл-программа (при условии, что путь к perl.exe включен в PATH).
Название: Вопросы о Python-е
Отправлено: arseniiv от декабря 7, 2013, 13:44
:D
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 15, 2013, 06:18
Недавно захотел скомпилировать программку (кажется, с помощью py2exe). Код был на одну страничку, а исполняемый файл получился на 3,5 МБ. Похоже, весь питон туда целиком запихнут.

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

Но ведь как-то питоном всё же пользуются при производстве человеческих программных продуктов.  :donno:
Название: Вопросы о Python-е
Отправлено: Rachtyrgin от декабря 15, 2013, 12:50
Вполне "человеческий программный продукт", например, - мой любимый библиотечный менеджер Calibre (написан на версии 2.7). Вес инсталляшки - 58 метров. После установки весит 166 мегов. Из них 48 мегов весит зазипованная папка pylib.zip и 82 мега - виндузовые DLL-ки. Сам исполняемый файл весит 169 килобайт. Все вполне терпимо. Правда, это несколько иной подход к делу, нежели компилировать исходник при помощи py2exe.
Но одно автор потерял однозначно - кроссплатформенность питона.
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 23, 2013, 14:21
Играюсь с питоном.


>>> class Dclass:
...     sub=[]
...
>>> D = [Dclass(), Dclass()]
>>> D[0].sub += [1]
>>> D[0].sub
[1]
>>> D[1].sub
[1]
>>> D[0].sub = D[0].sub + [1]
>>> D[0].sub
[1, 1]
>>> D[1].sub
[1]


Когда я применяю к D[0].sub "+=", кроме него также почуму-то увеличивается и D[1].sub. Но если я прямо пишу D[0].sub = D[0].sub + [1], этого не проиходит.

Это баг или фича?
Название: Вопросы о Python-е
Отправлено: RawonaM от декабря 23, 2013, 15:05
sub у вас это переменная класса. D[0].sub, D[1].sub, Dclass.sub — все указывают на один объект.
Однако в строке
Цитата: Hellerick от декабря 23, 2013, 14:21
>>> D[0].sub = D[0].sub + [1]

Вы создаете новую переменную объекта D[0], которая затеняет переменную класса.
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 23, 2013, 16:14
Цитата: RawonaM от декабря 23, 2013, 15:05
sub у вас это переменная класса. D[0].sub, D[1].sub, Dclass.sub — все указывают на один объект.
Однако в строке
Цитата: Hellerick от декабря 23, 2013, 14:21
>>> D[0].sub = D[0].sub + [1]
Вы создаете новую переменную объекта D[0], которая затеняет переменную класса.
Да, мне уже объяснили.
Впрочем, вы формулируете короче и понятнее.  :)

Неприятная особенность. Если б там был не set, а простое числовое значение, этот номер был прокатил. Мало просто программировать в свое удовольствие, надо еще учитывать, какие типы mutable, а какие immutable, и как с ними питон собирается обращаться. Как-то это не соответствует моим представлениям о комфортном языке.
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 25, 2013, 06:49
Опять питон плохо себя ведет.  :(

>>> class Dclass:
        pid = 0


>>> Dlist = [Dclass(), Dclass()]
>>> Dlist
[<__main__.Dclass instance at 0x020B8468>, <__main__.Dclass instance at 0x02011170>]
>>> Dlist[0] = Dlist[1]
>>> Dlist
[<__main__.Dclass instance at 0x02011170>, <__main__.Dclass instance at 0x02011170>]


Зачем он прописал два объекта по одному адресу? Я ж их не расцеплю теперь. Мне надо было просто скопировать значения из одного объекта в другой.
Название: Вопросы о Python-е
Отправлено: І. G. от декабря 25, 2013, 12:04
Offtop
Новогодний клон вне новогоднего раздела. Можете банить, если хотите.

Цитата: Hellerick от декабря 25, 2013, 06:49
Опять питон плохо себя ведет.  :(

>>> class Dclass:
        pid = 0


>>> Dlist = [Dclass(), Dclass()]
>>> Dlist
[<__main__.Dclass instance at 0x020B8468>, <__main__.Dclass instance at 0x02011170>]
>>> Dlist[0] = Dlist[1]
>>> Dlist
[<__main__.Dclass instance at 0x02011170>, <__main__.Dclass instance at 0x02011170>]


Зачем он прописал два объекта по одному адресу? Я ж их не расцеплю теперь. Мне надо было просто скопировать значения из одного объекта в другой.
Это не Python прописал 2 объекта по одному адресу, это вы прописали их по одному адресу, сделав Dlist[0] = Dlist[1]. В большинстве современных языков объекты копируются по ссылкам, т.е. a = b не приводит к копированию объекта, а лишь к копированию ссылки на тот же объект (исключение — C++). Попробуйте вот это: http://docs.python.org/3/library/copy.html (т.е., по идее, import copy сверху и Dlist[0] = copy.deepcopy(Dlist[1])).
Название: Вопросы о Python-е
Отправлено: Wolliger Mensch от декабря 25, 2013, 15:36
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 25, 2013, 15:38
Цитата: Demetrius от декабря 25, 2013, 12:04
Это не Python прописал 2 объекта по одному адресу, это вы прописали их по одному адресу,
Да знаю я. Но пакостная же особенность.
Название: Вопросы о Python-е
Отправлено: arseniiv от декабря 25, 2013, 19:46
Нормальная особенность. Копирование адреса — это прозрачно. Глубокое копирование может быть разным и не так прозрачно, и не всегда возможно. Так что если первое соответствует простому синтаксису, а второе — непростому, это нормально. По-моему. Но я ведь прав.
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 26, 2013, 01:55
Главное — что фактическая реализация программы противоречит ее алгоритмическому описанию. Это, может, и поощряет более рациональную манеру программирования, но всё равно, это баг.
Название: Вопросы о Python-е
Отправлено: arseniiv от декабря 26, 2013, 17:39
Цитата: Hellerick от декабря 26, 2013, 01:55
фактическая реализация программы противоречит ее алгоритмическому описанию
А не надо смысл лишний приписывать ничему — и всё будет OK.
Название: Вопросы о Python-е
Отправлено: arseniiv от декабря 27, 2013, 18:32
Тема разделена. Продолжение здесь: НГ/Вопросы о Python'е (http://lingvoforum.net/index.php/topic,64473.0.html).
Название: Вопросы о Python-е
Отправлено: Hellerick от декабря 31, 2013, 05:27
http://alexgaynor.net/2013/dec/30/about-python-3/
Название: Вопросы о Python-е
Отправлено: Python от декабря 31, 2013, 13:56
Интересно, на что будет болee похож Python 4, когда появится — на Python 2 (который популярнее), или на Python 3 (который как бы прогрессивнее)?
Название: Вопросы о Python-е
Отправлено: Тайльнемер от декабря 31, 2013, 14:53
Ни на что.
Название: Вопросы о Python-е
Отправлено: Rachtyrgin от декабря 31, 2013, 20:23
Четвертого Питона быть не должно. Пусть развивают третий...
Название: Вопросы о Python-е
Отправлено: Python от декабря 31, 2013, 20:35
Третий ненужен.
Название: Вопросы о Python-е
Отправлено: arseniiv от января 1, 2014, 00:24
Мне нужен!
Название: Вопросы о Python-е
Отправлено: Hellerick от января 3, 2014, 05:53
Программа для генерирования bitcoin-адреса.

_                   =r"""A(W/2,*M(3*G
               *G*V(2*J%P),G,J,G)+((M((J-T
            )*V((G-S)%P),S,T,G)if(S@(G,J))if(
         W%2@(S,T)))if(W@(S,T);H=2**256;import&h
       ashlib&as&h,os,re,bi    nascii&as&k;J$:int(
     k.b2a_hex(W),16);C$:C    (W/    58)+[W%58]if(W@
    [];X=h.new("rip           em    d160");Y$:h.sha25
   6(W).digest();I$                 d=32:I(W/256,d-1)+
  chr(W%256)if(d>0@"";                  U$:J(k.a2b_base
64(W));f=J(os.urando       m(64))        %(H-U("AUVRIxl
Qt1/EQC2hcy/JvsA="))+      1;M$Q,R,G       :((W*W-Q-G)%P,
(W*(G+2*Q-W*W)-R)%P)       ;P=H-2**       32-977;V$Q=P,L=
1,O=0:V(Q%W,W,O-Q/W*                      L,L)if(W@O%P;S,
T=A(f,U("eb5mfvncu6                    xVoGKVzocLBwKb/Nst
zijZWfKBWxb4F5g="),      U("SDra         dyajxGVdpPv8DhEI
qP0XtEimhVQZnEfQj/       sQ1Lg="),        0,0);F$:"1"+F(W
[1:])if(W[:1           ]=="\0"@""        .join(map(B,C(
  J(W))));K$:               F(W          +Y(Y(W))[:4]);
   X.update(Y("\4"+                     I(S)+I(T)));B$
    :re.sub("[0OIl    _]|            [^\\w]","","".jo
     in(map(chr,ra    nge    (123))))[W];print"Addre
       ss:",K("\0"+X.dig    est())+"\nPrivkey:",K(
         "\x80"+I(f))""";exec(reduce(lambda W,X:
            W.replace(*X),zip(" \n&$@",["","",
               " ","=lambda W,",")else "])
                    ,"A$G,J,S,T:"+_))


Говорят, что работает.  :what:
Название: Вопросы о Python-е
Отправлено: RawonaM от января 3, 2014, 11:01

Цитата: Hellerick от января  3, 2014, 05:53
os.urando       m(
Цитата: Hellerick от января  3, 2014, 05:53
ra    nge    (123)
Вряд ли это работает.
Название: Вопросы о Python-е
Отправлено: Hellerick от января 3, 2014, 11:02
Цитата: RawonaM от января  3, 2014, 11:01
Вряд ли это работает.

Там в самом начале стоит ключик регулярного выражения — наверное, через оные всё и исправляется.
Название: Вопросы о Python-е
Отправлено: Python от января 3, 2014, 18:00
Запустил пару раз. Что-то сгенерировало. Что с ним делать дальше? И сколько это в деньгах?
Название: Вопросы о Python-е
Отправлено: Hellerick от января 3, 2014, 18:16
Цитата: Python от января  3, 2014, 18:00
Запустил пару раз. Что-то сгенерировало. Что с ним делать дальше?

Теперь вы можете послать туда все ваши деньги, и вам будет Счастье.
Название: Вопросы о Python-е
Отправлено: Hellerick от января 15, 2014, 14:55
Несерьезный вопрос.

Частенько мои программы работают с двумя файлами — один входной, а другой выходной, и их надо обзывать какими-то переменными. Но вот в названиях этих у меня всё время какой-то разнобой, а сердце требует униформности.

У вас есть какие-нибудь традиции именования таких переменных?
Название: Вопросы о Python-е
Отправлено: Python от января 15, 2014, 15:06
sys.stdin, sys.stdout. Перенаправление из/в файл делаю в командной строке.
Название: Вопросы о Python-е
Отправлено: Hellerick от января 24, 2014, 03:50
Решил почитать, что пишут умные люди.
ЦитироватьNote: Python doesn't depend on the underlying operating system's notion of text files; all the processing is done by Python itself, and is therefore platform-independent.

:what:

Одна из моих программ отказалась корректно работать под Unix именно из-за того, что восприятие спецсимвола \n оказалось platform-dependent.
Название: Вопросы о Python-е
Отправлено: arseniiv от января 24, 2014, 11:02
Справку по open-то посмотрите. Там, вроде, можно и насильно указать, какими строками разделять lines файла.
Название: Вопросы о Python-е
Отправлено: Hellerick от апреля 16, 2014, 04:42
Цитировать>>> (2 or 3) * (5 and 7)
14

Ась? :what:
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 16, 2014, 11:23
Все правильно, а вы что ожидали?
Название: Вопросы о Python-е
Отправлено: Vertaler от апреля 16, 2014, 11:32
Цитата: Hellerick от апреля 16, 2014, 04:42
Цитировать>>> (2 or 3) * (5 and 7)
14

Ась? :what:
Для or возвращается первый истинный элемент, а для and — последний. Применимо в случае, например, (x or 3), что означает «если x не определён, подставить 3».
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 16, 2014, 11:39
Цитата: Vertaler от апреля 16, 2014, 11:32
Цитата: Hellerick от апреля 16, 2014, 04:42
Цитировать>>> (2 or 3) * (5 and 7)
14

Ась? :what:
Для or возвращается первый истинный элемент, а для and — последний. Применимо в случае, например, (x or 3), что означает «если x не определён, подставить 3».
Точнее, если «если x == false, подставить 3».
Х может быть определен, но если это допустим 0 или пустая строка, то это фолз.
Название: Вопросы о Python-е
Отправлено: RawonaM от апреля 16, 2014, 11:39
https://docs.python.org/2/library/stdtypes.html

См. 5.2
Название: Вопросы о Python-е
Отправлено: Hellerick от апреля 16, 2014, 11:54
Спасибо за объяснения.

Цитата: RawonaM от апреля 16, 2014, 11:23
Все правильно, а вы что ожидали?

Я думал, что 2 or 3 вернет True.
Название: Вопросы о Python-е
Отправлено: arseniiv от апреля 16, 2014, 17:14
Цитата: Hellerick от апреля 16, 2014, 04:42
Цитировать>>> (2 or 3) * (5 and 7)
14
Ась? :what:
Кстати, C# так тоже может. Не помню только, сразу переопределены ли для чисел true и false или надо самому.

Там a || b для не boolов эквивалентно true(a) ? a : b, но не true(a) ? true : b.
Название: Вопросы о Python-е
Отправлено: Тайльнемер от апреля 16, 2014, 20:26
Цитата: arseniiv от апреля 16, 2014, 17:14
Кстати, C# так тоже может. Не помню только, сразу переопределены ли для чисел true и false или надо самому.
Там a || b для не boolов эквивалентно true(a) ? a : b, но не true(a) ? true : b.
Ты серьёзно или шутишь? Или ты перепутал C# с чем-то другим? С джаваскриптом?

В C#'е:
1) Оператор || для чисел не определён.
2) Переопределять операторы на числах нельзя. (Один из операндов оператора при переопределении должен быть того же класса, в котором этот оператор переопределяется. Влезть в тип int не получится.)
3) Операторы || и && вообще нельзя явно переопределить. Они будут вычисляться сами, если переопределить false и true.
4) Оператор ||, кажется, всегда возвращает bool.
Название: Вопросы о Python-е
Отправлено: Тайльнемер от апреля 17, 2014, 05:42
Цитата: Тайльнемер от апреля 16, 2014, 20:26
3) Операторы || и && вообще нельзя явно переопределить. Они будут вычисляться сами, если переопределить false и true.
4) Оператор ||, кажется, всегда возвращает bool.
Сори, я тоже ошибся.
Операторы || и && будут вычисляться сами, если переопределить false, true, | и &.
Операторы || и && будут возвращать не bool, а тот тип, в котором определены вышеуказанные операторы.

Название: Вопросы о Python-е
Отправлено: arseniiv от апреля 20, 2014, 21:17
Цитата: Тайльнемер от апреля 16, 2014, 20:26
2) Переопределять операторы на числах нельзя. (Один из операндов оператора при переопределении должен быть того же класса, в котором этот оператор переопределяется. Влезть в тип int не получится.)
А как метод расширения? (Не проверял.)
Название: Вопросы о Python-е
Отправлено: Hellerick от ноября 14, 2014, 11:27
От нечего делать, выполнил школьную задачку: написать программу, которая заполнит матрицу числами по спирали.


Программа выводит:
Цитировать 1  2  3  4  5  6  7
18 19 20 21 22 23  8
17 28 27 26 25 24  9
16 15 14 13 12 11 10

Хотелось бы услышать критику. Любую. Неудачные названия переменных, неоптимальное хранение данных, какие-то лишние шаги и т.п.
Название: Вопросы о Python-е
Отправлено: Demetrius от августа 10, 2015, 12:24
Цитата: Hellerick от октября 24, 2013, 15:43
Ну, лично я теперь взял за привычку специально писать так, чтоб и второй (дома), и третий (на работе) пvѳоны код корректно исполняли.
А не проще ли установить дома третий или на работѣ второй?
Название: Вопросы о Python-е
Отправлено: Hellerick от августа 10, 2015, 14:33
Теперь и там, и там третий.
Хотя возможность запускать второй (на работе) оставлена. Иногда это создает проблемы.
Название: Вопросы о Python-е
Отправлено: Demetrius от сентября 22, 2015, 15:08
https://github.com/snoack/python-goto — Пѵѳонъ должен бы оценить
Название: Вопросы о Python-е
Отправлено: Hellerick от сентября 22, 2015, 15:18
А он разве им уже не пользовался (http://lingvoforum.net/index.php/topic,34646.msg2575180.html#msg2575180)?
Название: Вопросы о Python-е
Отправлено: Upliner от сентября 22, 2015, 15:23
Цитата: Hellerick от сентября 22, 2015, 15:18
А он разве им уже не пользовался (http://lingvoforum.net/index.php/topic,34646.msg2575180.html#msg2575180)?
Там goto в части, которая является батником, а не питоновским кодом.
Название: Вопросы о Python-е
Отправлено: Hellerick от сентября 22, 2015, 15:34
Цитата: Upliner от сентября 22, 2015, 15:23
Цитата: Hellerick от сентября 22, 2015, 15:18
А он разве им уже не пользовался (http://lingvoforum.net/index.php/topic,34646.msg2575180.html#msg2575180)?
Там goto в части, которая является батником, а не питоновским кодом.
Странный код. Не врубаюсь в него.
Название: Вопросы о Python-е
Отправлено: Demetrius от сентября 22, 2015, 15:36
По-моему Питонов код успешно демонстрирует, что гото не нужен ;)
Название: Вопросы о Python-е
Отправлено: Upliner от сентября 22, 2015, 16:04
Цитата: Hellerick от сентября 22, 2015, 15:34
Цитата: Upliner от сентября 22, 2015, 15:23
Цитата: Hellerick от сентября 22, 2015, 15:18
А он разве им уже не пользовался (http://lingvoforum.net/index.php/topic,34646.msg2575180.html#msg2575180)?
Там goto в части, которая является батником, а не питоновским кодом.
Странный код. Не врубаюсь в него.
Один из примеров кода, написанного сразу на двух языках программирования. Каждый из интерпретаторов либо перепрыгивает код "чужого" языка, либо воспринимает их как комментарии.
Название: Вопросы о Python-е
Отправлено: Upliner от сентября 22, 2015, 16:06
Нашёл, как это называется: https://en.wikipedia.org/wiki/Polyglot_%28computing%29
Название: Вопросы о Python-е
Отправлено: Python от сентября 25, 2015, 12:27
Цитата: Demetrius от сентября 22, 2015, 15:08
https://github.com/snoack/python-goto — Пѵѳонъ должен бы оценить
Оцінюю
Название: Вопросы о Python-е
Отправлено: Python от сентября 25, 2015, 12:42
Цитата: Demetrius от сентября 22, 2015, 15:36
По-моему Питонов код успешно демонстрирует, что гото не нужен ;)
В части, где батник — определенно нужен. При отсутствии многострочных комментариев в синтаксисе батника, безусловный переход — практически единственный способ «закомментить» произвольный текст после него (до конца файла или до следующей метки; к счастью, cmd.exe работает как чистый интерпритатор и проверяет синтаксис каждой команды лишь непосредственно перед ее выполнением).
На самом деле можно было сделать проще:

@py -3 -x "%~f0" %* & goto :eof
# some python code...

Но когда создавался тот код, об опции -x (игнорировать первую строку питоновского файла) я не знал.
Впрочем, даже здесь понадобилось бы goto :)
Название: Вопросы о Python-е
Отправлено: Hellerick от июня 4, 2016, 14:44
Нашел у себя программу, которую написал непонятно зачем.


def check(e):
    l = [[i, 1/i] for i in range(1,e+1)]
    s = sum([i[1] for i in l])
    l1=[[0,0,0]]
    for i in l:
        if i[0]==1:
            l1=l1+[[i[0],i[1],i[1]/s]]
        else:
            l1=l1+[[i[0],i[1],l1[i[0]-1][2]+i[1]/s]]
    i=0
    go_on = True
    while go_on:
        i+=1
        if l1[i][2]+l1[i][0]/e>1: go_on = False
    a = l1[i-1][2]+l1[i-1][0]/e
    b = l1[i][2]+l1[i][0]/e
    return (1-a)/(b-a)+i-1

if __name__=='__main__':
    for j in range(6,400):
        elemq=j
        print(j,check(elemq))


Сейчас сижу, пытаюсь понять, что же она делает.
Название: Вопросы о Python-е
Отправлено: Bhudh от июня 4, 2016, 20:31
Цитата:     for j in range(6,400):
        elemq=j
        print(j,check(elemq))
Возрастающая функция :donno:.
Название: Вопросы о Python-е
Отправлено: Hellerick от июня 4, 2016, 20:58
Вижу, что возрастающая. Но ведь зачем-то я ее городил?
Название файла -- что-то вроде "Zipf vs 2080".
Название: Вопросы о Python-е
Отправлено: Bhudh от июня 4, 2016, 22:12
Блин. Закон Ципфа... Чё ж я сразу-то не сообразил... :fp:
Название: Вопросы о Python-е
Отправлено: Hellerick от июня 30, 2016, 09:53
Чтобы прочитать пакет в формате wheel надо скачать Wheel, который распространяется в формате wheel.

https://pypi.python.org/pypi/wheel#downloads

Это шутка такая?
Название: Вопросы о Python-е
Отправлено: Demetrius от июня 30, 2016, 10:19
Вроде пишут, что через pip устанавливать надо. :???

Я так понял, по-русски это «wheel» надо переводить «велосипед», да?
Название: Вопросы о Python-е
Отправлено: Bhudh от июня 30, 2016, 12:51
Цитата: Hellerick от июня 30, 2016, 09:53Это шутка такая?
Шутка весьма старая, типа инсталлятора RARʼа в формате rar или драйвера сетевой карты, который предлагается скачать в сети.
Название: Вопросы о Python-е
Отправлено: Upliner от июня 30, 2016, 13:51
Цитата: Hellerick от июня 30, 2016, 09:53
Чтобы прочитать пакет в формате wheel надо скачать Wheel, который распространяется в формате wheel.

https://pypi.python.org/pypi/wheel#downloads

Это шутка такая?
Там предлагается для скачивания 2 формата -- whl и обычный .tar.gz. Если у кого-то есть более старая версия wheel, то он может его обновить его из .whl пакета, если нет -- то скачать и установить из .tar.gz.
Таких случаев весьма много -- компилятор языка C, написанный на C, git, исходники которого хранятся в git и т.д.
Название: Вопросы о Python-е
Отправлено: Hellerick от июля 1, 2016, 03:57
Я сейчас какой-нибудь IDE для python'а подбираю.
Кто что использует, может посоветовать?
Название: Вопросы о Python-е
Отправлено: Python от июля 1, 2016, 22:32
Из питоновских IDE пользовался только PyCharm'ом. Лучше или хуже — сказать не могу, т.к. сравнивать несчем (кроме менее специализированных текстовых редакторов).
Название: Вопросы о Python-е
Отправлено: Hellerick от июля 1, 2016, 23:03
Я тоже сейчас с ним играюсь.

Чего мнетв нем не хватает: В стандартном IDLE после выполнения программы все переменные и функциии остаются в памяти, и через shell с ними можно еще поиграть, повыполнять с ними какие-то действия. В PyCharm после выполнения программы она полностью мертва, и ты с нею уже ничего не можешь сделать. Разве что можно из тамошнего Python shell'а через execfile вызвать выполнение этой же программы, и тогда данные будут доступны оттуда. Но это неудобно, особенно если программа долго работает и требует сложного взаимодейтвия с пользователем. Я что-то делаю не так? Нельзя ли как-то добиться, чтобы послы имполнения скрипта или его дебаггинга его результаты оставались доступными?
Название: Вопросы о Python-е
Отправлено: Hellerick от сентября 11, 2016, 07:14
Выполнил школьное задание, программа для кодирования/декодирования шифра Цезаря.

print("""== Caesar's encryption/decryption algorithm ==
To switch between encryption/decryption modes, enter a single 'e' or 'd'.
To input encryption key, enter a number 1...25.
To quit, enter 0.""")

def cipher(t):
    d = {chr(ord('a')+i):chr(ord('a')+(i+key*encrypt)%26) for i in range(26)}
    d.update({chr(ord('A')+i):chr(ord('A')+(i+key*encrypt)%26) for i in range(26)})
    return ''.join([d[c] if c.isalpha() else c for c in t])

go_on = True
encrypt = 1
key = 0

while go_on:
    u = input()
    if u in [str(i+1) for i in range(25)]:
        key = int(u)
        print('<Encryption key switched to %d>'%key)
    elif u == '0':
        go_on = False
        print('<Quit>')
    elif u == 'e':
        encrypt = 1
        print('<Switched to encryption mode>')
    elif u == 'd':
        encrypt = -1
        print('<Switched to decryption mode>')
    else:
        print(cipher(u))


Хотелось бы услышать какую-нибудь критику. По организации, по оформлению, по чему-то еще.
Название: Вопросы о Python-е
Отправлено: Hellerick от сентября 16, 2016, 07:53
Сделал себе сшивалку JPEG и PNG картинок в PDF.

import os
from PIL import Image as image
from reportlab.pdfgen import canvas
from reportlab.lib.units import mm


maxpagesize = (140*mm, 193*mm)


def convertfolder(folder):
    if folder[-1] in ('/' or '\\'): folder = folder[:-1]
    print('Proceding the folder "%s"'%folder)
    filelist = os.listdir(folder)
    filelist = [os.path.join(folder, i)
        for i in filelist if
            i[-4:].lower() =='.png' or
            i[-4:].lower() =='.jpg' or
            i[-5:].lower() =='.jpeg']
    filelist.sort()
    pdffilename = folder + '.pdf'
    c = canvas.Canvas(pdffilename, pagesize=maxpagesize)
    for f in filelist:
        with image.open(f) as i:
            scale = min(maxpagesize[0]/i.size[0], maxpagesize[1]/i.size[1])
            pagesize = (scale*i.size[0], scale*i.size[1])
        c.setPageSize(pagesize)
        c.drawImage(f, 0, 0, *pagesize)
        c.showPage()
    c.save()


def convertfolderlist(folderlist):
    folderlist = folderlist.split('\n')
    folderlist = [i for i in folderlist if i!='']
    for i in folderlist: convertfolder(i)


if __name__=="__main__":
    convertfolderlist("""
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 01
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 02
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 03
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 04
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 05
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 06
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 07
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 08
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 09
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 10
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 11
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 12
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 13
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 14
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 15
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 16
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 17
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 18
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 19
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 20
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 21
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 22
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 23
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 24
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 25
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 26
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 27
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 28
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 29
/home/hellerick/Documents/Akiba/Manga/Mangajin/Vol 30
""")


Опять-таки, критика любого рода приветствуется.
Название: Вопросы о Python-е
Отправлено: Hellerick от марта 9, 2017, 10:48
Мне одному кажется, что разный подход к мутабельным и иммутабельным объектам, никак не отраженный в синтаксисе языка — это наглое нарушение принципа "явное лучше неявного"?

Я про то, что по записи a=b невозможно заранее сказать, идет ли речь о приравнивании или отождествлении.
Название: Вопросы о Python-е
Отправлено: Vertaler от марта 9, 2017, 12:06
Так тема не про бейсик вроде, а про паскаль.  :umnik:
Название: Вопросы о Python-е
Отправлено: Vertaler от марта 9, 2017, 12:39
Тьфу. Про пайтон.
Название: Вопросы о Python-е
Отправлено: Hellerick от марта 9, 2017, 12:51
Цитата: Vertaler от марта  9, 2017, 12:39
Тьфу. Про пайтон.

Мне ваше высказывание не стало понятнее.
Название: Вопросы о Python-е
Отправлено: Vertaler от марта 9, 2017, 12:56
Цитата: Hellerick от марта  9, 2017, 12:51
Мне ваше высказывание не стало понятнее.
A = b имеет два значения только в бейсике из известных мне языков.
Название: Вопросы о Python-е
Отправлено: Lodur от марта 9, 2017, 13:01
Цитата: Upliner от июня 30, 2016, 13:51компилятор языка C, написанный на C
Он, всё ж таки, немножко откомпилированный, так что без разницы. Это не то.
Название: Вопросы о Python-е
Отправлено: Upliner от марта 9, 2017, 17:58
Цитата: Lodur от марта  9, 2017, 13:01
Цитата: Upliner от июня 30, 2016, 13:51компилятор языка C, написанный на C
Он, всё ж таки, немножко откомпилированный, так что без разницы. Это не то.
В смысле "немножко откомпилированный"? Где в svn-е gcc откомпилированные файлы?