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


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

Язык программирования Python (Питон, Пайтон)
 ОтветГолосаПроценты
первый раз слышу8
1.57%
слыхал, но ничего сказать про него немогу132
25.83%
изучал, но меня от него не прёт22
4.31%
изучаю и скоро на него перейду222
43.44%
скрипты пишу в основном на нём77
15.07%
пишу только на нём43
8.41%
я из комманды разработчиков Python'а7
1.37%
Гости не могут голосовать, зарегистрируйтесть!Всего Голосов: 511
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
panda3

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Daniyar91
И в классах и в модулях обращение к переменной вызывает поиск переменной во всех доступных словарях - locals, globals, builtins. Каждый раз. (Поэтому не рекомендуется писать код вне функций.) В этих случаях переменная создается в момент первого присваивания, т.к. именно тогда она попадает в словарь locals / globals, а до этого - читается из вышестоящего словаря, если она там есть.
Для функций же существует специальная оптимизация - компилятор создает таблицу всех локальных переменных до выполнения функции и дальше обращается к ней по индексу, т.е. никакого поиска по имени не происходит. Поэтому для функций можно сказать, что "переменные создаются при компиляции". Хотя в словарь locals они по-прежнему попадают в момент первого присваивания, этот словарь интерпретатором для поиска переменных не используется. Смотрите сами:

Код:
class C:
    x = 0
    locals()['x'] = 1
    print(x)
 
def f():
    x = 0
    locals()['x'] = 1
    print(x)
 
C()
f()
 

Поведение глобального кода и классов в этом смысле является старым известным багом, который не исправляется из соображений совместимости.

Всего записей: 199 | Зарегистр. 06-02-2007 | Отправлено: 15:31 13-10-2014 | Исправлено: panda3, 15:36 13-10-2014
Daniyar91

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

Цитата:
... компилятор создает таблицу всех локальных переменных до выполнения функции и дальше обращается к ней по индексу, т.е. никакого поиска по имени не происходит

А где, про это можно подробней почитать?

Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 17:45 13-10-2014 | Исправлено: Daniyar91, 17:42 21-10-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добавлю. В этой таблице индексов первыми индексами идут параметры функции.

Код:
import dis
 
def func():
    y=5
    y
    print(locals())
 
def func2(a, *arguments, **keywords):
    y=5
    y
    print(locals())
 
func()
dis.dis(func)
 
print ('\r\n==========\r\n')
 
func2(555)
dis.dis(func2)

выход:

Код:
{'y': 5}
 
  2           0 LOAD_CONST               1 (5)
              3 STORE_FAST               0 (y)
 
  3           6 LOAD_FAST                0 (y)
              9 POP_TOP
 
  4          10 LOAD_GLOBAL              0 (locals)
             13 CALL_FUNCTION            0
             16 PRINT_ITEM
             17 PRINT_NEWLINE
             18 LOAD_CONST               0 (None)
             21 RETURN_VALUE
 
==========
 
{'y': 5, 'keywords': {}, 'arguments': (), 'a': 555}
 
  2           0 LOAD_CONST               1 (5)
              3 STORE_FAST               3 (y)
 
  3           6 LOAD_FAST                3 (y)
              9 POP_TOP
 
  4          10 LOAD_GLOBAL              0 (locals)
             13 CALL_FUNCTION            0
             16 PRINT_ITEM
             17 PRINT_NEWLINE
             18 LOAD_CONST               0 (None)
             21 RETURN_VALUE
 
 

 
Выделенное - это индекс переменной. Видно, что во 2-ой функции он увеличился на кол-во параметров ф-и.
 
Все вышесказанное применяется к CPython.

Всего записей: 6497 | Зарегистр. 14-02-2005 | Отправлено: 18:55 13-10-2014 | Исправлено: unreal666, 18:57 13-10-2014
dvs



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
PyPy 2.5.0 released (Python 3.2.5 - compatible) http://morepypy.blogspot.ca/2015/02/pypy-250-released.html

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

Всего записей: 330 | Зарегистр. 18-05-2001 | Отправлено: 06:07 07-02-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
во время итерирования объекта у этого объекта в каком-нибудь свойстве хранится значение текущего ключа или элемента (для словаря) или индекса (для списка/кортежа/множества) ?

Всего записей: 6497 | Зарегистр. 14-02-2005 | Отправлено: 09:46 19-02-2015
panda3

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
только enumerate спасет отца русской демократии
Для словаря же есть итерация по .items()

Всего записей: 199 | Зарегистр. 06-02-2007 | Отправлено: 11:41 23-02-2015 | Исправлено: panda3, 11:43 23-02-2015
unreal666



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

Код:
    @classmethod
    @abstractmethod
    def method(cls):

или так

Код:
    @abstractmethod
    @classmethod
    def method(cls):

Всего записей: 6497 | Зарегистр. 14-02-2005 | Отправлено: 17:18 02-03-2015
panda3

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

Всего записей: 199 | Зарегистр. 06-02-2007 | Отправлено: 23:03 07-03-2015
AZJIO



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не могу сделать иконки пунктам меню в трее? Разобрался. Вот пример http://pastebin.com/3m7inUBA

Всего записей: 3584 | Зарегистр. 03-05-2006 | Отправлено: 07:17 09-03-2015 | Исправлено: AZJIO, 18:46 14-03-2015
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Raspberry Pi. Хочу написать модуль для охранной системы, при срабатывании датчика на GPIO (pin12) должен идти отчет времени, во время которого надо успеть нажать кнопку (pin05), чтобы прервать появления 1 на GPI Output (pin07). Что надо добавить ?
 

Код:
 
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
GPIO.setup(5, GPIO.IN)
GPIO.setup(12, GPIO.IN)
 
while True:
  input = GPIO.input(12)
  if ((not prev_input) and input):
    print("DATCHIK ON")
    GPIO.output(7, 1)
    time.sleep(5)
    GPIO.output(7, 0)
    print("DATCHIK OFF")
  prev_input = input
  time.sleep(0.05)
GPIO.cleanup()
 

Всего записей: 274 | Зарегистр. 19-04-2003 | Отправлено: 19:55 11-04-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
digital422
 
1.  prev_input у тебя юзается до его определения.
2. в Raspberry Pi не разбираюсь, но судя по этой и этому, это можно сделать несколькими способами.
 
Больше понравилось с прослушкой событий. Что-то типа:
 

Код:
import RPi.GPIO as GPIO  
GPIO.setmode(GPIO.BOARD)  
GPIO.setup(7, GPIO.OUT)  
GPIO.setup(5, GPIO.IN)  
GPIO.setup(12, GPIO.IN)
 
def PIN12_RISING():
  GPIO.add_event_detect(5, GPIO.RISING)
  time.sleep(5)
  if GPIO.event_detected(5):
    GPIO.output(7, 0)
    print("DATCHIK ON")
  else:
    GPIO.output(7, 1)
    print("DATCHIK OFF")
 
GPIO.add_event_detect(12, GPIO.RISING, callback=PIN12_RISING, bouncetime=300)
 

Всего записей: 6497 | Зарегистр. 14-02-2005 | Отправлено: 23:49 11-04-2015
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Перепробовал большинство вариантов, можно нажать одну кнопку, она пошлет 1 на нужный GPI0, можно нажать 2 кнопку, она либо пошлет 0 на тот же GPIO, либо на другой. Когда идет выполнение time.sleep или еще есть timer, то посылать команды бесполезно, только после отрабатывания time.sleep можно что-то делать, но уже поздно, сирена включилась. Как вариант вижу создание 2-го .py файла, который будет отслеживать кнопку отключения и при ее нажатии запускать bash скрипт, который будет делать kill файла с отсчетом time.sleep.

Всего записей: 274 | Зарегистр. 19-04-2003 | Отправлено: 17:38 14-04-2015
Tilks

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
digital422
по моему нельзя замораживать код на 5 секунд ( time.sleep(5) )
тогда кнопку надо держать 5 секунд, пока отпустит sleep.
 
если можно переменную создать, то надо счетчик сделать
вот как у меня на gui, чтобы интерфейс не замерзал.

Код:
def myTimer(self, i):
    polsec = i * 2
    while polsec > 0:
        time.sleep(0.5)
        polsec -= 1
        QApplication.processEvents()
 

 

Всего записей: 2029 | Зарегистр. 14-08-2005 | Отправлено: 19:14 14-04-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
на счет time.sleep непонятно, замораживает ли он весь процесс или только данный поток. Просто, судя по доке, определение поступления событий (GPIO.add_event_detect) выполняются в отдельных потоках.

Всего записей: 6497 | Зарегистр. 14-02-2005 | Отправлено: 04:42 15-04-2015
unreal666



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

Код:
argList = ['a', 'b']
[ arg + '0' for arg in argList ]

А как подобное сделать, если нужно для "разворачивания" использовать два цикла (2-ой вложенный), а не один?
 
Такое не прокатывает:

Код:
argList = [{'x': '7'}, {'y': '8'}, {'z': '9'}]
[''.join([' ', name, '="', value, '"']) for name, value in arg.iteritems() for arg in argList]

Всего записей: 6497 | Зарегистр. 14-02-2005 | Отправлено: 03:24 30-04-2015 | Исправлено: unreal666, 05:31 30-04-2015
unreal666



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

Код:
[''.join([' ', name, '="', value, '"']) for arg in argList for (name, value) in arg.iteritems()]

Всего записей: 6497 | Зарегистр. 14-02-2005 | Отправлено: 05:39 30-04-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для строк есть метод format.
Но у него косяк в том, что если ему аргументов не хватает для разворачивания параметров, то он выдает исключение IndexError, KeyError или что там еще.
Есть более безопасный вариант без этих исключений, т.е. тот, который будет просто "разворачивать" только те параметры, для которых есть аргументы, а остальные не трогать?

Всего записей: 6497 | Зарегистр. 14-02-2005 | Отправлено: 14:51 11-05-2015 | Исправлено: unreal666, 15:06 11-05-2015
panda3

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
 
"{key1}, {key2}, {key3}".format(**defaultdict(str, key1="1st key", key2="2nd key"))

Всего записей: 199 | Зарегистр. 06-02-2007 | Отправлено: 16:58 11-05-2015
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
panda3
KeyError: 'key3'
 
PS.
Python 2.7.9

Всего записей: 6497 | Зарегистр. 14-02-2005 | Отправлено: 17:16 11-05-2015 | Исправлено: unreal666, 17:18 11-05-2015
panda3

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

Всего записей: 199 | Зарегистр. 06-02-2007 | Отправлено: 10:30 19-05-2015
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум 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