Kurs rozszerzony języka Python

Podobne dokumenty
Kurs języka Python. Wykład 13. Marcin Młotkowski. 18 stycznia Rozszerzenia Pythona w C Python/C API. 2 Osadzanie Pythona w C

Wykład 4: Klasy i Metody

Programowanie obiektowe

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

1 Atrybuty i metody klasowe

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Programowanie obiektowe

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Kurs rozszerzony języka Python

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Python wstęp do programowania dla użytkowników WCSS

Wstęp do programowania

Programowanie obiektowe

Programowanie obiektowe

Środowiska wirtualne i zarządzanie zależnościami w Pythonie. Piotr Grzesik

Metaprogramowanie w Ruby

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Qt sygnały i designer

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Komunikacja Człowiek-Komputer

Programowanie obiektowe

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Programowanie obiektowe zastosowanie języka Java SE

Kurs języka Python. Wykład 14. Marcin Młotkowski. 25 stycznia Python i Apache Pythonowe platformy aplikacyjne. Dystrybucja aplikacji w U*IX

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Programowanie obiektowe

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Język Python (2) Język Python (2) 1/36

Zaawansowany kurs języka Python

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Języki i metody programowania Java. Wykład 2 (część 2)

Microsoft IT Academy kurs programowania

Wprowadzenie do języka Java

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie Obiektowe i C++

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie niskopoziomowe

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Aplikacje RMI

Pliki. Informacje ogólne. Obsługa plików w języku C

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Kurs WWW. Paweł Rajba.

Język ludzki kod maszynowy

Zaawansowane aplikacje WWW - laboratorium

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie Komputerów

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ ]

Programowanie obiektowe

Wykład 1

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Podział programu na moduły

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Dokumentacja do API Javy.

Programowanie Obiektowe i C++

Zaawansowany kurs języka Python

Tworzenie aplikacji w języku Java

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

I - Microsoft Visual Studio C++

Funkcja (podprogram) void

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Podstawy programowania skrót z wykładów:

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

Operacje wejścia/wyjścia odsłona pierwsza

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Co nie powinno być umieszczane w plikach nagłówkowych:

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Oracle PL/SQL. Paweł Rajba.

PARADYGMATY PROGRAMOWANIA Wykład 4

Przegląd języka Python. Łukasz Anwajler

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Spis treści. 1 Java T M

Ćwiczenie 1. Przygotowanie środowiska JAVA

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Programowanie Obiektowe i C++

Programowanie w Internecie. Java

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Kurs rozszerzony języka Python

Programowanie i projektowanie obiektowe

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Python! Lekcja 1 podstawy języka, typy danych

Część 4 życie programu

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Transkrypt:

Inne języki 26 stycznia 2018

Plan wykładu 1 2 3 4 5 GIMP Apache OpenOffice (LibreOffice)

Plan wykładu 1 2 3 4 5 GIMP Apache OpenOffice (LibreOffice)

Problemy łączenia dwóch języków Zagadnienia problemy z różnymi typami danych (listy, kolekcje, napisy); przekazywanie argumentów i zwracanie wartości; tworzenie nowych wartości; obsługa wyjątków; zarządzanie pamięcią.

Dodanie do Pythona nowej funkcji Zadanie Moduł z funkcją obliczającą średnią arytmetyczną elementów listy.

Dodanie do Pythona nowej funkcji Zadanie Moduł z funkcją obliczającą średnią arytmetyczną elementów listy. Elementy implementacji: plik nagłówkowy <Python.h>; implementacja funkcji; odwzorowanie funkcji w C na nazwę udostępnioną w Pythonie; funkcja inicjalizująca o nazwie initnazwa modułu.

Implementacja funkcji extern PyObject * mean(pyobject *, PyObject *); PyObject * mean(pyobject * self, PyObject * args) { int suma = 0, n, i; PyObject * res; PyObject * item; PyObject * lista; lista = PySequence ITEM(args, 0); if (!PyList Check(lista)) printf( To nie jest lista!\n ); n = PyList Size(lista);

Implementacja, cd. cd. funkcji } for (i = 0; i < n; i++) { item = PyList GetItem(lista, i); if (!PyInt Check(item)) continue; suma += PyInt AsLong(item); } res = Py BuildValue( i, suma/n); Py INCREF(res); return res;

Opakowanie funkcji #include <python3.5/python.h> extern PyObject * mean(pyobject *, PyObject *); PyObject * mean(pyobject * self, PyObject * args) {... }

Opakowanie funkcji #include <python3.5/python.h> extern PyObject * mean(pyobject *, PyObject *); PyObject * mean(pyobject * self, PyObject * args) {... } static PyMethodDef modulik[ ] = { { mean, mean, METH VARARGS, Pierwsza funkcja }, { NULL, NULL, 0, NULL } }; PyMODINIT FUNC initmodulik(void) { Py InitModule( modulik, modulik);

Kompilacja i instalacja setup.py from distutils.core import setup, Extension module1 = Extension( modulik, sources = [ test.c ]) setup(name = MyPackage, version = 1.0, description = Pakiet demonstracyjny, ext modules = [module1]) Kompilacja i instalacja $ python setup.py build $ python setup.py install

Typy danych w Pythonie Wszystko w Pythonie jest obiektem

Nowe wartości Tworzenie nowych wartości Pythonowych PyObject* PyInt FromLong(long ival) PyObject* Py False PyObject* Py True PyObject* PyList New(Py ssize t len) PyObject* PyString FromString(const char *v) PyObject *Py BuildValue(char *format,...); Py BuildValue() None Py BuildValue( ss, hello, world ) ( hello, world ) Py BuildValue( [i,i], 123, 456) [123, 456] Py BuildValue( {s:i,s:i}, { abc : 123, def : 456} abc, 123, def, 456)

Listy dostęp do list PyObject* PyList GetItem(PyObject *list, Py ssize t index) int PyList SetItem(PyObject *list, Py ssize t index, PyObject *item)

Obiekty Makra dostępu do pól obiektów PyObject* PyObject GetItem(PyObject *o, PyObject *key) int PyObject SetItem(PyObject *o, PyObject *key, PyObject *v)

Standardowe funkcje wieloargumentowe Nagłowek funkcji PyObject * foo(pyobject * self, PyObject * args) Parsowanie argumentów int PyArg ParseTuple(PyObject *args, const char *format,...) Wpis w tabeli funkcji { mean, mean, METH VARARGS, Pierwsza funkcja },

Zarządzanie pamięcią Mechanizm zarządzania pamięcią Każdy obiekt ma licznik odwołań zwiększany za każdym przypisaniem. Jeśli licznik jest równy zero obiekt jest usuwany z pamięci. W programach w C trzeba dbać o aktualizację licznika.

Zmiana licznika odwołań Zwiększenie licznika void Py INCREF(PyObject *o) Zmniejszenie licznika void Py DECREF(PyObject *o)

Zmiana licznika odwołań Zwiększenie licznika void Py INCREF(PyObject *o) Zmniejszenie licznika void Py DECREF(PyObject *o) Przypomnienie res = Py BuildValue( i, suma/n); Py INCREF(res); return res;

Trochę łatwiej Biblioteka Boost: + łączenie Pythona z C++ + łatwiejsza od C API - czasem nie da się ominąć C API (ale się rozwija)

Plan wykładu 1 2 3 4 5 GIMP Apache OpenOffice (LibreOffice)

Wykonanie programów Pythonowych Py Initialize(); PyRun SimpleString( i = 2 ); PyRun SimpleString( i = i*i\nprint i ); Py Finalize();

Wykonanie programów w pliku Py Initialize(); FILE * f = fopen( test.py, r ); PyRun SimpleFile(f, test.py ); Py Finalize();

Kompilacja gcc -lpython3.5 test.c

Bezpośrednie wywoływanie funkcji Pythonowych Deklaracja zmiennych PyObject *pname, *pmodule, *pargs, *pfunc, *pvalue; Import modułu Pythonowego Py Initialize(); pname = PyString FromString( modulik ); pmodule = PyImport Import(pName); Pobranie funkcji z modułu pfunc = PyObject GetAttrString(pModule, foo ); Wywołanie funkcji pvalue = PyObject CallObject(pFunc, pargs);

Plan wykładu 1 2 3 4 5 GIMP Apache OpenOffice (LibreOffice)

Kanoniczna implementacja CPython Podstawowa implementacja języka Python w C.

PyPy jit compilation; wysoka zgodność z Pythonem 2.7 i 3.5; możliwość dołączania własnego odśmiecacza pamięci; nieco inne zarządzanie pamięcią.

Stackless Python interpreter oparty na mikrowątkach realizowanych przez interpreter, nie przez kernel; dostępny w CPythonie jako greenlet.

Jython Cechy Jythona implementacja Pythona na maszynę wirtualną Javy; kompilacja do plików.class; dostęp do bibliotek Javy; pełna zgodność z językiem Python (te same testy regresyjne).

IronPython Implementacja Pythona w środowisku Mono i.net; zgodny z Pythonem 2.7.2, choć są niezgodności.

Python for S60 Implementacja Nokii na tefony komórkowe z systemem Symbian 60 implementuje Python 2.2.2; dostęp do sprzętu (SMS y, siła sygnału, nagrywanie video, wykonywanie i odbieranie połączeń); wsparcie dla GPRS i Bluetooth; dostęp do 2D API i OpenGL.

Plan wykładu 1 2 3 4 5 GIMP Apache OpenOffice (LibreOffice)

Lokalne środowisko Pythonowe virtualenv Tworzy w lokalnym katalogu pełną wersję środowsika pythonowego, którą można modyfikować niezależnie od głównej instalacji. Można mieć wiele takich wirtualnych środowisk.

Lokalne środowisko Pythonowe virtualenv Tworzy w lokalnym katalogu pełną wersję środowsika pythonowego, którą można modyfikować niezależnie od głównej instalacji. Można mieć wiele takich wirtualnych środowisk. $ virtualenv --system-site-packages $HOME/mojesrodowisko $ cd $HOME/mojesrodowisko/ $ source bin/activate

Plan wykładu GIMP Apache OpenOffice (LibreOffice) 1 2 3 4 5 GIMP Apache OpenOffice (LibreOffice)

Rozwinięcie skrótu GIMP Apache OpenOffice (LibreOffice) GNU Image Manipulation Program

Python w GIMP ie GIMP Apache OpenOffice (LibreOffice) Gimp-Python Jest to wrapper do biblioteki libgimp, umożliwiający implementację skryptów manipulujących obrazami.

Schemat skryptu GIMP Apache OpenOffice (LibreOffice) from gimpfu import * def funkcja(argumenty, np. obraz):... register(nazwa, autor, ) main()

Instalacja i użycie GIMP Apache OpenOffice (LibreOffice) Instalacja skrypty instaluje się w $HOME/gimp-xyz/plug-ins

Instalacja i użycie GIMP Apache OpenOffice (LibreOffice) Instalacja skrypty instaluje się w $HOME/gimp-xyz/plug-ins Wywołanie skryptu z linii poleceń gimp --no-interface --batch (python-fu-moja-funkcja RUN-NONINTERACTIVE 2.71 3.1416) (gimp-quit 1) gdzie moja funkcja jest zarejestrowaną nazwą funkcji,

Budowa OpenOffice GIMP Apache OpenOffice (LibreOffice) UNO Universal Network Object Model komponentów obiektowych używany w OpenOffice, umożliwiający komunikację między obiektami przez sieć.

Python w OpenOffice GIMP Apache OpenOffice (LibreOffice) import uno

Przykład GIMP Apache OpenOffice (LibreOffice) local = uno.getcomponentcontext() resolver = local.servicemanager. createinstancewithcontext ( com.sun.star.bridge.unourlresolver, local) context = resolver.resolve ( uno:socket,host=localhost,port=2002;urp;staroffice.componentco desktop = context.servicemanager.createinstancewithcontext ( com.sun.star.frame.desktop, context) document = desktop.loadcomponentfromurl ( file:///home/user/szekspir.odt, blank, 0, ())

Modyfikacja dokumentu GIMP Apache OpenOffice (LibreOffice) cursor = document.text.createtextcursor() document.text.insertstring (cursor, Być albo nie być, oto jest pytanie., 0) document.store()

Gdzie są skrypty GIMP Apache OpenOffice (LibreOffice) OpenOffice 2.0 windows: C:\Documents and Settings\<current-user>\Application Data\OpenOffice.org 2.0\user\Scripts\python unix: $HOME/.openoffice.org.2.0/user/Scripts/python, /.openoffice.org.2.0/user/scripts/python OpenOffice 3.0 windows: C:\Users\<current-user>\AppData\Roaming\OpenOffice.org\3\user\Scripts\python unix: $HOME/.openoffice.org/3/user/Scripts/python

Plan wykładu 1 2 3 4 5 GIMP Apache OpenOffice (LibreOffice)