Diagram as a Code

Diagram as a Code

Diagram as a Code

Znalazłem ostatnio ciekawą bibliotekę języka Python, która w pewien sposób dopełnia ideę Everything as a Code. Biblioteka ta pozwala na stosunkowo proste rysowanie graficznych diagramów za pomocą kodu języka Python. Możemy zatem śmiało mówić już o modelu Diagram as a Code. Biblioteka, o której mówię, nazywa się diagrams, a jej użycie jest bardzo proste.

Czytaj dalej
Formatowanie ciągu znaków w Python

„(„+str(x)+”)” czy f'({x})’ ?

Formatowanie ciągu znaków w Python

Po opublikowaniu poprzedniego artykułu z cyklu „Wtorki z Pythonem” dostałem od jednego z czytelników pytanie, dlaczego tak dziwnie skonstruowałem wywołanie funkcji print(). Chodziło o zapis print("(%s,%s)" % (self.x, self.y)). W dzisiejszym artykule wyjaśnię, dlaczego taka konstrukcja była konieczna, oraz jak można ten sam wynik osiągnąć innymi sposobami. Odpowiednie formatowanie zmiennych by wyświetlić je na ekranie konsoli to jedna z podstawowych umiejętności jakie każdy musi posiadać.

Czytaj dalej
Konstruktor klasy w Python

Konstruktor klasy

Konstruktor klasy w Python

Współczesne języki programowania, zarówno te kompilowane jak i interpretowane, wykorzystują koncepcję programowania obiektowego. Polega ona na modularyzowaniu kodu programu na małe funkcjonalne części zwane obiektami. Są to swego rodzaju „klocki”, z których następnie składamy cały program. Są one na tyle uniwersalne, że używamy je w różnych programach. Obiekty te nazywane są klasami, które składają się z atrybutów (zmiennych) oraz metod (funkcji). Jedną ze specjalnych funkcji jest konstruktor klasy.

Czytaj dalej
Listy część 2

Listy w Python, cz. 2

Listy część 2

W pierwszej części pokazałem jak definiować listę oraz w jaki sposób odczytywać pojedyncze, lub całe grupy elementów listy. Operacji na listach i jej elementach jest nieco więcej. Raz utworzona lista nie jest obiektem stałym i można zarówno modyfikować wartość każdego z jej elementów jak i dodawać oraz usuwać poszczególne elementy. Listy w Python pozwalają na przeprowadzenie tych operacji w prosty sposób. W tym artykule zaprezentuję Ci jak to zrobić.

Czytaj dalej
Enumerate i przeglądanie elementów listy

Enumerate() i przeglądanie elementów listy

Enumerate i przeglądanie elementów listy

Wykonując operacje na listach musimy jasno sprecyzować, do którego je elementu chcemy uzyskać dostęp. Dokonujemy tego za pomocą indeksów wskazując wprost interesujący nas element listy. Często jednak dane zapisane na liście przetwarzamy w pętli. Pokażę Ci w jaki sposób najprościej w pętli odczytać kolejne wartości elementów listy oraz ekstremalnie przydatny sposób wykorzystania funkcji enumerate() do znalezienia numeru indeksu listy, pod którym poszukiwana wartość została zapisana.

Czytaj dalej
Listy w Python, część 1

Listy w Python, cz. 1

Listy w Python, część 1

Są takie umiejętności, które każdy programujący w dowolnym języku programowania musi umieć posiadać. Nie inaczej jest w Pythonie. W serii „wtorki z Pythonem” będę poruszał także bardziej podstawowe zagadnienia związane z programowaniem, które nie tylko dla osób początkujących mogą stanowić przydatne kompendium wiedzy. W tym tygodniu zajmę się typem danych, jakim są listy.

Czytaj dalej
Pull Request w Git

Pull Request w Git

Pull Request w Git

Dzisiaj słowo o tym, jak pracuje się wspólnie nad projektami i wprowadzaniem zmian do kodu. Z oczywistych względów do kodu programu nie mogą być wprowadzone żadne zmiany dokonane przez dowolną osobę. Zmiany takie muszą być zatwierdzone przez właściciela projektu lub osoby przez niego wyznaczone. Niemniej ważnym aspektem jest to, aby praca dwóch osób nie kolidowała ze sobą, a zaakceptowane zmiany na koniec były spójne. Służy temu mechanizm Pull Request.

Czytaj dalej
Dynamiczne wywołanie funkcji

Dynamiczne wywołanie funkcji

Dynamiczne wywołanie funkcji

Język Python ma sporo ukrytych ciekawych funkcjonalności. Wiele z nich odpowiednio wykorzystane mogą uprościć kod naszej aplikacji, eliminując skomplikowane konstrukcje warunków. Jedną z moich ulubionych jest możliwość wywoływania metod poprzez dynamiczne tworzenie ich nazwy w wywołaniu z zastosowaniem zmiennych. Ta technika nie ma swojej unikalnej nazwy. Dla mnie jest to najczęściej dynamiczne wywołanie funkcji.

Czytaj dalej

Pierwszy etap pracy nad moją aplikacją zakończony

Pamiętacie zapewne, że byłem bardzo rozczarowany Cisco Modeling Labs 2.0. Brakowało mi fantastycznej funkcjonalności z Cisco VIRL pozwalającej w prosty sposób prekonfigurować urządzenia. Pozwalało to inżynierom zaoszczędzić sporo czasu na adresowaniu interfejsów czy konfigurowaniu protokołów. Funkcja ta ma miała nazwę AutoNetKit. Jakiś miesiąc temu postanowiłem, że napiszę własny program wypełniający, choć częściowo, tą lukę. Tak powstał CMLNetKit i mogę powiedzieć, że jego pierwsza wersja gotowa jest do testów.ę

Czytaj dalej