close

Pyton

Przejdź do nawigacji Przejdź do wyszukiwania
pyton
python-logo-notext.svg
Deweloper(zy)
Oficjalna witryna Python Software Foundation
Informacje ogólne
Wspólne rozszerzenia .py, .pyc, .pyd, .pyo, .pyw, .pyz,.pyi
Paradygmat Wieloparadygmat : obiektowy , imperatywny , funkcjonalny , refleksyjny
Pojawił się w 1991
Zaprojektowany przez Guido van Rossum
Najnowsza stabilna wersja 3.10.8 [ 1 ] ​( 11 października 2022 (4 dni))
typ systemu Mocno wpisany , dynamiczny
wdrożenia CPython , IronPython , Jython , Python dla S60, PyPy , ActivePython , Jaskółka bez obciążenia
dialekty Python bez stosu , RPython
wpływem ABC , ALGOL 68, C , Haskell , Icon , Lisp , Modula-3 , Perl , Smalltalk , Java
wpłynął Boo , Cobra , D , Falcon , Genie , Groovy , Ruby , JavaScript , Cython , Go Latino
System operacyjny Wieloplatformowy
Licencja Licencja Python Software Foundation

Python to wysokopoziomowy interpretowany język programowania, którego filozofia kładzie nacisk na czytelność jego kodu , służy do tworzenia wszelkiego rodzaju aplikacji, na przykład między innymi: Instagram , Netflix , Spotify , Panda 3D . [ 2 ] Jest to wieloparadygmatyczny język programowania , ponieważ częściowo obsługuje orientację obiektową , programowanie imperatywne iw mniejszym stopniu [ który? ] , programowanie funkcjonalne . Jest to język interpretowany , dynamiczny i wieloplatformowy .

Zarządzany przez Python Software Foundation , jest licencjonowany na podstawie licencji open source , zwanej Python Software Foundation License . [ 3 ] Python konsekwentnie plasuje się jako jeden z najpopularniejszych języków programowania.

Historia

Image
Guido van Rossum , twórca Pythona , na konwencji OSCON 2006

Python został stworzony pod koniec lat 80. [ 4 ] przez Guido van Rossuma w Centrum Matematyki i Informatyki (CWI, Centrum Wiskunde & Informatica ) w Holandii , jako następca języka programowania ABC , zdolny do obsługi wyjątków i interakcji z systemem operacyjnym Amoeba . [ 5 ]

Nazwa języka pochodzi od zamiłowania jego twórcy do brytyjskich humorystów Monty Pythona . [ 6 ]

Guido van Rossum jest głównym autorem Pythona i uznaje się jego stałą, centralną rolę w decydowaniu o kierunku Pythona, nazywając go Dobroczynnym Dyktatorem Życia ( BDFL); Jednak 12 lipca 2018 r. odmówił ze wspomnianej zaszczytnej sytuacji, nie pozostawiając następcy lub następcy i wydając wysoko brzmiące oświadczenie: [ 7 ]

Więc co wszyscy zamierzacie zrobić? Stworzyć demokrację? Anarchia? Dyktatura? Federacja?
Guido van Rossum [ 8 ]

20 lutego 1991 roku van Rossum po raz pierwszy opublikował kod w alt.sources , z numerem wersji 0.9.0. [ 9 ] Na tym etapie rozwoju istniały już klasy z dziedziczeniem , obsługą wyjątków, funkcjami i typami modularnymi, takie jak m.in. str, list, dict. Ponadto to pierwsze wydanie zawierało system modułów przejęty z Modula-3 ; van Rossum opisuje moduł jako „jedną z największych jednostek programistycznych w Pythonie”. [ 4 ] Model wyjątków w Pythonie jest podobny do Modula-3, z dodatkiem a else. [ 5 ] W 1994 roku powstało comp.lang.python , główne forum dyskusyjne Pythona, stanowiące kamień milowy w rozwoju grupy użytkowników Pythona.

Python osiągnął wersję 1.0 w styczniu 1994 roku. Cechą tego wydania były funkcjonalne narzędzia programistyczne : lambda, reduce, filteri map. [ 10 ] Van Rossum wyjaśnił, że "12 lat temu Python nabył lambda, Reduce(), filter() i map(), dzięki uprzejmości Amrita Perma, hakera Lisp , który zaimplementował je, ponieważ ich nie zauważył". [ 11 ]

Ostatnią wersją wydaną z CWI był Python 1.2. W 1995 van Rossum kontynuował pracę nad Pythonem w Corporation for National Research Initiatives (CNRI) w Reston w stanie Wirginia , gdzie wydał kilka wersji oprogramowania .

Podczas swojej pracy w CNRI van Rossum uruchomił inicjatywę Computer Programming for Everybody (CP4E), aby uczynić programowanie bardziej dostępnym dla większej liczby ludzi, z podstawowym poziomem „umiejętności” w językach programowania, podobnym do podstawowej umiejętności czytania i pisania. umiejętności matematyczne potrzebne wielu pracownikom. Python odegrał kluczową rolę w tym procesie: ze względu na orientację na czystą składnię był już odpowiedni, a cele CP4E były podobne do swojego poprzednika, ABC. Projekt był sponsorowany przez DARPA . [ 12 ] Od 2007 roku projekt CP4E jest w stanie uśpienia i chociaż Python stara się być łatwy do nauczenia i niezbyt zawiły w swojej składni i semantyce, docieranie do nie-programistów nie jest aktywnym problemem. [ 13 ]

W 2000 r. główny zespół programistów Pythona przeniósł się do BeOpen.com , tworząc zespół BeOpen PythonLabs . CNRI zażądało upublicznienia wersji 1.6, kontynuując jej rozwój, dopóki zespół programistów nie opuścił CNRI; jego harmonogram wydań i wersji 2.0 znacznie się pokrywały. [ 14 ] Python 2.0 był pierwszym i jedynym wydaniem BeOpen.com. Po wydaniu Pythona 2.0 przez BeOpen.com, Guido van Rossum i pozostali programiści PythonLabs połączyli się w Digital Creations .

Python 2.0 przejął główną funkcję z funkcjonalnego języka programowania Haskell : listy składane. Składnia Pythona dla tej konstrukcji jest bardzo podobna do składni Haskella, z wyjątkiem preferencji Haskella dla znaków interpunkcyjnych i preferencji Pythona dla alfabetycznych słów kluczowych. Python 2.0 wprowadził również system zbierania śmieci , który może zbierać cykliczne referencje. [ 14 ]

Po tym podwójnym wydaniu i po tym, jak van Rossum opuścił CNRI, aby pracować z twórcami oprogramowania komercyjnego, stało się jasne, że opcja używania Pythona z oprogramowaniem dostępnym na licencji GNU GPL jest bardzo pożądana. Stosowana wówczas licencja, Python License , zawierała klauzulę stwierdzającą, że licencja jest zarządzana przez stan Wirginia , co w opinii prawników Free Software Foundation (FSF) czyni ją niezgodną z GPL. W przypadku wersji 1.61 i 2.1 CNRI i FSF uczyniły licencję Pythona zgodną z GPL, zmieniając jej nazwę na Python Software Foundation License . W 2001 roku van Rossum otrzymał nagrodę FSF za rozwój wolnego oprogramowania .

Image
Kod Pythona z kolorowaniem składni

Python 2.1 był dziełem pochodnym wersji 1.6.1 i 2.0. Od tego momentu właścicielem projektu staje się Python Software Foundation (PSF), zorganizowane jako organizacja non-profit założona w 2001 roku, biorąc za wzór Apache Software Foundation . [ 3 ] W tym wydaniu zawarto implementację określania zakresu bardziej zbliżoną do statycznych reguł określania zakresu (którego twórcą jest Scheme ). [ 15 ]

Główną innowacją w Pythonie 2.2 było ujednolicenie typów Pythona (typów napisanych w C) i klas (typów napisanych w Pythonie) w hierarchię. Dzięki tej unifikacji uzyskano czysty i spójny model obiektowy Pythona. [ 16 ] Dodano również generatory inspirowane językiem Icon . [ 17 ]

Dodatki do biblioteki standardowej Pythona i decyzje dotyczące składni były w niektórych przypadkach pod silnym wpływem Javylogging : pakiet [ 18 ]​ wprowadzony w wersji 2.3 jest oparty na log4j ; parser SAX , wprowadzony w 2.0; pakiet threading, [ 19 ]​ , którego klasa Thread udostępnia podzbiór interfejsu klasy o tej samej nazwie w Javie.

Python 2, czyli Python 2.7.x, został oficjalnie wycofany 1 stycznia 2020 r. (pierwszy planowany na 2015 r.), po czym nie zostaną do niego wydane żadne poprawki bezpieczeństwa ani inne ulepszenia. [ 20 ] ​[ 21 ]​ Wraz z końcem cyklu życia Pythona 2, obsługiwana jest tylko gałąź Python 3.6.x [ 22 ]​ i późniejsze.

Dziś Python znajduje zastosowanie w obszarach sztucznej inteligencji i uczenia maszynowego . [ 23 ]

Charakterystyka i paradygmaty

Python jest wieloparadygmatycznym językiem programowania . Oznacza to, że zamiast zmuszać programistów do przyjęcia określonego stylu programowania, pozwala na kilka stylów: programowanie obiektowe , programowanie imperatywne i programowanie funkcjonalne . Inne paradygmaty są obsługiwane przez użycie rozszerzeń.

Python używa dynamicznego pisania i zliczania odwołań do zarządzania pamięcią .

Ważną cechą Pythona jest dynamiczne rozpoznawanie nazw; to znaczy, co wiąże metodę i nazwę zmiennej podczas wykonywania programu (nazywane również dynamicznym wiązaniem metod).

Innym celem projektowania języka jest łatwość rozbudowy. Nowe moduły można łatwo napisać w C lub C++ . Python może być dołączany do aplikacji, które wymagają programowalnego interfejsu.

Chociaż programowanie w Pythonie może w niektórych sytuacjach być uważane za wrogie tradycyjnemu programowaniu funkcjonalnemu w Lispie , istnieje wiele analogii między Pythonem a minimalistycznymi językami z rodziny Lisp, takimi jak Scheme .

Filozofia

Użytkownicy Pythona często odwołują się do filozofii Pythona , która jest całkiem analogiczna do filozofii Unixa . Mówi się, że kod zgodny z zasadami Pythona jest „pythoniczny”. Zasady te zostały opisane przez programistę Pythona Tima Petersa w The Zen of Python

  • Piękne jest lepsze niż brzydkie.
  • Wyraźne jest lepsze niż niejawne.
  • Proste jest lepsze niż złożone.
  • Złożone jest lepsze niż skomplikowane.
  • Płaskie jest lepsze niż zagnieżdżone.
  • Rzadki jest lepszy niż gęsty.
  • Liczy się czytelność.
  • Przypadki specjalne nie są tak wyjątkowe, że łamią zasady.
  • Praktyczny wygrywa z czystym.
  • Błędy nigdy nie powinny się po cichu wyślizgiwać.
  • Chyba że zostały wyraźnie uciszone.
  • W obliczu niejasności odrzuć pokusę zgadywania.
  • Powinien być jeden – a najlepiej tylko jeden – oczywisty sposób na zrobienie tego.
  • Chociaż na początku może to nie być oczywiste, chyba że jesteś Holendrem. [ 24 ]
  • Teraz jest lepiej niż kiedykolwiek.
  • Chociaż nigdy nie jest często lepiej niż teraz .
  • Jeśli wdrożenie jest trudne do wytłumaczenia, to zły pomysł.
  • Jeśli implementacja jest łatwa do wytłumaczenia, może to być dobry pomysł.
  • Przestrzenie nazw to świetny pomysł. Zróbmy więcej takich rzeczy!

Od wersji 2.1.2 Python zawiera te kropki (w ich oryginalnej angielskiej wersji) jako jajko wielkanocne , które jest wyświetlane podczas uruchamiania import this. [ 25 ]

Image
LAMP rozumie Pythona (tutaj z Squid )

Tryb interaktywny

Standardowy interpreter Pythona zawiera tryb interaktywny, w którym instrukcje są pisane w rodzaju interpretera poleceń : wyrażenia można wprowadzać jedno po drugim, a wynik ich oceny widoczny jest od razu, co daje możliwość testowania fragmentów. tryb przed zintegrowaniem go jako części programu. Jest to przydatne zarówno dla osób dopiero zapoznających się z językiem, jak i dla bardziej zaawansowanych programistów.

Istnieją inne programy, takie jak IDLE , bpython lub IPython [ 26 ] , które dodają dodatkowe funkcje do trybu interaktywnego, takie jak automatyczne uzupełnianie kodu i kolorowanie składni języka .

Przykład trybu interaktywnego:

>>>  1  +  1 
2 
>>>  a  =  zakres ( 10 ) 
>>>  print ( lista ( a )) 
[ 0 ,  1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9 ]

Elementy języka i składnia

Python ma być bardzo czytelnym językiem. Jego format jest wizualnie przejrzysty i często używa angielskich słów kluczowych, podczas gdy inne języki używają interpunkcji. W przeciwieństwie do wielu innych języków, nie używa nawiasów kwadratowych do oddzielania bloków, a średniki są dozwolone po deklaracjach, ale są rzadko używane, jeśli w ogóle. Ma mniej wyjątków składniowych i przypadków specjalnych niż C lub Pascal.

Zaprojektowany tak, aby był łatwy do odczytania, jedną z jego cech jest użycie słów tam, gdzie inne języki używają symboli. Na przykład operatory logiczne !, ||aw &&Pythonie są napisane odpowiednio not, ori and. Co ciekawe, język Pascal jest obok COBOL jednym z języków o bardzo przejrzystej składni i oba pochodzą z lat 70. Idea czytelnego i czytelnego kodu nie jest niczym nowym.

Zawartość bloków kodu (pętle, funkcje, klasy itp.) jest oddzielona spacjami lub tabulatorami, tak zwanymi wcięciami , przed każdą linią poleceń należącą do bloku. [ 27 ] Python różni się tym samym od innych języków programowania, które zachowują zwyczaj deklarowania bloków za pomocą zestawu znaków, zwykle ujętych w nawiasy klamrowe {}. [ 28 ] ​[ 29 ]​ Do wcięcia kodu można używać zarówno spacji, jak i tabulatorów, ale nie zaleca się ich mieszania. [ 30 ]

Funkcja silnia w C (opcjonalne wcięcie) Funkcja silnia w Pythonie (obowiązkowe wcięcie)
int silnia ( int x )  
{
    jeśli ( x < 0 || x % 1 != 0 ) {          
        printf ( "x musi być liczbą całkowitą większą lub równą 0" );
        powrót -1 ; //Błąd }  
    
    jeśli ( x == 0 ) {    
        powrót 1 ; 
    }
    zwróć x * silnia ( x - 1 );     
}
def  silnia ( x ): 
    asercja  x  >=  0  i  x  %  1  ==  0 ,  "x musi być liczbą całkowitą większą lub równą 0." 
    if  x  ==  0 : 
        zwróć  1 w 
    przeciwnym razie : zwróć x * silnia ( x - 1 )
             

Ze względu na składniowe znaczenie wcięcia każda instrukcja musi być zawarta w jednym wierszu. Jednakże, jeśli dla czytelności chcesz podzielić instrukcję na kilka linii, dodanie odwrotnego ukośnika \na końcu linii oznacza, że ​​instrukcja jest kontynuowana w następnej.

Te instrukcje są równoważne:

  list = [ 'wartość 1' , 'wartość 2' , 'wartość 3' ] 
  string = 'To jest dość długi ciąg'
  list = [ 'wartość 1' , 'wartość 2' \
         , 'wartość 3' ] 
  string = 'To jest dość długi ' \
          'ciąg'

Komentarze

Komentarze można umieszczać na dwa sposoby. Pierwszym i najbardziej odpowiednim dla długich komentarzy jest użycie notacji '''' komentarza ''', trzech apostrofów otwierających i trzech zamykających. Druga notacja używa symbolu #i rozciągają się do końca linii.

Interpreter nie uwzględnia komentarzy , co jest przydatne, jeśli chcemy umieścić w kodzie dodatkowe informacje. Na przykład wyjaśnienie zachowania sekcji programu.

''' 
Najdłuższy komentarz do wiersza w Pythonie 
''' 
print ( "Witaj świecie" )  # Istnieje również możliwość dodania komentarza na końcu wiersza kodu

Zmienne

Zmienne definiowane dynamicznie , co oznacza, że ​​nie trzeba z góry określać, jaki jest ich typ i w późniejszym czasie mogą przyjmować inne wartości, nawet innego typu niż poprzednio. Symbol służy =do przypisywania wartości.

x  =  1 
x  =  "tekst"  # Jest to możliwe, ponieważ typy są przypisywane dynamicznie

Nazwy zmiennych mogą zawierać cyfry i litery, ale muszą zaczynać się od litery, a istnieje 28 słów zastrzeżonych: [ 31 ]

  • and
  • assert
  • break
  • class
  • continue
  • def
  • del
  • elif
  • else
  • except
  • exec
  • finally
  • for
  • from
  • global
  • if
  • import
  • in
  • is
  • lambda
  • not
  • or
  • pass
  • print
  • raise
  • return
  • try
  • while

Typy danych

Python 3. Standardowy typ hierarchy.png

Typy danych można podsumować w poniższej tabeli:

Facet Klasa Klas Przykład
str Strunowy Niezmienny 'Cadena'
unicode Strunowy Wersja Unicode _str u'Cadena'
list Sekwencja Zmienny, może zawierać obiekty różnego typu [4.0, 'Cadena', True]
tuple Sekwencja Niezmienny, może zawierać obiekty różnego typu (4.0, 'Cadena', True)
set Ustawić Zmienny, bez kolejności, bez duplikatów {4.0, 'Cadena', True}
frozenset Ustawić Niezmienny, bez kolejności, bez duplikatów frozenset([4.0, 'Cadena', True])
dict mapowanie Klucz: grupa par wartości {'key1': 1.0, 'key2': False}
int liczba całkowita Stała precyzja, przeliczana na długą przy przepełnieniu. 42
long liczba całkowita dowolna precyzja 42Lzarówno456966786151987643L
float Liczba dziesiętna Liczba zmiennoprzecinkowa podwójnej precyzji 3.1415927
complex Liczba zespolona Część rzeczywista i część urojona j . (4.5 + 3j)
bool Boole'a wartość logiczna prawda lub fałsz True o False
  • Mutable: czy jego zawartość (lub wspomnianą wartość) można zmienić w czasie wykonywania.
  • Niezmienne: jeśli jego zawartość (lub wspomniana wartość) nie może zostać zmieniona w czasie wykonywania.

Warunkowe

Instrukcja warunkowa ( if ) wykonuje swój wewnętrzny blok kodu tylko wtedy, gdy spełniony jest określony warunek. Jest on definiowany za pomocą słowa kluczowego if, po którym następuje warunek i blok kodu. Jeśli istnieją dodatkowe warunki, są one wprowadzane za pomocą słowa kluczowego elif, po którym następuje warunek i jego blok kodu. Warunki są oceniane sekwencyjnie, aż do znalezienia pierwszego, który jest prawdziwy, a powiązany z nim blok kodu jest jedynym, który jest wykonywany. Opcjonalnie może istnieć blok końcowy (słowo kluczowe else, po którym następuje blok kodu), który jest wykonywany tylko wtedy, gdy wszystkie poprzednie warunki były fałszywe.

>>>  true  =  True 
>>>  if  true :  # Nie trzeba wstawiać "true == True" 
...      print ( "True" ) 
...  else : 
...      print ( "False" ) 
... 
True 
>>>  language  =  "Python" 
>>>  if  language  ==  "C" :  # język nie jest "C", więc ten blok pominie i oceni następujący warunek 
...      print ( "Język programowania: C " ) 
. ..  elif  language  ==  "Python" :  # Możesz dodać tyle bloków "elif" ile chcesz 
...      print ( "Język programowania: Python" ) 
...  else :  # W przypadku, gdy żaden z powyższych warunków nie został true, ten blok zostanie wykonany 
...      print ( " Język programowania : niezdefiniowany" ) 
... 
Język  programowania  : Python >>> if true i language == "Python" : # Użyj "and", aby sprawdzić, czy oba warunki są true ... print ( "Język prawdy i programowania: Python " ) ... Język prawdy i programowania : Python 
       
     

     

dla pętli

Pętla for jest podobna do foreach w innych językach. Wykonaj pętlę przez obiekt iterowalny, taki jak list , krotka lub generator, a dla każdego elementu iterowalnego wykonaj wewnętrzny blok kodu. Jest definiowany za pomocą słowa kluczowego for, po którym następuje nazwa zmiennej, następnie in, a następnie iterowalna, a na końcu wewnętrzny blok kodu. W każdej iteracji kolejny element iteracji jest przypisywany do określonej nazwy zmiennej:

>>>  list  =  [ "a" ,  "b" ,  "c" ] 
>>>  for  i  in  list :  # Iterujemy po liście, co jest iterowalne 
...      print ( i ) 
... 
a 
b 
c 
> > >  string  =  "abcdef" 
>>>  for  i  in  string :  # Iterujemy po łańcuchu, co jest również iterowalne 
...      print ( i ,  end = ', ' )  # Dodanie end=', ' na końcu powoduje nie wprowadza nowej linii, ale przecinek i spację 
... 
a ,  b ,  c ,  d ,  e ,  f ,

pętla while

Pętla while ocenia warunek i, jeśli prawda, wykonuje wewnętrzny blok kodu. Kontynuuje ocenę i wykonanie, dopóki warunek jest spełniony. Jest definiowany za pomocą słowa kluczowego while, po którym następuje warunek, a następnie wewnętrzny blok kodu:

>>>  number  =  0 
>>>  while  number  <  10 : 
...      print ( number ,  end = " " ) 
...      number  +=  1   # Dobry programista zmodyfikuje zmienne sterujące na końcu pętli while 
. .. 
0  1  2  3  4  5  6  7  8  9

Listy i krotki

  • Nawiasy kwadratowe są używane do deklarowania listy , podczas gdy nawiasy są używane []do deklarowania krotki() . W obu elementy są oddzielone przecinkami, a w przypadku krotek muszą mieć co najmniej jeden przecinek.
  • Zarówno listy, jak i krotki mogą zawierać elementy różnych typów. Jednak listy są zwykle używane dla elementów tego samego typu w zmiennej ilości, podczas gdy krotki są zarezerwowane dla różnych elementów w stałej ilości.
  • Aby uzyskać dostęp do elementów listy lub krotki , używany jest indeks liczby całkowitej (zaczynający się od „0”, a nie „1”). Ujemne indeksy mogą być wykorzystane do uzyskania dostępu do elementów od końca.
  • Listy charakteryzują się tym, że są mutowalne , co oznacza, że ​​ich zawartość może być zmieniana w czasie wykonywania, podczas gdy krotki są niezmienne, ponieważ po utworzeniu nie można modyfikować zawartości.
listy
>>>  list  =  [ "abc" ,  42 ,  3.1415 ) 
>>>  list [ 0 ]  # Dostęp do elementu przez jego indeks 
'abc' 
>>>  list [ - 1 ]  # Dostęp do elementu przy użyciu ujemnego indeksu 
3.1415 
>> >  lista . append ( Prawda )  # Dołącz element na koniec listy 
>>>  list 
[ 'abc' ,  42 ,  3.1415 ,  Prawda ] 
>>>  del  list [ 3 ]  # Usuń element z listy za pomocą indeksu (w tym przypadku : True) 
>>>  list [ 0 ]  =  "xyz"  # Ponownie przypisz wartość pierwszego elementu listy 
>>>  list [ 0 : 2 ]  # Pokaż elementy listy z indeksu "0" na " 2" (nie licząc tego ostatniego) 
[ 'xyz' ,  42 ] 
>>>  nested_list  =  [ lista ,  [ True ,  42 L ]]  # Możliwe jest zagnieżdżanie list 
>>>  nested_list 
[[ 'xyz' ,  42 ,  3.1415 ],  [ True ,  42 L ]] 
>>>  nested_list [ 1 ][ 0 ]  # Dostęp do elementu listy z innej listy (drugiego elementu, wyświetl pierwszy element) 
Prawda
krotki
>>>  krotka  =  ( "abc" ,  42 ,  3.1415 ) 
>>>  krotka [ 0 ]  # Dostęp do elementu poprzez jego indeks 
'abc' 
>>> krotki  [ 0 ] # Nie można usunąć (lub dodać) element w krotce, co spowoduje wyjątek ( Wyjątek ) >>> krotka [ 0 ] = "xyz" # Nie jest również możliwe ponowne przypisanie wartości elementu w krotce, co również spowoduje wyjątek ( Wyjątek ) > >> krotka [ 0 : 2 ] # Pokaż elementy krotki od indeksu "0" do "2" (nie uwzględniając tego ostatniego) ( 'abc' , 42 ) >>> nested_tuple = ( krotka , ( Prawda , 3.1415 ) ) ) # Możliwe jest również zagnieżdżanie krotek >>> 1 , 2 , 3 , "abc" # To też jest krotka, chociaż zaleca się umieszczanie jej w nawiasach (pamiętaj, że wymaga co najmniej jednego przecinka ) ( 1 , 2 , 3 , 'abc' ) >>> ( 1 ) # Chociaż w nawiasach nie jest to krotka, ponieważ nie ma co najmniej jednego przecinka, więc pojawi się tylko wartość 1 >>> ( 1 ,) # Zamiast tego, w tym innym przypadku, tak jest to krotka ( 1 ,) >>> ( 1 , 2 ) # Przy więcej niż jednym elemencie co nie jest konieczne ma final ( 1 , 2 ) >>> ( 1 , 2 ,) # Chociaż dodanie nie zmienia wyniku ( 1 , 2 )  
  
    
  
  
 
      
     
   
  

  

   
 
   
 

Słowniki

  • Nawiasy klamrowe służą do deklarowania słownika{} . Zawierają elementy oddzielone przecinkami, gdzie każdy element składa się z pary clave:valor(symbol :oddziela klucz od odpowiadającej mu wartości).
  • Słowniki są mutowalne, co oznacza, że ​​zawartość słownika może być zmieniana valorw czasie wykonywania.
  • Zamiast tego te clavesze słownika muszą być niezmienne. Oznacza to na przykład, że nie będziemy mogli korzystać z list lub słowników typu claves.
  • Dane valorpowiązane z jednym clavemogą być dowolnego typu danych , nawet słownika .
>>>  słownik  =  { "string" :  "abc" ,  "number" :  42 ,  "list" :  [ True ,  42 L ]}  # Słownik, który ma różne wartości dla każdego klucza, nawet listy 
>>>  słownik [ " string" ]  # Używając klucza, uzyskaj dostęp do jego wartości 
'abc' 
>>>  słownik [ "list" ][ 0 ]  # Dostęp do elementu listy w wartości (o wartości klawisza "list", wyświetl pierwszy element ) 
Prawda 
>>>  słownik [ "ciąg" ]  =  "xyz"  # Ponownie przypisz wartość klucza 
>>>  słownik [ "ciąg" ] 
'xyz' 
>>>  słownik [ "dziesiętny" ]  =  3.1415927  # Wstaw nowy klucz:wartość 
>>>  słownik [ "dziesiętny" ] 
3.1415927 
>>>  mieszany_słownik  =  { "krotka" :  ( Prawda ,  3.1415 ),  "słownik" :  słownik }  # Istnieje również możliwość, aby wartość była słownikiem 
>> >  mixed_dictionary [ "dictionary" ][ "list" ][ 1 ]  # Dostęp do elementu wewnątrz listy, znalezionego w słowniku 
42 L 
>>>  dictionary  =  {( "abc" ,):  42 }  # Tak, jest to możliwe dla klucz do bycia krotką, ponieważ jest niezmienny ble 
>>>  słownik  =  {[ "abc" ]:  42 }  # Nie jest możliwe, aby klucz był listą, ponieważ jest zmienny, co spowoduje wyjątek 
(  Exception  )

Oświadczenie Switch Case

Python ma strukturę switch-case od wersji 3.10. Nazywa się to dopasowywaniem wzorca strukturalnego .

 zmienna dopasowania : 
	warunek przypadku  : # warunek wielkości liter : # warunek wielkości liter : # wielkość liter _ : # kod
		
	 
		
	 
		
	 
		

Należy zauważyć, że ta funkcjonalność jest znacznie bardziej złożona niż dobrze znany przypadek przełączania większości języków, ponieważ umożliwia nie tylko porównanie wartości, ale także sprawdza typ obiektu i jego atrybuty. Ponadto może również wykonywać bezpośrednie rozpakowywanie strumieni danych i sprawdzać je konkretnie.

Poniższy przykład sprawdza atrybuty naszego wystąpienia Punto. Jeśli nie są równe x10e y40, przejdzie do następnego warunku.

Ważne jest, aby pamiętać, że Punto(x=10, y=40)nie budujesz nowego obiektu, chociaż może się wydawać.

z  klas danych  importuj  klasę danych

@dataclass 
class  Punkt : 
	x :  int 
	y :  int

współrzędna  =  Punkt ( 10 ,  34 )

dopasowanie  współrzędnych : 
	case  Point ( x = 10 ,  y = 40 ):      # atrybuty "x" i "y" mają określoną wartość 
		print ( "Coordinate 10, 40" ) 
	case  Point ():    # jeśli jest to instancja Point 
		print ( "to jest kropka" ) 
	case  _ :          # nie spełniony warunek (domyślnie) 
		print ( "to nie jest kropka" )

W poprzednich wersjach istniały różne sposoby wykonania tej logicznej operacji w podobny sposób:

Używanie if, elif, else

Możemy użyć struktury w następujący sposób:

>>>  if  warunek1 : 
...      do1 >>> elif warunek2 
: ... do2 >>> elif warunek3 : ... do3 >>> else : ... do  
     
  
     
 
     

W tej strukturze zostanie wykonany kontrolując warunek1, jeśli nie zostanie spełniony, przejdzie do następnego i tak dalej, aż do wejścia w else. Praktycznym przykładem może być:

>>>  def  compute ( op , a , b ): 
...      if  'sum'  ==  op : 
...           return  a  +  b 
...      elif  'rest'  ==  op : 
...           return  a  -  b 
. ..      elif  'mult'  ==  op : 
...          return  a  *  b 
...      elif  'div'  ==  op : 
...          return  a / b 
...      else : 
...           return  Brak 
>>> 
>> >  drukuj ( oblicz ( 'suma' , 3 , 4 )) 
7

Moglibyśmy powiedzieć, że negatywną stroną stwierdzenia z if, elif i else jest to, że jeśli lista możliwych operacji jest bardzo długa, musisz przechodzić przez nie jeden po drugim, aż dojdziesz do właściwej.

Korzystanie ze słownika

Do tego samego przykładu możemy użyć słownika:

>>>  def  compute ( op , a , b ): 
...      return  { 
...          'sum' :  lambda :  a  +  b , 
...          'rest' :  lambda :  a  -  b , 
...          'mult' :  lambda :  a  *  b , 
...          'div' :  lambda :  a / b 
...      } . get ( op ,  lambda :  None )() 
>>> 
>>>  print ( 'sum ' , 3 , 4 ) ) 7

W ten sposób, gdyby opcji było wiele, nie przeszłoby wszystkich; przejdzie tylko bezpośrednio do operacji poszukiwanej w ostatnim wierszu .get(op, lambda: Brak)() podajemy opcję domyślną.

Zestawy

  • Zbiory są konstruowane przez , set(items)gdzie items to dowolny iterowalny obiekt , taki jak listy lub krotki . Zestawy nie zachowują kolejności i nie zawierają zduplikowanych elementów.
  • Są one zwykle używane do usuwania duplikatów z sekwencji lub do operacji matematycznych, takich jak przecięcie , suma , różnica i różnica symetryczna .
>>>  immutable_set  =  frozenset ([ "a" ,  "b" ,  "a" ])  # Użyj listy jako obiektu iterowalnego 
>>>  immutable_set 
frozenset ([ 'a' ,  'b' ]) 
>>>  set1  =  zbiór ([ "a" ,  "b" ,  "a" ])  # Pierwszy zbiór mutowalny 
>>> zbiór1  zbiór ([ 'a' , 'b' ]) >>> zbiór2 = zbiór ([ "a" , "b " , "c" , "d" ]) # Drugi zestaw mutowalny >>> zestaw2 zestaw ([ 'a' , 'c' , 'b' , 'd' ]) # Pamiętaj, że nie utrzymują porządku, jak słowniki >>> zbiór1 i zbiór2 # zbiór przecięcia ([ 'a' , 'b' ]) >>> zbiór1 | zestaw2 # Zbiór łączony ([ 'a' , 'c' , 'b' , 'd' ]) >>> zestaw1 - zestaw2 # Różnica (1) zestaw ([]) >>> zestaw2 - zestaw1 # Różnica (2) zbiór ([ 'c' , 'd' ]) >>> zbiór1 ^ zbiór2 # zbiór różnic symetrycznych ([ 'c' , 'd' ])
 
       
 
    
    
 
    
   
    

    
 
    
 

Lista zrozumienia

List składany to zwięzłe wyrażenie służące do definiowania list . Podobnie jak lambda, pojawia się w językach funkcjonalnych. Przykłady:

>>>  range ( 5 )  # Funkcja "range" zwraca listę zaczynającą się od 0 i kończącą się podaną liczbą minus jeden 
[ 0 ,  1 ,  2 ,  3 ,  4 ] 
>>>  [ i * i  dla  i  in  range ( 5 )]  # Dla każdego elementu w zakresie pomnóż go przez siebie i dodaj do wyniku 
[ 0 ,  1 ,  4 ,  9 ,  16 ] 
>>>  list  =  [( i ,  i  +  2 )  dla  i  w  zakresie ( 5 )] 
>>>  lista 
[( 0 ,  2 ),  ( 1 ,  3 ),  ( 2 ,  4 ),  ( 3 ,  5 ),  ( 4 ,  6 )]

Funkcje

  • Funkcje definiuje się za pomocą słowa kluczowego def, po którym następuje nazwa funkcji i jej parametry. Innym sposobem pisania funkcji , choć rzadziej używanym, jest słowo kluczowe lambda(które pojawia się w językach funkcjonalnych, takich jak Lisp ).
  • Wartość zwracana w funkcji with defbędzie tą podaną w funkcji return.

def:

>>>  def  sum ( x ,  y = 2 ): 
...      return  x  +  y  # Zwróć sumę wartości zmiennej "x" i wartości "y" 
... 
>>>  sum ( 4 )  # Zmienna "y" nie jest modyfikowana, będąc jej wartością: 2 
6 
>>>  sum ( 4 ,  10 )  # Zmienna "y" jest modyfikowana, będąc jej nową wartością: 10 
14

lambda:

>>>  sum  =  lambda  x ,  y = 2 :  x  +  y 
>>>  sum ( 4 )  # Zmienna "y" nie jest modyfikowana, będąc jej wartością: 2 
6 
>>>  sum ( 4 ,  10 )  # Zmienna "y" jest modyfikowane, będąc jego nową wartością: 10 
14

Zajęcia

  • Klasy są definiowane za pomocą słowa kluczowego , po którym następuje nazwa klasy i , jeśli dziedziczą z innej klasy , nazwa klasy .class
  • W Pythonie 2.x zalecono, aby klasa dziedziczyła po „Object”, w Pythonie 3.x nie jest to już konieczne.
  • W klasie „metoda” jest równoważna „funkcji”, a „atrybut” jest równoważny „zmiennej”. [ 32 ]
  • "__init__" to specjalna metoda, która jest wykonywana podczas tworzenia instancji klasy, jest zwykle używana do inicjowania atrybutów i wykonywania niezbędnych metod. Jak wszystkie metody w Pythonie, musi mieć co najmniej jeden parametr, zwykle self. Pozostałe parametry będą tymi wskazanymi podczas tworzenia instancji klasy .
  • Atrybuty, które mają być dostępne spoza klasy , należy zadeklarować self.przed nazwą.
  • W Pythonie nie ma pojęcia enkapsulacji [ 33 ]​ więc programista musi być odpowiedzialny za przypisanie wartości do atrybutów
>>>  class  Osoba (): 
...      def  __init__ ( self ,  name ,  age ): 
...          self . name  =  name  # Dowolny atrybut 
...          self . wiek  =  wiek  # Dowolny inny atrybut 
...      def  display_age ( self ):  # Musi mieć co najmniej jeden parametr, zwykle: "self" 
...          print ( self . age )  # wyświetlanie atrybutu 
...      def  modyfikacja_wiek ( self ,  wiek ):  # Modyfikacja wieku 
...          jeśli  wiek  <  0  lub  wiek  >  150 :  # Sprawdź, czy wiek nie jest mniejszy niż 0 (coś niemożliwego) ani więcej niż 150 (coś naprawdę trudnego) 
...              return  False 
.. .else          : # Jeśli w zakresie 0-150, to zmienna ... self jest modyfikowana . wiek = wiek # Zmień wiek ... >>> p = Osoba ( 'Alicja' , 20 ) # Utwórz wystąpienie klasy, jak widać, wartość "ja" nie jest określona >>> p . name # Zmienna "name" samego obiektu jest dostępna spoza 'Alice' >>> p . name = 'Andrea' # A więc jego zawartość można zmienić >>> p . nazwa 'Andrea' >>> s . show_age () # Metoda klasy 20 >>> p jest wywoływana . modyfikacja_wiek ( 21 ) # Istnieje możliwość zmiany wieku przy użyciu określonej metody , którą stworzyliśmy , aby zrobić to w sposób kontrolowany >>> s . . pokaż_wiek () 21 
                

     
  

    
 

  

  
 

Moduły

Istnieje wiele właściwości, które można dodać do języka, importując moduły, które są „minikodami” (w większości napisanymi również w Pythonie), które udostępniają określone funkcje i klasy do wykonywania określonych zadań. Jednym z przykładów jest moduł Tkinter [ 34 ] , który umożliwia tworzenie interfejsów graficznych w oparciu o bibliotekę Tk . Innym przykładem jest moduł os , który zapewnia dostęp do wielu funkcji systemu operacyjnego. Moduły dodaje się do kodów wpisując, importa następnie nazwę modułu, którego chcemy użyć. [ 35 ]

Instalowanie modułów (pip)

Instalowanie modułów w Pythonie można wykonać za pomocą narzędzia programowego (zazwyczaj dołączonego do instalacji Pythona) Pip . To narzędzie umożliwia zarządzanie różnymi pakietami lub modułami do zainstalowania dla Pythona, obejmując w ten sposób następujące funkcje:

  • Instalacja pakietów.
    • Instalacja określonych wersji pakietów.
    • Instalacja z pliku konfiguracyjnego.
  • Odinstaluj.
  • Aktualizacja.

Interfejs do systemu operacyjnego

Moduł udostępnia funkcje do interakcji z systemem operacyjnym:

>>>  import  os  # Moduł udostępniający funkcje systemu operacyjnego 
>>>  os . name  # Zwraca nazwę systemu operacyjnego 
'posix' 
>>>  os . mkdir ( "/tmp/przykład" )  # Utwórz katalog w określonej ścieżce 
>>>  import  time  # Moduł do pracy z datami i godzinami 
>>>  time . strftime ( "%Y-%m- %d %H:%M:%S" )  # Nadanie określonego formatu, zwraca bieżącą datę i/lub godzinę 
'2010-08-10 18:01:17'

W przypadku zadań związanych z zarządzaniem plikami moduł Shutil zapewnia interfejs wyższego poziomu:

>>>  importuj  plik 
>>>  plik . copyfile ( 'data.db' ,  'informacje.db' ) 
'informacje.db' 
>>>  Shutil . przenieś ( '/buduj/programy' ,  'dir_progs' ) 
'dir_progs'

Symbole wieloznaczne plików

Moduł glob udostępnia funkcję tworzenia list plików na podstawie wyszukiwań z użyciem symboli wieloznacznych w folderach:

>>>  importuj  globalne 
>>>  globalne . glob ( '*.py' ) 
[ 'numbers.py' ,  'example.py' ,  'example2.py' ]

Argumenty wiersza poleceń

Argumenty wiersza poleceń są przechowywane w atrybucie argv modułu sys jako lista.

>>>  import  sys 
>>>  print ( sys . argv ) 
[ 'demo.py' ,  'jeden' ,  'dwa' ,  'trzy' ]

Matematyka

Moduł math umożliwia dostęp do funkcji matematycznych zmiennoprzecinkowych:

>>>  importuj  matematykę 
>>>  matematyka . cos ( math . pi  /  3 ) 
0 , 494888338963 
>>>  math . log ( 1024 ,  2 ) 
10,0

Moduł random służy do dokonywania losowych wyborów:

>>>  importuj  losowo 
>>>  losowo . wybór ([ 'brzoskwinia' ,  'jabłko' ,  'truskawka' ]) 
'brzoskwinia' 
>>>  losowo . próbka ( zakres ( 100 ),  10 )    # wybór bez zamiany 
[ 30 ,  23 ,  17 ,  24 ,  8 ,  81 ,  41 ,  80 ,  28 ,  13 ] 
>>>  losowo . random ()     # losowa liczba zmiennoprzecinkowa 
0.23370387692726126 
>>>  random . randrange ( 6 )     # losowa liczba całkowita z zakresu (6) 
3

Moduł statystyk służy do podstawowych statystyk, np.: średnia, mediana, wariancja itp.:

>>>  importuj  statystyki 
>>>  dane  =  [ 1,75 ,  2,75 ,  1,25 ,  0,5 ,  0,25 ,  1,25 ,  3,5 ] 
>>>  statystyki . średnia ( dane ) 
1.6071428571428572 
>>>  statystyka . mediana ( dane ) 
1,25 
>>>  statystyka . wariancja ( dane ) 
1.3720238095238095

Daty i godziny

Moduł datetime pozwala na obsługę dat i godzin:

>>>  od  datetime  data importu  >>> dzisiaj = data . dzisiaj () >>> dzisiaj data/ godzina . data ( 2017 , 8 , 16 )
   
 
  

Moduł żółwia

Moduł żółwia pozwala na implementację wykresów żółwi :

>>>  importuj  żółwia 
>>>  żółw . Pensize ( 2 ) 
>>>  żółw . lewo ( 120 ) 
>>>  żółw . do przodu ( 100 )

System obiektów

W Pythonie wszystko jest obiektem (nawet klasy ). Klasy , będące obiektami , są instancjami metaklasy . Python obsługuje również wielokrotne dziedziczenie i polimorfizm .

>>>  string  =  "abc"  # Ciąg jest obiektem typu "str" 
​​>>>  string . upper ()  # Będąc obiektem, ma swoje własne metody 
'ABC' 
>>>  list  =  [ Prawda ,  3.1415 ]  # Lista jest obiektem typu "lista" 
>>>  list . append ( 42 L )  # Lista jest również (jak wszystko inne) obiektem, a także posiada własne metody 
>>>  list 
[ True ,  3.1415 ,  42 L ]

Biblioteka standardowa

Image
Python jest dostarczany z "zawartymi stosami"

Python ma dużą standardową bibliotekę, używaną do różnych zadań. Wynika to z filozofii „ dołączone baterie” w odniesieniu do modułów Pythona. Standardowe moduły biblioteczne mogą być wzbogacone o niestandardowe moduły napisane zarówno w C, jak i Pythonie. Ze względu na szeroką gamę narzędzi zawartych w standardowej bibliotece, w połączeniu z możliwością korzystania z języków niskiego poziomu, takich jak C i C++, które są zdolne do łączenia się z innymi bibliotekami, Python jest językiem łączącym przejrzystą składnię z ogromną mocą mniej eleganckich języków. [ 36 ]

Realizacje

Istnieje kilka implementacji języka:

  • CPython to oryginalna implementacja, dostępna na różne platformy na oficjalnej stronie Pythona.
  • IronPython to implementacja dla .NET
  • Stackless Python to wariant CPython, który próbuje nie używać stosu C ( www.stackless.com )
  • Jython to implementacja wykonana w Javie
  • Pippy to implementacja stworzona dla Palmy ( pippy.sourceforge.net )
  • PyPy to implementacja Pythona napisana w Pythonie i zoptymalizowana przy użyciu JIT ( pypy.org )
  • ActivePython to zastrzeżona implementacja Pythona z rozszerzeniami dla serwerów produkcyjnych i aplikacji o znaczeniu krytycznym opracowana przez ActiveState Software.

Incydenty

W swojej historii Python przedstawił szereg incydentów, z których najważniejsze to:

  • Nowa wersja Pythona została wydana 13 lutego 2009 pod nazwą kodową „Python 3000” lub w skrócie Py3K . [ 38 ] Ta nowa wersja zawiera całą serię zmian, które wymagają przepisania kodu poprzednich wersji. Aby ułatwić ten proces, wraz z Pythonem 3 wydano zautomatyzowane narzędzie o nazwie 2to3 . [ 39 ] ​[ 40 ]
  • W systemie operacyjnym Windows 10 od czasu aktualizacji z maja 2019 r. dostępna jest funkcja wstępnej instalacji wspomaganej językiem Python oraz kilka dodatkowych narzędzi. [ 41 ]

Zobacz także

Referencje

  1. ^ "Lista zmian - dokumentacja Pythona" . python.org . Źródło 13 października 2022 . 
  2. „Co to jest Python?” (html) . LUKA . Zarchiwizowane z oryginału w dniu 24 lutego 2020 r . Źródło 24 lutego 2020 .  
  3. a b Historia i licencja
  4. a b Tworzenie Pythona
  5. ^ a b "Dlaczego w ogóle powstał Python?" . Ogólne często zadawane pytania dotyczące Pythona. 
  6. 1. Jaki masz apetyt
  7. Tannhausser (12 lipca 2018). „Guido van Rossum rezygnuje z funkcji lidera Pythona” (html) . Spojrzenie Replikanta . Zarchiwizowane od oryginału w dniu 12 lipca 2018 r . Źródło 21 lipca 2018 . „Jak widać, nie tylko przekazuje władzę, ale także unika wyznaczania następcy i pozostawia zadanie zorganizowania transformacji, a także model rządu w przyszłości, deweloperom firmy Corel. » 
  8. ^ van Rossum, Guido (12 lipca 2018). „[Python-committers] Przekazanie władzy” (html) . Poczta Archiwum Com (w języku angielskim) . Zarchiwizowane od oryginału w dniu 12 lipca 2018 r . Źródło 21 lipca 2018 . «Nie wyznaczę następcy. Więc co wszyscy zamierzacie zrobić? Stworzyć demokrację? Anarchia? do dyktatury? do federacji? » 
  9. ^ van Rossum, Guido (20 stycznia 2009). „Krótka oś czasu Pythona” . Historia Pythona (w języku angielskim) . Pobrano 14 lutego 2021 . 
  10. Chacón Sartori, Camilo. Obliczenia i programowanie funkcyjne: wprowadzenie do rachunku lambda i programowania funkcjonalnego przy użyciu rakiety i Pythona . [Barcelona]: Marcombo. ISBN  8426732437 . 
  11. Los reduction() w Pythonie 3000
  12. Programowanie komputerowe dla wszystkich
  13. Indeks / cp4e
  14. a b Co nowego w Pythonie 2.0
  15. PEP 227 -- Statycznie zagnieżdżone zakresy
  16. PEP 252 i 253: Zmiany typu i klasy
  17. PEP 255: Proste generatory
  18. PEP 282 — system rejestrowania
  19. wątkowość — interfejs do obsługi wątków wyższego poziomu
  20. „Python 2 Sunset” (w języku angielskim) . python.org . 21 stycznia 2020 r. 
  21. ^ "PEP 373 - Harmonogram wydań Pythona 2.7 " . python.org . 21 stycznia 2020 r. 
  22. ^ "Przewodnik programisty Pythona — Przewodnik programisty Pythona " . devguide.python.org . 21 stycznia 2020 r. 
  23. „Uczenie maszynowe z Pythonem: praktyczne wprowadzenie” . edX (w języku angielskim) . Źródło 6 lipca 2020 . 
  24. „holenderski” odnosi się do Guido van Rossuma , autora języka programowania Python, który jest Holendrem . Odnosi się to również do dużej koncentracji dobrze znanych holenderskich deweloperów w stosunku do innych narodowości.
  25. PEP 20 — Zen Pythona
  26. ^ „Zarchiwizowana kopia” . Zarchiwizowane z oryginału 4 sierpnia 2018 r . Źródło 25 lutego 2010 . 
  27. Fundacja oprogramowania Python. „Więcej opcji przepływu sterowania” . Dokumentacja Pythona v2.7.8 . Pobrano 20 lipca 2014 . 
  28. Eric Huss. «Definicja Funkcji» . Przewodnik informacyjny Biblioteki C . Zarchiwizowane z oryginału 18 stycznia 2015 r . . Pobrano 20 lipca 2014 . 
  29. Álvarez, Miguel Ángel (2 listopada 2001). „Funkcje w JavaScript” . webdevelopment.com (w języku angielskim) . Pobrano 20 lipca 2014 . 
  30. David Goodger. "Koduj jak Pythonista: Idiomatic Python" . Python.net (w języku angielskim) . Zarchiwizowane z oryginału w dniu 27 maja 2014 r . Pobrano 20 lipca 2014 . 
  31. Downey, Allen; Elkner, Jeffrey (1 kwietnia 2002). „Naucz się myśleć jak programista w Pythonie” (pdf) . Pyton argentyński . p. 40. Zarchiwizowane z oryginału w dniu 23 października 2017 r . Źródło 21 marca 2020 .  
  32. Recuero de los Santos, Paloma (13 maja 2020 r.). „Python dla każdego: różnica między metodą a funkcją” (html) . Zarchiwizowane z oryginału 14 maja 2020 r . Źródło 13 maja 2020 .  
  33. Enkapsulacja w Pythonie
  34. „Przykłady GUI Pythona (samouczek Tkinter) — Like Geeks” . Jak Geekowie . 22 stycznia 2018 r . Źródło 16 lipca 2018 . 
  35. „Mały spacer po Bibliotece Standardowej” . Samouczek Pythona (i Django!) w języku hiszpańskim . Zarchiwizowane z oryginału 15 września 2017 r . Źródło 16 sierpnia 2017 . 
  36. "Biblioteka standardowa Pythona" . docs.python.org . Źródło 26 kwietnia 2021 . 
  37. Python 3.0.1
  38. PEP 3000 -- Python 3000
  39. 2to3 - Automatyczne tłumaczenie kodu Pythona od 2 do 3
  40. Co nowego w Pythonie 3.0
  41. Dower, Steve (21 maja 2019 r.). „Kto umieścił Pythona w aktualizacji systemu Windows 10 maja 2019?” (html) . Blog firmy Microsoft (w języku angielskim) . Źródło 23 maja 2019 .  

Bibliografia

  • Knowlton, Jim (2009). pyton . tr: Fernández Vélez, María Jesús (1 wydanie). Anaya Multimedia-Anaya Interactive. ISBN  978-84-415-2513-9 . 
  • Martelli, Alex (2007). Pyton. Przewodnik informacyjny . tr: Gorjón Salvador, Bruno (1 edycja). Anaya Multimedia-Anaya Interactive. ISBN  978-84-415-2317-3 . 

Linki zewnętrzne