Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Вопросы о Python-е

Автор Квас, декабря 23, 2011, 00:14

0 Пользователи и 1 гость просматривают эту тему.

Hellerick

Цитата: Hellerick от октября  8, 2013, 06:37
Поставил себе Python 3.3.
Был шокирован, что print теперь требует скобок.

Это еще что.

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

Твоюжмать :o

RawonaM

Hellerick, а нельзя просто кратко прочитать нововведения в питон 3 и не удивляться каждый раз?

Hellerick

А еще они куда-то дели `мои косые скобочки`!  :uzhos:

Цитата: RawonaM от октября 24, 2013, 08:28
Hellerick, а нельзя просто кратко прочитать нововведения в питон 3 и не удивляться каждый раз?
А толку? Я ж всё равно сюда буду бегать свои эмоции выплескивать.

Python

Что язык поменяли до полной несовместимости — ладно, майкрософтовские бейсики 80-х и 90-х годов тоже имеют мало общего между собой. Но зачем еще одно и то же название интерпритатора и расширение файлов для 2-х и 3-х питонов использовать? Особенно с учетом, что файлы .py рассчитаны на самосоятельный запуск как скрипты. После выхода 3-го питона, простые способы запуска питоновских скриптов (бóльшая часть которых написана на Python 2.x) остались в прошлом.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Hellerick

Ну, лично я теперь взял за привычку специально писать так, чтоб и второй (дома), и третий (на работе) пvѳоны код корректно исполняли. Хотя зачем эту свистопляску придумали, понимаю плохо. Видать, про то, что лучшее — враг хорошего, они не слышали.

Timiriliyev

Летом сего года понадобилось запустить один скрипт (чтобы всего-то распаковать хромопак ради интереса), написанный на питоне. С питоном я знаком весьма поверхностно на уровне хеллоуворлда, поэтому просто скачал и установил последнюю версию. Много думал. Только потом дошло, что скрипт написан на втором питоне, хотя написан и выложен был за несколько дней до того, как я его скачал.

Второй питон всё ещё так популярен или прогер, писавший тот скрипт, был "динозавром"?
Правда — это то, что правда для Вас.

Python

Судя по всему, 2-й именно и популярен. На 3-м пишут реже.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Hellerick

Цитата: Timiriliev от октября 24, 2013, 15:47
Второй питон всё ещё так популярен или прогер, писавший тот скрипт, был "динозавром"?
Не смотря на некоторые теоретические преимущества Третьего, каких-то практических шагов для перехода не него предпринимается мало. Всё уже ориентировано на Второй, и морочиться с переездом никому не хочется. Вон в моей Убунте тоже Второй искаропки установлен.

arseniiv

Если писать на втором аккуратно, можно будет получить код на третьем автоматически с помощью //2to3.py.

Цитата: Python от октября 24, 2013, 15:34
Но зачем ещё одно и то же <...> расширение файлов для 2-х и 3-х питонов использовать?
+1

Hellerick

А нет ли конвенции, чтобы в коде прописывать что-то вроде
Цитировать# -*- version: 2.7 -*-
?


Hellerick

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

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

try:
    from Tkinter import *
    from tkinter import *
except BaseException: pass

arseniiv

А что ужасаться-то? Вполне нормальная для своего назначения конструкция.

Hellerick

Цитата: Hellerick от декабря  3, 2013, 16:02
try:
    from Tkinter import *
    from tkinter import *
except BaseException: pass


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

Python 3 почему-то потребовал, чтобы tkinter шел первым. А Python 2, небось, захочет, чтобы первым был Tkinter?

RawonaM

Цитата: Hellerick от декабря  4, 2013, 04:08
Не работает  :(
Логично. Попробуйте так:

try:
    from tkinter import *
except BaseException: pass
try:
    from Tkinter import *
except BaseException: pass

Hellerick

Цитата: RawonaM от декабря  4, 2013, 08:20
Попробуйте так:
Я сначала так и сделал, но потом обнаружил, что на двоечке они и вместе работают. А потом пришел на троечку, и обнаружил, что там не работают.
В общем, затеребили они мена со своими версиями.

RawonaM

Цитата: Hellerick от декабря  4, 2013, 08:41
Я сначала так и сделал, но потом обнаружил, что на двоечке они и вместе работают.
Значит у вас на двойке первый вариант есть на обоих системах.
Не может же он выполнить вторую строку если первая выдала эксепшн.

Hellerick

Цитата: RawonaM от декабря  4, 2013, 08:52
Значит у вас на двойке первый вариант есть на обоих системах.
Не может же он выполнить вторую строку если первая выдала эксепшн.

А, во оно как.

А я думал, что try — это такой режим, когда просто все сообщения об ошибках откладываются до поры до времени.

RawonaM

Цитата: Hellerick от декабря  4, 2013, 09:29
А я думал, что try — это такой режим, когда просто все сообщения об ошибках откладываются до поры до времени.
Бесполезный был бы режим :)

Python

Цитата: 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).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2


Hellerick

Недавно захотел скомпилировать программку (кажется, с помощью py2exe). Код был на одну страничку, а исполняемый файл получился на 3,5 МБ. Похоже, весь питон туда целиком запихнут.

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

Но ведь как-то питоном всё же пользуются при производстве человеческих программных продуктов.  :donno:

Rachtyrgin

Вполне "человеческий программный продукт", например, - мой любимый библиотечный менеджер Calibre (написан на версии 2.7). Вес инсталляшки - 58 метров. После установки весит 166 мегов. Из них 48 мегов весит зазипованная папка //pylib.zip и 82 мега - виндузовые DLL-ки. Сам исполняемый файл весит 169 килобайт. Все вполне терпимо. Правда, это несколько иной подход к делу, нежели компилировать исходник при помощи py2exe.
Но одно автор потерял однозначно - кроссплатформенность питона.
Всякому остановленному фашисту для захвата его в плен можешь еще крикнуть:
«Хэндэ хох!» (Руки вверх!)
«Вафи хинлеги!» (Бросай оружие!)
«Абгезэсен!» (Слезай! — С машины, с лошади, с повозки.)
Если фашист не сразу исполняет твое приказание, крикни грознее и добавь:
«Бай флухтфэрзух вирт гэшози!» (Побежишь — буду стрелять!)
А. Афанасьев. В помощь партизану. Москва, 1942 г.

Hellerick

Играюсь с питоном.


>>> 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], этого не проиходит.

Это баг или фича?

RawonaM

sub у вас это переменная класса. D[0].sub, D[1].sub, Dclass.sub — все указывают на один объект.
Однако в строке
Цитата: Hellerick от декабря 23, 2013, 14:21
>>> D[0].sub = D[0].sub + [1]

Вы создаете новую переменную объекта D[0], которая затеняет переменную класса.

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр