Thursday, November 12, 2009

Некоторые факты о языке python

В последнее время накопилось большое число заметок о питоне. Решил сделать небольшой brain dump, в напутствие начинающим..


  • Отступы в питоне являются частью синтаксиса, а не просто стилистической особенностью.
  • Благодаря этому, внешний вид кода дает представление, как он будет работать.
  • Программа на python может распространяться в виде байт-кода. (Perl к сожалению пока такой возможности не предоставляет).
  • Изменения в логике производятся созданием подклассов, а не изменением суперклассов - того что уже работает.
  • Полиморфизм, возможно, ключевая идея правильного использования Python. Не ограничивая код определенными типами, мы автоматически делаем его применимым для многих типов.
  • "Изменяемость" (mutability) - это неотъемлемое свойство любого объектного типа.
  • Присваивание создает ссылки, а не копии.
  • В питоне нет операторов ++ и --, т.к. это не полностью согласуется с объектной моделью (нельзя изменить объект, представляющий число).
  • В отличие от языка C, присваивание в питоне не является выражением и не возвращает значение, которое было присвоено.
  • По умолчанию, все имена, присвоенные в теле функции являются локальными. (В отличие от perl, где все имена по умолчанию являются глобальными).

6 comments:

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

    ReplyDelete
  2. В отличие от языка C, присваивание в питоне не является выражением и не возвращает значение, которое было присвоено.
    является, но возвращает оно не значение, а ссылку на переменную, которой значение было присвоено

    >>> foo = bar = 5
    >>> foo
    5
    >>> bar
    5


    >>> class foo:
    ... pass
    ...
    >>> x = y = foo()
    >>> x.bar = "hi!"
    >>> y.bar
    'hi!'

    ReplyDelete
  3. http://oreilly.com/catalog/9780596515829
    В сети есть eng и ru версии..
    Там по-моему для изучения используется оболочка ipython

    ReplyDelete
  4. Если бы возвращалась ссылка, то ошибки бы не было
    >>> print foo = 1
    File "", line 1
    print foo = 1
    ^
    SyntaxError: invalid syntax
    n0 = n1 = ... = expression
    Это просто одна из форм присваивания.

    ReplyDelete