Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Язык программирования Python (Питон, Пайтон)

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Открыть новую тему     Написать ответ в эту тему

Язык программирования Python (Питон, Пайтон)
 ОтветГолосаПроценты
первый раз слышу8
1.52%
слыхал, но ничего сказать про него немогу132
25.05%
изучал, но меня от него не прёт22
4.17%
изучаю и скоро на него перейду231
43.83%
скрипты пишу в основном на нём83
15.75%
пишу только на нём44
8.35%
я из комманды разработчиков Python'а7
1.33%
Гости не могут голосовать, зарегистрируйтесть!Всего Голосов: 527
quamque



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Python — интерпретируемый, интерактивный, объектно-ориентированный язык программирования высокого уровня. Поддерживает классы, модули (которые могут быть объединены в пакеты), обработку исключений, а также многопоточную обработку. Питон относится к классу языков с динамической типизацией, обеспечивает «сборку мусора» и удобные высокоуровневые структуры данных, такие как словари (хэш-таблицы), списки, кортежи. Питон обладает простым и мощным синтаксисом. Огромное количество высококачественных библиотек.
 
Интерпретатор Питона существует для большинства распространённых платформ. Он распространяется свободно под очень либеральной лицензией, позволяющей использовать его без ограничений в коммерческих приложениях.  
.

Скачать: http://www.python.org/download/
Подробнее: http://ru.wikipedia.org/wiki/Python



оригинальное сообщение от quamque:
Здесь в основном говорят о программировании на Perl и PHP,  
Недавно я взялся за Python и нашёл, что язык не только забавен сам по себе (функциональное программирование, отступы вместо скобок), но и выгодно отличается от PHP и Perl.  
По сравнению с PHP более объектно ориентирован, есть обработка исключений.  
Если сравнивать с Perl, то внутренности языка глубоко запрятаны, поэтому читать код и учиться на нём писать программы намного легче.  
Если что забыл - добавьте, плз.
Хотелось бы обрасти полезными ссылками и замечаниями об этом языке.



Домашняя страница - http://python.org
PyPy -- будущая реализация интерпретатора http://pypy.org/
Usenet - главный англоязычный форум - comp.lang.python - http://groups.google.com/groups?hl=ru&group=comp.lang.python
Jython -- Python для JVM http://Jython.org
Python под .Net (IronPython) -- http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython
Пакеты (= модули, расширения, библиотеки) -- http://www.python.org/pypi , https://pythonpackages.com/ , http://www.vex.net/parnassus/
Ускорители - MyPy, Numba, Nuitka, Cython, PyPy
 
Самые известные программы на Python
Mailman - для организации почтовых рассылок -  http://www.gnu.org/software/mailman/
http://zope.org  - один из самых известных проектов на Python
http://twistedmatrix.com  - application-framework понимающий кучу протоколов (http, https, ssh, ftp, irc... и много прочего) и позволяющий строить на его основе в принципе любые сетевые (не только web) приложения
http://bittorrent.com -- оригинальный Битторент, кстати и сайт этот сделан на Питоне с использованием фрэймворка  
Trac - Вики, Тикеты, просмотр VC репозиторий
ViewVC (изначально ViewCVS) - просмотр VC репозиторий
подробнее см. здесь
 
Книги и доки по Питону:
Страничка Википедии
http://www.python.ru/files/book-ods.pdf (рус)
Краткий обзор языка Python http://www.helloworld.ru/texts/comp/lang/python/python2/index.htm
Python 2.7 Quick reference на английском, но очень удобно сделан,  варианты для печати/просмотра
Ветка по варезным книжкам (ebooks)
Учебный курс по языку Python Романа Сузи
 
Русскоязычные сайты:
Учебник по Python 2.5: http://ru.wikibooks.org/wiki/Учебник_Python_2.5
INTUIT Учебный курс "Язык программирования Python"
http://zope.net.ru/ http://zope3.ru/
http://python.ru
Python FAQ: http://zope.net.ru/Python/FAQ/
http://iso.ru/cgi-bin/main/journal.cgi  - Практически в каждом номере журнала есть статьи по питону
Обучающий комплекс по языку программирования Питон: http://desk.nl/~vadim/python/  
http://python.su
 
Форумы:
* http://python.anabar.ru/forumz/anafo.py?forumid=4
* http://forum.vingrad.ru/index.php?showforum=116
* http://python.promsoft.ru
* http://ru-python.livejournal.com
* http://python.com.ua/forum = http://python.su
* http://code.activestate.com/recipes/langs/python/ - "рецепты" решения типичных задач
 
Web-программирование на Python
Фрэймворки:
* Zope FAQ: http://zope.net.ru/Zope/FAQ/  
* Web.py
* Django
* Pylons  
* Google App Engine
* Werkzeug
* Flask
* Bottle
* Pyramid
* Django
 
GUI (оконные графические приложения) на Питоне
Python+GTK=pyGTK
wxPython -- самый популярный - для работы с wxWidgets
Python+QT=pyQT
pyGame
nufox = XUL + python
pySWT = python + Eclipse SWT
PyAMF = Python + Flash/Flex/ActionScript
kivy kivy.org GUI для Android-ios-win-lin в т.ч. мультитач
 
Редакторы и IDE - хоть для Питона практически и не нужны никакие IDE
IDLE - включён в стандартную поставку Питона
pyDev - http://pydev.sourceforge.net/ (плагин для Eclipse)
SPE - http://spe.pycs.net/
Wing IDE - http://wingware.com ($)
Boa-Constructor - http://boa-constructor.sourceforge.net/
Vim  
Emacs XEmacs
UliPad - http://wiki.woodpecker.org.cn/moin/UliPad
PyScripter (под Windows) - http://pyscripter.googlecode.com
NBPython (ветка Netbeans) - http://deadlock.netbeans.org/hudson/job/python/
PyCharm - http://www.jetbrains.com/pycharm/ ($)
Komodo Edit




Исправил название /Cheery/

Всего записей: 227 | Зарегистр. 19-12-2001 | Отправлено: 19:08 19-08-2002 | Исправлено: dvs, 13:45 23-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
http://stackoverflow.com/a/9123555/1164491

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:46 22-12-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
т.е. без __import__ никак

Всего записей: 6545 | Зарегистр. 14-02-2005 | Отправлено: 03:57 22-12-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как покороче способом проверить на наличие нужного пути в sys.path и, если этот путь отсутствует, добавить его в sys.path.

Всего записей: 6545 | Зарегистр. 14-02-2005 | Отправлено: 06:01 22-12-2013
panda3

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
Ну, например:

Код:
if MyPath.upper() not in map(str.upper, sys.path):
    sys.path.append(MyPath)

Всего записей: 199 | Зарегистр. 06-02-2007 | Отправлено: 12:49 23-12-2013 | Исправлено: panda3, 12:50 23-12-2013
dvs



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
if MyPath.upper() not in map(str.upper, sys.path):
    sys.path.append(MyPath)  

 
# в unix/linux/android/macos:
sys.path = list(set(sys.path + [my_path]))

----------
Python developer                    

Всего записей: 330 | Зарегистр. 18-05-2001 | Отправлено: 13:35 23-12-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В классе есть такой метод:

Код:
 
class ИмяКласса (Какой-то объект):
    _escape_html_table = {
        ord('&'): u'&',
        ord('<'): u'&lt;',
        ord('>'): u'&gt;',
        #ord('"'): u'&quot;',
        #ord("'"): u'&#39;',
    }
 
...
 
def __escape_html(self, content, params_dict):
    """Преобразовать символы &, < и/или > в ссылки-мнемоники."""
    _escape_html_table = self._escape_html_table
 
    if ESCAPE_PARAM_NAME not in params_dict:
        return content.translate(_escape_html_table)
    else:
        table = {}
        escape = params_dict[ESCAPE_PARAM_NAME]
        for char in escape:
            ord_char = ord(char)
            if ord_char in _escape_html_table:
                table[ord_char] = _escape_html_table[ord_char]  
        return content.translate(table)
 
...

 
ESCAPE_PARAM_NAME -это имя параметра, импортируемое из другого файла.
content - юникодная строка (содержимое юникодного текстового файла)
params_dict - юникодный словарь (dict), в котором может быть, а может и не быть элемент с ключом, имя которого содержится в ESCAPE_PARAM_NAME (точнее, ключ "escape").
 
Можно ли это дело организовать попроще? А то при беглом просмотре описания dict и string.translate только это смог придумать.
 
Цель: на входе функции юникодные строка и словарь. Если в словаре содержится нужный ключ и какие-либо символы в нем совпадают с ключами в словаре _escape_html_table, то, соответственно, заменить их в content ссылками мнемониками (character entity references).
 
Python 2.7

Всего записей: 6545 | Зарегистр. 14-02-2005 | Отправлено: 08:18 25-12-2013 | Исправлено: unreal666, 08:20 25-12-2013
Jenyay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А стандартный cgi.escape не пойдет?

----------
http://jenyay.net - софт, исходники и фото

Всего записей: 1689 | Зарегистр. 13-10-2001 | Отправлено: 20:25 25-12-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cgi.escape минимум конвертирует <>&. А мне иногда нужно, чтобы <> оставались как есть.

Всего записей: 6545 | Зарегистр. 14-02-2005 | Отправлено: 02:23 26-12-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кто-нибудь пробовал поставить pywin32-218.win32-py2.7.exe ?
ставить как-то ставится, но с какой-то там ошибкой по части его dll-библиотек
 

Цитата:
Error installing pythoncom27.dll
 
If you have any Python applications running, please close them now
and select 'Retry'

Файл pythoncom27.dll ничем не занят.
Пытался зарегать (regsvr32) его вручную - не найдена точка входа.
Dependency Walker в таблице экспорта ф-ю DllRegisterServerEx видит. А вот прога PEinsigh вообще показывает, что она пустая.

Всего записей: 6545 | Зарегистр. 14-02-2005 | Отправлено: 12:11 08-03-2014
bomzhe



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
win32

Ставил как-то lxml через pip. Установочник обнаружил на машине VS2010 и решил, значится, скомпилировать бинарники пакета через неё, с закономерным результатом. Решение нашлось на http://www.lfd.uci.edu/~gohlke/pythonlibs/ — собранные пакеты под win32/64.

Всего записей: 110 | Зарегистр. 26-10-2010 | Отправлено: 14:27 08-03-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
оттуда тоже скачал pywin32-218.5.win32-py2.7.exe . Один хрен библиотека не регается, но уже без этой ошибки.
То что не регается видно по отсутствию в реестре нужных ключей.
И еще забыл. Перед данной ошибкой вылазит ошибка

Цитата:
Runtime Error!
 
Program: C:\Download\pywin32-218.5.win32-py2.7.exe
 
R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.


Всего записей: 6545 | Зарегистр. 14-02-2005 | Отправлено: 20:59 08-03-2014
Daniyar91

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь соберите русскую документацию (html), по django 1.6 с GitHub'а - https://github.com/Alerion/django_documentation и сожмите 7z.

Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 16:43 20-05-2014 | Исправлено: Daniyar91, 01:26 24-05-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как в винде из GUI-версии питона (pythonw.exe) вызывать/уничтожать консоль?

Всего записей: 6545 | Зарегистр. 14-02-2005 | Отправлено: 09:29 29-05-2014
Futurism

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Среди форумчан есть те кто умеет прогать text mining задачи на питоне?

Всего записей: 1183 | Зарегистр. 04-02-2011 | Отправлено: 14:21 08-08-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как получить короткое DOS-имя какого-либо пути в винде?

Всего записей: 6545 | Зарегистр. 14-02-2005 | Отправлено: 15:31 25-08-2014
Tilks

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
 

Код:
In [1]: import win32api
 
In [5]: win32api.GetShortPathName('C:/Program Files (x86)/Common Files/InstallShield/Professional/RunTime/11/50/Intel32/DotNetInstaller.exe')
Out[5]: 'C:/PROGRA~2/COMMON~1/INSTAL~1/PROFES~1/RunTime/11/50/Intel32/DOTNET~1.EXE'
 
In [6]: win32api.GetShortPathName(r'C:\Program Files (x86)\Common Files\InstallShield\Professional\RunTime\11\50\Intel32\DotNetInstaller.exe')
Out[6]: 'C:\\PROGRA~2\\COMMON~1\\INSTAL~1\\PROFES~1\\RunTime\\11\\50\\Intel32\\DOTNET~1.EXE'
 
In [7]: win32api.GetShortPathName(r'C:\Program Files (x86)\Common Files\InstallShield\Professional\RunTime\11\50\Intel32')
Out[7]: 'C:\\PROGRA~2\\COMMON~1\\INSTAL~1\\PROFES~1\\RunTime\\11\\50\\Intel32'

Всего записей: 2269 | Зарегистр. 14-08-2005 | Отправлено: 16:23 25-08-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
что в питоне быстрее?

Код:
type(u"a") is not type("a")

или

Код:
type(u"a") != type("a")

 
Добавлено:
еще вопрос. Есть, к примеру, класс с полем (или как там наз-ся) branch:

Код:
class Python (object):
    branch = type('a') is not type(u'a') and 2 or 3

Python.branch будет пересчитываться каждый раз или только один раз во время создания pyc-файла?
 
Добавлено:
и когда в классах надо юзать методы с одним подчеркиванием, а когда с двумя?

Всего записей: 6545 | Зарегистр. 14-02-2005 | Отправлено: 23:43 26-08-2014 | Исправлено: unreal666, 11:33 27-08-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tilks
спасибо за подсказку. Но желательно было сделать встроенными средствами питона, т.к. не всегда возможно таскать этот модуль с собой. Поэтому порылся еще в справке и нашел модуль ctypes и реализовал через него:

Код:
# -*- coding: UTF-8 -*-
 
__all__ = [
    'WinApi',
]
 
import ctypes
 
class WinApi (object):
    # """
    # """
    _windll = ctypes.windll
    _kernel32 = _windll.kernel32
 
    @staticmethod
    def GetShortPathName(lpszLongPath):
        """
        Возрвщает короткий (DOS) путь заданного пути.
        """
 
        isUnicode = type(lpszLongPath) is type(u'a') and True or False
 
        _GetShortPathName = isUnicode and WinApi._kernel32.GetShortPathNameW or WinApi._kernel32.GetShortPathNameA
        length = _GetShortPathName(lpszLongPath, None, 0)
 
        if (length == 0):
            return lpszLongPath
 
        lpszShortPath = isUnicode and ctypes.create_unicode_buffer(length) or ctypes.create_string_buffer(length)
        length = _GetShortPathName(lpszLongPath, lpszShortPath, length)
 
        if (length == 0 or length >= len(lpszLongPath)):
            return lpszLongPath
 
        return lpszShortPath.value

Всего записей: 6545 | Зарегистр. 14-02-2005 | Отправлено: 11:27 27-08-2014 | Исправлено: unreal666, 12:00 28-08-2014
Daniyar91

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В книге Майкла Доусона "Программируем на Python" на 57-ой странице написано:
Цитата:
... операция присвоения. В ней создается переменная name, которой присваивается значение - ссылка на строку "Вася". Вообще принято говорить, что переменным присваиваются значения. Если переменная ранее не существовала, как name в данном примере, то сначала интерпретатор создаст ее, а потом присвоит ей значение.

А в сноске научный редактор перевода пишет:
Цитата:
Автор не совсем прав. Интерпретатор создает все нужные переменные при создании области видимости. Все переменные (слева от оператора присвоения) в локальном scope будут созданы сразу же, еще на этапе компиляции кода.

В Python-документации написано:
Цитата:
...Следующее является блоками: модуль, тело функции и определение класса...
...Область видимости (scope) определяет видимость имени в блоке. Если локальная переменная определена в блоке, ее область видимости включает этот блок...
...Если операция связывания имени встречается где-нибудь в пределах блока, любые использования имени в пределах блока обрабатываются как ссылки на текущий блок...

Вот скрипт:
Код:
import builtins
 
builtins.x = 'builtins'
 
if not x: x = 'Модуль'
 
def func():
  if x: x = 'Функция'
 
class C:
  if x: x = 'Класс'
 
 
print('x =', x)
 
try: func()
except Exception as err: print(err.args[0])
 
print('C.x =', C.x)

Выполнив который получается такой вывод:
Код:
x = builtins
local variable 'x' referenced before assignment
C.x = Класс

Исходя из этого, можно судить что редактор не совсем прав, а точнее прав только в случае с функциями, а с классами и модулями это не так. Если бы он был прав, то код не смог бы выполниться, т.к. было-бы выброшено исключение в строке if not x: x = 'Модуль' или if x: x = 'Класс', поскольку имя x в условии инструкции If, еще не было бы связанно с чем либо.
 
Кто что может сказать - Редактор прав или нет? и если прав - почему?

Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 11:31 12-10-2014 | Исправлено: Daniyar91, 03:18 13-05-2016
ans72



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mark Lutz, Learning Python, 5th Edition, 2013 (p. 141):

Цитата:
 
...in Python:
  • Variables are created when they are first assigned values.
  • Variables are replaced with their values when used in expressions.
  • Variables must be assigned before they can be used in expressions.
  • Variables refer to objects and are never declared ahead of time.
     

  • Что в переводе означает:

    Цитата:
     
    ... в Python:
  • Переменные создаются, когда им впервые присвоено значение.
  • В выражениях переменные заменяются своими значениями.
  • Переменным должны быть присвоены значения до того, как они будут использованы в выражениях.
  • Переменные ссылаются на объекты и никогда не объявляются заранее.
     

  • Python - интерпретируемый язык с динамической типизацией, по другому и быть не может.
     
    Лутц в пятой главе подробно разбирает различные аспекты динамической типизации: переменные, объекты, ссылки, сборку мусора.
    Кому интересно - рекомендую почитать.
     
    Там же, с. 176:

    Цитата:
    Technically, Python detects some names before your code runs, but you can think of it as though initial assignments make variables.


    Цитата:
    С технической точки зрения, Python определяет некоторые имена до исполнения кода, но можно считать, что переменные создаются при начальных присваиваниях.

    Редактор хотел показать свою эрудицию, но своим глубокомысленным замечением только запутал читателей.

    Всего записей: 7698 | Зарегистр. 28-05-2006 | Отправлено: 13:00 12-10-2014 | Исправлено: ans72, 20:47 12-10-2014
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

    Компьютерный форум Ru.Board » Интернет » Web-программирование » Язык программирования Python (Питон, Пайтон)

    Имя:
    Пароль:
    Сообщение

    Для вставки имени, кликните на нем.

    Опции сообщенияДобавить свою подпись
    Подписаться на получение ответов по e-mail
    Добавить тему в личные закладки
    Разрешить смайлики?
    Запретить коды



    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2018

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru