Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Python
Перезагрузить страницу Год Питона, говорят)))
Ответ
 
Опции темы Опции просмотра
  (#61 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 10.01.2012, 16:57

Про функции. Забыл совсем. Небольшое но важное дополнение.

python Код:
>>> def f(a,b,c):return a+b+c

>>> l=[1,2,3]
>>> f(*l)
6
>>> d={'a':1,'b':2,'c':3}
>>> f(**d)
6
Ответить с цитированием
  (#62 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 10.01.2012, 18:08

Ещё одно дополнение. Множественное присваивание:
python Код:
>>> x,y,z=1,2,3
>>> x
1


python Код:
>>> a=[1,2,3]
>>> x,y,z=a
>>> y
2
Оно же внутри for, можно обозвать это примитивным паттерн-мэтчингом:
python Код:
>>> l=[(1,2),(3,4),(5,6),(7,8)]
>>> for x,y in l:
    print y

2
4
6
8

Возврат функцией нескольких значений (на самом деле это просто кортеж значений, что демонстрирует второй пример, но скобки кортежа можно опустить и удобно думать об этой опции как о возврате множественных значений)
python Код:
>>> def f(a,b):return b,a

>>> x,y=f(1,2)
>>> x
2
>>> y
1
>>> c=f(1,2)
>>> c[0]
2
>>> c[1]
1
Ответить с цитированием
  (#63 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 10.01.2012, 18:19

Цитата:
Сообщение от gromozeka Посмотреть сообщение
Ходил анекдот когда-то, что (_*_) - это не задница, а квадрат последнего вычисленного выражения в Питоне.

Цитата:
Сообщение от gromozeka Посмотреть сообщение
На всякий случай хочу обратить внимание, что в форуме по Прологу, Винитарх ведёт подобный ликбез по ВИП 7.3 .
Я на порядок медленнее. Да и не так наглядно получается, так как строго типизированный язык и строго объектно-ориентированный синтаксис не улучшают наглядность исходников в сравнении с шеллом Питона. Да и рассказ о VIP ориентирован для тех, кто знаком с Прологом (любым).
Цитата:
Сообщение от gromozeka Посмотреть сообщение
Мне просто хочется составить список вещей (не каких-то узкоспециализированных функций, а именно всяких "фишек", вот вроде этих самых слайсов) которые облегчают жизнь программистов на разных языках и острую нехватку которых испытываешь при переходе на другой язык.
Я здесь подумал, а что если попытаться сделать язык структуро-ориентированный или типо-ориентированный. Определить с какими базовыми типами и составными типами (тоже базовыми) будут работать конструкции языка (числа, строки, массивы, списки-стеки, очереди (двусвязные списки), деревья(разные), словари, хэш-таблицы, UDT-структуры. вроде ничего не забыл?) и для них описать полный набор высокоуровневых функций с очень простым синтаксисом так, чтобы одна и таже операция над разными типами выражалась примерно одинаково синтаксически. Или это получится K?
Ответить с цитированием
  (#64 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 10.01.2012, 20:59

Цитата:
Или это получится K?
Насколько я понимаю, не получится. APL был изначально задуман как математическая нотация для описания действий с массивами различной размерности, в J и K вроде бы тоже всё вертится именно вокруг действий над массивами и всяких хитрых способов комбинирования существующих функций.
словарь J - Содержание Словаря
Ответить с цитированием
  (#65 (permalink)) Старый
aag aag вне форума
ушёл... не вернётся)))
 
Сообщений: 3,400
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
По умолчанию 11.01.2012, 00:26

Python Код:
>>> [1,2,3]>[2,3,4]
False
>>> [1,2,3]<[2,3,4]
True
Ага... Питон списки сравнивает, молодца)))

Прошу простить меня великодушно, если я ближайшие денёчки буду появляться "рванно" и "не совсем вменяемо".
Я не потерял интерес к теме. Просто: жёны, дети, пробки на дорогах, в космосе чёрные дыры, прочие всякие дурацкие стечения обстоятельств)))
Ответить с цитированием
Ads.
  (#66 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 11.01.2012, 01:15

Цитата:
Сообщение от aag Посмотреть сообщение
Прошу простить меня великодушно, если я ближайшие денёчки буду появляться "рванно" и "не совсем вменяемо".
Я не потерял интерес к теме. Просто: жёны, дети, пробки на дорогах, в космосе чёрные дыры, прочие всякие дурацкие стечения обстоятельств)))
+1. А у меня заочники нарисовались в расписании занятий.
Ответить с цитированием
  (#67 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 11.01.2012, 01:42

Ага. И AD_ просил помедленнее...
Остановиться пока? Или продолжать потихоньку?
Ответить с цитированием
  (#68 (permalink)) Старый
aag aag вне форума
ушёл... не вернётся)))
 
Сообщений: 3,400
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
По умолчанию 11.01.2012, 01:49

Цитата:
Сообщение от gromozeka Посмотреть сообщение
Ага. И AD_ просил помедленнее...
Остановиться пока? Или продолжать потихоньку?
Дык сунуть всем по "домашнему заданию"...

И ждать...)))
Ответить с цитированием
  (#69 (permalink)) Старый
D_K D_K вне форума
Member
 
Сообщений: 1,681
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.11.2005
По умолчанию 11.01.2012, 03:13

Цитата:
Сообщение от gromozeka Посмотреть сообщение
Ага. И AD_ просил помедленнее...
Остановиться пока? Или продолжать потихоньку?
Мне вроде нормально, хотя у меня пока "закрепление материала", так сказать, идет
Может правда каких-нибудь простеньких задачек накидать по тому, что уже было рассказано? Или остались еще какие-то базовые вещи, которые хочется дать перед заданием?


импортирован с progz.ru
Ответить с цитированием
  (#70 (permalink)) Старый
D_K D_K вне форума
Member
 
Сообщений: 1,681
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.11.2005
По умолчанию 11.01.2012, 04:11

Кстати, gromozeka, а почему Вы 2ой питон выбрали, а не 3ий?
Если кому интересно поиграться с третьим, то приведу несколько отличий по тем темам и тому коду, что уже встречались:
  1. print стал функцией, т.е. писать придется print("Hello world"). Ну и для форматирования появились новые плюшки(но это сейчас не важно).
  2. Целые числа разучились делать __div__, теперь только __divmod__, / - работает, но иначе - возвращает теперь числа в сплавающей точкой(т.е. 1/2 == 0.5, а во 2ом будет 0).
  3. В третьем питоне остался только range, вернее, это range теперь ведет себя как xrange, соответственно сам xrange не нужен.
  4. dict лишился has_key, теперь можно и нужно так: key in dic
  5. set стал обозначаться просто {0,1,2,3}, но при этом {} по прежнему dict.
Вроде по тому, что было - все...
Не знаю, насколько это полезно, но все-таки

Замутить что-ли аналогичную тему для С++, именно чтобы все для новичков в этом языке? В качестве интерпретатора можно использовать какой-нибудь онлайн-компилятор, их сейчас не мало. Хотя для С++ боюсь не получится


импортирован с progz.ru

Последний раз редактировалось D_K; 11.01.2012 в 04:26
Ответить с цитированием
  (#71 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 11.01.2012, 11:44

Цитата:
Сообщение от D_K Посмотреть сообщение
Хотя для С++ боюсь не получится
Замутить можно и нужно. Но посмотрите как это всё выглядит на Питоне (в шелле, без деклараций типов, без обязательного синтаксиса классов) и насколько мутнее это выглядит в VIP-е (в классе main, который ДОЛЖЕН инициализировать класс консоли, обязательные объявления предикатов, типов параметров, режимов детерминизма, потока параметров и т.п. в имплементации класса main). Читателю надо объективно оценить разницу между языками не как сложность какого-то языка, а как объективное отличие разных видов языка: со статической строгой типизацией и с динамической типизацией. Лично я за уроки по C++. У меня с этим пробел, так как я писал раньше в Delphi, сейчас в VBA (если рассматривать императивные высокоуровневые языки), однако это несколько другой подкласс императивных языков, нежели чем Си-подобные языки.
И стоило бы начать уроки по C++ после уроков по Питону, а то изучение двух языков одновременно - нехорошо.

Последний раз редактировалось Винитарх; 11.01.2012 в 11:48
Ответить с цитированием
  (#72 (permalink)) Старый
D_K D_K вне форума
Member
 
Сообщений: 1,681
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.11.2005
По умолчанию 11.01.2012, 12:00

Цитата:
Сообщение от Винитарх Посмотреть сообщение
Читателю надо объективно оценить разницу между языками не как сложность какого-то языка, а как объективное отличие разных видов языка: со статической строгой типизацией и с динамической типизацией.
Тут скорее дело в явной типизации, чем в статической. Посмотрите на haskell, ML'и, Nemerle и пр. В новом стандарте С++ тоже есть фичи для автоматического вывода типов и получения типа выражения.

Цитата:
Лично я за уроки по C++. У меня с этим пробел, так как я писал раньше в Delphi, сейчас в VBA (если рассматривать императивные высокоуровневые языки), однако это несколько другой подкласс императивных языков, нежели чем Си-подобные языки.
И стоило бы начать уроки по C++ после уроков по Питону, а то изучение двух языков одновременно - нехорошо.
Ок, договорились.
Только вот тут есть нюанс - я насмотревшись на уроки по питону, захотел во всю использовать новый стандарт и попытаться сделать изложение и примеры столь же простыми, а уже потом подбираться к низкоуровневым деталям. Нет возражений? Или в контексте С++ стоит таки идти, так сказать, снизу? Интересен ли вам голый С?


импортирован с progz.ru
Ответить с цитированием
Ads
  (#73 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 11.01.2012, 12:16

Голый Си не интересен по прагматическим соображениям. Я не занимаюсь системным или низкоуровневым программированием, не интересно. Именно на Си неинтересно. На асме Intel или на асме AVR для встроенных систем интересно.
Цитата:
Сообщение от D_K Посмотреть сообщение
Только вот тут есть нюанс - я насмотревшись на уроки по питону, захотел во всю использовать новый стандарт и попытаться сделать изложение и примеры столь же простыми, а уже потом подбираться к низкоуровневым деталям.
Да. Скорее всего так.
Ответить с цитированием
  (#74 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 11.01.2012, 13:16

Цитата:
Кстати, gromozeka, а почему Вы 2ой питон выбрали, а не 3ий?
Ну в общем по двум соображениям.
1) Я сам пишу на 2ом Питоне и мне не надо задумываться ни на секунду, когда я вхожу в шелл и показываю очередную фишку. Пока что не встретил ни одной компании, которая бы перешла на 3ий, до сих пор в индустрии к нему отношение как к чему-то относительно сырому, хотя это наверняка уже не так. Кроме того, многие из полезных библиотек под него до сих пор не портированы.
2) Между 2ым и 3им Питоном нет такой уж большой разницы, 3я версия была сделана не с целью привнести в язык что-то новое (хотя несколько очень красивых фишек в нём появилось), а с целью причесать старое (с лёгкой потерей обратной совместимости). Она идеологическая скорее. И перейти со 2ой на 3ю можно в случае чего легко и безболезненно.
Если все хотят продолжить с 3ей версией, нет проблем.

Последний раз редактировалось gromozeka; 11.01.2012 в 13:28
Ответить с цитированием
  (#75 (permalink)) Старый
gromozeka gromozeka вне форума
Флудер
 
Аватар для gromozeka
 
Сообщений: 3,170
Сказал(а) спасибо: 6
Поблагодарили 16 раз(а) в 15 сообщениях
Регистрация: 28.02.2005
Адрес: Израиль
По умолчанию 11.01.2012, 13:24

Посмотрел список отличий. Ещё по крайней мере одно вижу, input в третьем питоне интерпретирует то, что ввёл пользователь, просто как строку. Чтобы получить поведение аналогичное input() во втором Питоне, нужно написать eval(input()).
апдейт:
да, я ж только недавно показывал множественное присваивание. в 3ем оно еще больше сдвинулось в сторону нормального паттерн-мэтчинга.
скажем конструкция:
python Код:
>>> head, *tail = [1,2,3,4,5]
>>> head
1
>>> tail
[2,3,4,5]
(3ий Питон у меня не установлен, набирал руками)
практически Пролог
python Код:
>>> a, *b, c = [1,2,3,4,5]
>>> a
1
>>> b
[2,3,4]
>>> c
5
А это вообще Рефал

Последний раз редактировалось gromozeka; 11.01.2012 в 15:23
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку(и) - говорят, что должно работать... wampu Prolog 7 02.08.2007 09:32
О нашем форуме говорят... Винитарх Prolog 6 29.05.2006 20:02



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов