python
- https://rextester.com/l/python3_online_compiler - для быстренько протестировать.
- установка питонячного
ob-python
Session mode is fully supported in python, including named sessions.
Language-Specific Header Arguments
- :results {output, value}: Output results come from whatever the python code prints on stdout. Value results are the value of the last expression evaluated in the code block. Value mode is the default (as with other languages). In value mode you can use the following subtypes:
- raw: value is inserted directly
- pp: value is pretty-printed by python using pprint.pformat(%s), then inserted
- file: value is interpreted as a filename to be interpolated when exporting; commonly used for graphics output.
- :return - Appends a return statement to the end of the code block. Only when result-type is value, and not in session mode.
- :python - Name of the command for executing Python code.
Common Header Arguments
- :session [name]: default is no session.
- :var data=data-table: Variables can be passed into python from org-mode tables as scalars or lists. See the org-mode manual for more details.
:exports {code, results, both, none}: Standard babel option for what to export.
A limitation of session-mode return values is that the final statement must be a top-level expression, otherwise nothing is returned.
print("Hello, world!")
a | 1 |
b | 2 |
c | 3 |
# Return row specified by val. # In non-session mode, use return to return results. return(data[val])
import matplotlib, numpy matplotlib.use('Agg') import matplotlib.pyplot as plt fig=plt.figure(figsize=(4,2)) x=numpy.linspace(-15,15) plt.plot(numpy.sin(x)/x) fig.tight_layout() plt.savefig('../files/python-matplot-fig.png') return '../files/python-matplot-fig.png' # return filename to org-mode
О применениях Python
Python имеет 5 кросc-платформенных инструментов, которые позволяют писать «полноценные» приложения под Windows/Linux/Mac: Tkinter, PyQt, PyGTK, WxPython. Ни один из инструментов не делает 100% кросс-платформенное приложение, которое бы нативно выглядело на каждой из платформ.
Машинное обучение и Data science. Python в качестве инструмента апробации. Python имеет ряд удобных библиотек машинного обучения и научных расчетов: Pandas, NumPy, SciPy, Scikit-Learn, которые позволяют достаточно быстро построить рабочие модели. И они на самом деле неплохо работают - в качестве инструмента апробации, либо на небольших задачах. Если проект большой, то обычно модель пишут на Java/Scala/C++, а специалист по обучению уже выступает в качестве консультанта/аналитика. Сложность этого направления заключается в том, что у вас должны быть высокие знания в области математики и статистики, практически всегда будет спрашиваться высшее технические, математическое образование.
Веб-скрапинг. Питон имеет три вещи, которые делают его весьма эффективными в области веб-скраппинга, бибиотеку Requests, beautifulsoup и АПИ для Selenium. Если сюда подключить библиотеки для компьютерного зрения и машинное обучение, то получаются весьма эффективные инструменты.
Движок Ren’Py, который внезапно стал лучшим движков для написания визуальных романов, которые неплохо окупаются даже в рамках РФ. (Эээ? Хде это окупаются?)
Мелкое
не всё проверенное.
- Определение языка текста при помощи python - совет со stackoverflow - langdetect и cld2-cffi, оба ставятся через pip.
python -m SimpleHTTPServer
запускает http сервер в текущем каталоге.python -m CGIHTTPServer
- плюс cgi. Исполняемые скрипты должны лежать в папке cgi-bin
Читать файлы
f = open('r1.txt') for line in f: print(line)
Язык, мои памятки
Идентификаторы
Идентификаторы в Python это имена используемые для обозначения переменной, функции, класса, модуля или другого объекта. Идентификатор должен начинаться с буквы (от a до Z) или со знака подчеркивания (_), после которых может идти произвольное количество букв, знаков подчеркивания и чисел (от 0 до 9).
В Python недопустимо использование знаков препинания или специальных символов, таких как @, $ или % в качестве идентификаторов. Кроме того, Python чуствителен к регистру, то есть cat и Cat это два разных имени.
В Python существует следующая договоренность для названия идентификаторов:
- Имена классов начинаются с большой буквы, все остальные идентификаторы - с маленькой.
- Знак подчеркивания в качестве первого символа идентификатора означает, что идентификатор является частным (закрытым от использования вне класса).
- Если идентификатор начинается и заканчивается двумя знаками подчеркивания (например,
__init__
) это означает, что он является специальным именем, определенным внутри языка.
Зарезервированные слова нельзя использовать в качестве имени переменной или любого другого идентификатора. Все ключевые слова Python состоят только из букв в нижнем регистре. Получить список ключевых слов возможно в интерпретаторе командой
print(help("keywords"))
Разделение кода на блоки
Для обозначения отдельных блоков кода в Python используются двоеточия и отступы.
Выражения в Python, как правило, заканчиваются новой строкой, но есть и специальный символ переноса строки (\
), показывающий, что с окончанием строки не заканчивается код.
Выражения, которые находятся внутри скобок: квадратных ( [ ] ), фигурных ( { } ) или круглых ( ( ) ) не нуждаются в символе переноса строки.
Специальные символы
В Python можно использовать одинарные ( ' ), двойные (") и тройные (''' или """) кавычки чтобы обозначить строчный тип данных, при этом начинаться и заканчиваться строка должна одинаковыми кавычками. Строка занимающая несколько строк кода должна быть обрамлена тройными кавычками.
Символ решетки (#) в Python обозначает начало комментария. Любые символы после решетки и до конца строки считаются комментариями и игнорируются интерпретатором.
Точка с запятой ( ; ) позволяет вводить несколько инструкций на одной строке.
Типы данных
К стандартным типам данных в Python относятся: Числа (Numbers), Строка (String), Список (List), Кортеж (Tuple), Словарь (Dictionary), Tuples (кортежи), Sets (множества), Boolean
Эти типы данных можно, в свою очередь, классифицировать по нескольким признакам:
- Изменяемые: Списки, Словари, Множества
- Неизменяемые: Числа, Строки, Кортежи
- Упорядоченные: Списки, Кортежи, Строки
- Неупорядоченные: Словари, Множества
Числа - целое, длинное, с плавающей точкой и комплексное (напр. 3.14j). Можно выполнять основные математические операции, округлять, переводить в другие системы счисления, получать остаток от деления\ldots Если возможностей не хватает, то подключать модуль math.
Строка - набор символов между кавычками.
То, что строки являются упорядоченным типом данных, позволяет обращаться к символам в строке по номеру, начиная с нуля:
string1 = 'Any string' print(string1[4])
Нумерация всех символов в строке идет с нуля. Но, если нужно обратиться к какому-то по счету символу, начиная с конца, то можно указывать отрицательные значения (на этот раз с единицы).
Из строк можно взять подстроку используя оператор нарезки ( [ ] и [ : ] ) с индексами (срез выполняется по второе число, не включая его):, можно использовать и обратную индексацию. Оператор плюс ( + ) для строк соединяет две строки в одну. Также строки можно умножать ( * ).
Список состоит из элементов, разделенных запятыми, находящихся между квадратными скобками ( [ ] ). Элементы одного списка могут иметь разные типы данных. Получить доступ к элементам, сохраненным в списке можно, точно так же, как и в строках, при помощи оператора нарезки ( [ ] и [:] ) и индексов, начиная с нуля и до конца. Знак плюс ( + ) объединяет два списка, а звездочка ( * ) - оператор повторения для списка. Список может быть элементом списка.
Кортеж это еще один составной тип данных, похожий на список. Кортеж состоит из ряда значений, разделенных запятыми, заключенными в круглые скобки ( ( ) ). Основным различием между списками и кортежами является то, что элементы кортежей не могут быть изменены. То есть, кортежи можно рассматривать как списки доступные только для чтения.
Словари в Python это неотсортированная колекция элементов, доступ к которым осуществляется по ключу (аналог хэшей Perl). Каждому ключу словаря соответствует определенное значение. Ключом может быть любой неизменяемый тип данных (число, строка, кортеж), значением - любой тип данных. Пары ключ, значение словаря заключаются в фигурные скобки ( { } ).
my_dict = { } # Создаем пустой словарь my_dict["country"] = "USSR" # Присваиваем ключу country значение Mexico print(my_dict["country"]) # Выведет Mexico
# Заполнение словаря при инициализации another_dict = {"number":23, 2: True, "my_list":[1,2,3]} print(another_dict.keys()) # Напечатает список всех ключей print(another_dict.values()) # Напечатает список всех значений
Множества
Множество в python - "контейнер", содержащий не повторяющиеся элементы в случайном порядке.
print('Разделяйте элементы последовательностей пробелами!') a = input('Первая последовательность:\n-> ') b = input('Вторая последовательность:\n-> ') print() a = a.split() # получение списка b = b.split() print('Получено:') a = set(a) # получение множества print('множество A ->',a) b = set(b) print('множество B ->',b) print() Операции | (объединение), & (пересечение), - (разность), ^ (исключающее ИЛИ) print('Объединение множеств (A | B):',a|b) print('Пересечение множеств (A & B):',a&b) print('Разность множеств (A - B):',a-b) print('Исключающее ИЛИ, симметрическая разность (A ^ B):',a^b)
С множествами можно выполнять множество операций: находить объединение, пересечение\ldots
- len(s)
- число элементов в множестве (размер множества).
- x in s
- принадлежит ли x множеству s.
- set.isdisjoint(other)
- истина, если set и other не имеют общих элементов.
- set == other
- все элементы set принадлежат other, все элементы other принадлежат set.
- set.issubset(other) или set <= other
- все элементы set принадлежат other.
- set.issuperset(other) или set >= other
- аналогично.
- set.union(other, …) или set | other | …
- объединение нескольких множеств.
- set.intersection(other, …) или set & other & …
- пересечение.
- set.difference(other, …) или set - other - …
- множество из всех элементов set, не принадлежащие ни одному из other.
- set.symmetric\_difference(other); set \^ other
- множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих.
- set.copy()
- копия множества.
И операции, непосредственно изменяющие множество:
- set.update(other, …); set |= other | …
- объединение.
- set.intersection_update(other, …); set &= other & …
- пересечение.
- set.difference_update(other, …); set -= other | …
- вычитание.
- set.symmetric_difference_update(other); set ^= other
- множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих.
- set.add(elem)
- добавляет элемент в множество.
- set.remove(elem)
- удаляет элемент из множества. KeyError, если такого элемента не существует.
- set.discard(elem)
- удаляет элемент, если он находится в множестве.
- set.pop()
- удаляет первый элемент из множества. Так как множества не упорядочены, нельзя точно сказать, какой элемент будет первым.
- set.clear()
- очистка множества.
Единственное отличие set от frozenset заключается в том, что set - изменяемый тип данных, а frozenset - нет. Примерно похожая ситуация с списками и кортежами.
Ссылки
- https://palletsprojects.com/p/jinja/ - jinja, популярный движок шаблонов, https://github.com/mattrobenolt/jinja2-cli - cli-интерфейс.
- flashbake - автокоммиты
- youtube-dl - качалка видео
- nikola - генератор статических сайтов
- https://docs.python.org/3/howto/regex.html
- https://docs.python.org/3/library/re.html
- https://www.tutorialspoint.com/python3/python_reg_expressions.htm - ну и в целом там учебник
- http://pythonicway.com/
- http://www.nltk.org/book/ - наивный байес и что-то ышшо, классификация текстов на питоне.
- https://www.reddit.com/r/learnpython/
- http://telegra.ph/Osvaivaem-vehb-skrehping-na-Python-01-15 - сцарапывание данных с сайтов через питон. Вопреки тому, что всякие там противороботные защиты. Устаревает такое, конешна, влёт…
- http://telegra.ph/Izuchenie-Block-Chain-na-Python-01-07 - питонячный блокчейн
- http://telegra.ph/Python-praktiki-dlya-napisaniya-ehffektivnogo-koda-12-03 - не про то, как писать, кроме самого начала. но полезняшки.
- https://jeffknupp.com/blog/2013/04/07/improve-your-python-yield-and-generators-explained/ - генераторы. yeild.
- http://telegra.ph/Learn-Blockchains-by-Building-One-12-01
- http://telegra.ph/Prostejshij-blokchejn-svoimi-rukami-08-24
- https://goo.gl/6kAkyN
- http://telegra.ph/Bot-dlya-Telegram-na-Python-ot-pervoj-strochki-koda-do-zapuska-na-Heroku-07-07
- https://goo.gl/F7rqWW
- https://goo.gl/agXuNt -веб-сокеты.
- Гайд по созданию простого ИИ для шахмат: https://goo.gl/Xwa2uT
- Использование регулярных выражений в Python для новичков: https://goo.gl/iievue
- http://telegra.ph/Neskolko-prodvinutyh-priemov-yazyka-Python-08-26
- Ручное или автоматизированное тестирование? Какой подход выбрать? Рассказываем в нашей новой статье: https://goo.gl/gpxCfq
- Способ быстро продемонстрировать идею своего веб-приложения, развернув его на сервере. Как задеплоить веб-приложение на связке React и Redux за 10 минут: https://goo.gl/SChZuk
- Короткие ответы на популярные вопросы о Python: https://goo.gl/PWv2Ti
- Cравнение российских операторов предоставляющих облачные услуги https://goo.gl/WjFUZF
- Рассказываем, как с использованием библиотеки pandas упростить сбор данных с веб-страниц. Руководство по извлечению данных с сайта в три строки кода на Python: https://goo.gl/FFR1t5
- Статья об асинхронном программировании: https://goo.gl/R7brs1
- Пошаговое руководство по созданию простого классификатора изображений на Python: http://telegra.ph/Prostoj-klassifikator-izobrazhenij-na-Python-s-pomoshchyu-biblioteki-TensorFlow-poshagovoe-rukovodstvo-07-23
- Иллюстрированное пошаговое руководство по настройке сайта с помощью GitHub и Cloudflare. Шпаргалка для тех, кто хочет настроить всё с нуля и ищет подходящий набор инструментов. http://telegra.ph/Kak-nastroit-sajt-s-pomoshchyu-GitHub-i-Cloudflare-illyustrirovannoe-rukovodstvo-07-22-2
- http://telegra.ph/Kak-nastroit-Jupyter-Notebook-dlya-Python-3-08-31
- https://medium.com/@ngrjs/creating-a-telegram-bot-using-python-9d11a43a8d2
- https://core.telegram.org/bots
- http://telegra.ph/Kak-ehffektivno-organizovat-process-izucheniya-slozhnyh-koncepcij-12-15-2
- http://telegra.ph/Razvorachivaem-dekoratory-CHast-1-01-19-2 - немного о декораторах
- https://devcenter.heroku.com/articles/how-heroku-works
- https://t.me/python_in_depth/69 - как лучше выводить ошибки на питоне
- http://telegra.ph/Avtostopom-po-mashinnomu-obucheniyu-na-Python-10-02
- https://habr.com/ru/company/ruvds/blog/462007/ - про то, чем обвесить скрипт для приличия :)
- https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks
- http://telegra.ph/Pishem-instrumenty-komandnoj-stroki-na-Python-s-pomoshchyu-Click-02-22
- http://telegra.ph/Testirovanie-v-Python-unittest-CHast-1-Vvedenie-02-09
- https://packaging.python.org/tutorials/managing-dependencies/#managing-dependencies
tg
- https://t.me/turbo_python - питонячное, интересная авторесса.
- https://t.me/coolpython