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

Вопросы о Python-е

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

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

Hellerick

Цитата: 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, и как с ними питон собирается обращаться. Как-то это не соответствует моим представлениям о комфортном языке.

Hellerick

Опять питон плохо себя ведет.  :(

>>> 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>]


Зачем он прописал два объекта по одному адресу? Я ж их не расцеплю теперь. Мне надо было просто скопировать значения из одного объекта в другой.

І. G.

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])).
...И мимимишечных круглышек,
Что безусловно хороши,
Но очень вредны для души.

Wolliger Mensch

«Вот интересно, каких лингвистических жемчуг можно найти в море отодвинутых книг», Ян Гавлиш.
«Впредь прошу помнить, что придумал игру не для любых ассоциаций, а для семантически оправданных. Например, чтó это такое: ,,рулетке" — ,,выпечке"?? Тем более, что сей ляпсус я сам совершил...», Марбол
«Ветхий Завет написан на иврите и частично на армейском», Vesle Anne
«МЛ(ять)КО ... ПЛ(ять)NЪ», Тася
«Вот откроет этот спойлер, например, Марго, ничего не подозревая, а потом будут по всему форуму блюющие смайлики...», Авал
«Томан приличный мужчина. Правда по патриархальным меркам слегка голодранец», Vesle Anne
«Возможен ли фонетический переход "ж" в "п с придыханием"», forest

Hellerick

Цитата: Demetrius от декабря 25, 2013, 12:04
Это не Python прописал 2 объекта по одному адресу, это вы прописали их по одному адресу,
Да знаю я. Но пакостная же особенность.

arseniiv

Нормальная особенность. Копирование адреса — это прозрачно. Глубокое копирование может быть разным и не так прозрачно, и не всегда возможно. Так что если первое соответствует простому синтаксису, а второе — непростому, это нормально. По-моему. Но я ведь прав.

Hellerick

Главное — что фактическая реализация программы противоречит ее алгоритмическому описанию. Это, может, и поощряет более рациональную манеру программирования, но всё равно, это баг.

arseniiv

Цитата: Hellerick от декабря 26, 2013, 01:55
фактическая реализация программы противоречит ее алгоритмическому описанию
А не надо смысл лишний приписывать ничему — и всё будет OK.

arseniiv



Python

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

Тайльнемер


Rachtyrgin

Четвертого Питона быть не должно. Пусть развивают третий...
Всякому остановленному фашисту для захвата его в плен можешь еще крикнуть:
«Хэндэ хох!» (Руки вверх!)
«Вафи хинлеги!» (Бросай оружие!)
«Абгезэсен!» (Слезай! — С машины, с лошади, с повозки.)
Если фашист не сразу исполняет твое приказание, крикни грознее и добавь:
«Бай флухтфэрзух вирт гэшози!» (Побежишь — буду стрелять!)
А. Афанасьев. В помощь партизану. Москва, 1942 г.

Python

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


Hellerick

Программа для генерирования 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:


Hellerick

Цитата: RawonaM от января  3, 2014, 11:01
Вряд ли это работает.

Там в самом начале стоит ключик регулярного выражения — наверное, через оные всё и исправляется.

Python

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

Hellerick

Цитата: Python от января  3, 2014, 18:00
Запустил пару раз. Что-то сгенерировало. Что с ним делать дальше?

Теперь вы можете послать туда все ваши деньги, и вам будет Счастье.

Hellerick

Несерьезный вопрос.

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

У вас есть какие-нибудь традиции именования таких переменных?

Python

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

Hellerick

Решил почитать, что пишут умные люди.
Цитировать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.

arseniiv

Справку по open-то посмотрите. Там, вроде, можно и насильно указать, какими строками разделять lines файла.

Hellerick


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

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

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

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

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