Tip:
Highlight text to annotate it
X
W ostatnich nagraniach napisaliśmy, fajne małe pogramy
pytały one użytkownika o dowolne dane do wprowadzenia
a następnie komputer obliczał silnie tej liczby
i ją wyświetlał.
I to jest w porządku, ale możesz sobie wyobrazić świat, w którym
będziesz chciał obliczyć silnie w kilku miejscach.
lub w wielu innych programach
lub w tym samym programie, chcesz obliczyć
silnie wiele razy
I nie chcesz pisać tego kodu
kolejny, kolejny i kolejny raz
chcesz obliczyć silnie.
Więc to co zamierzam w tym wideo
to zdefiniować funkcję, która oblicza silnię
tak abyśmy mogli użyć tej funkcji
za każdym razem gdy chcemy obliczyć silnię
Tak więc celem tej funkcji będzie
umieszczenie całego kodu,
tutaj
w jednym miejscu i następnie w każdym innym programie
i jeśli chcę obliczyć silnię,
mogę po prostu ponownie wywołać tą funkcję.
Nie muszę tego ponownie przepisywać.
Pozwól, że pokażę ci to, o czym mówie.
Zamierzam zdefiniować funkcję
i słowem kluczowym w Pythonie,
który jest specjalnym wyrazem
informującym interpreter, że coś
będzie się działo.
Tym słowem kluczowym w Pythonie, dla definicji funkcji jest "def"
Zamierzam więc zdefiniować funkcję.
a następnie wywołać funkcję z silnią
I dobrze będzie
nazwać tę funkcję adekwatnie do jej roli.
Czasami początkujący programiści, mają nawyk
nazywania jej np. "x245"
i ktoś kto później ma z nimi doczynienia
będzie pozbawiony tej cennej wskazówki, o jaką zmienną
lub o jaką funkcję chodzi.
Więc na pewno jakoś trzeba ją nazwać
w taki sposób, aby nazwa oddawała to co funkcja robi.
Moja funkcja będzie się nazywać silnia
i użytkownik, kiedy będzie chciał ją wywołać,
będzie musiał przekazać funkcji
dla jakich parametrów ma zostać obliczona silnia
Argument funkcji będzie nazywać się "number" (liczba)
I jeśli te wyrazy wyglądają trochę myląco
za chwilę je szczegółowo wyjaśnię
im bardziej się z tym oswoisz
tym lepiej zrozumiesz te rozwiązania.
Przekażą funkcji liczbę
i zwrócą wynik
wywołanemu programowi
nie powinienem wspominać
że to użytkownik przekaże tę liczbę,
wywoływany program będzie przekazywać liczbę
i muszę zwrócić silnię tej liczby
do miejsca wywołania porgramu
Pozwól więc że napiszę tu komentarz do tej funkcji
Zwraca silnię z argumentu "liczba".
i czasami może to być nazywane parametrem
a czasami argumentem funkcji
Kiedy tworzysz definicję funkcji,
formalnie "liczbę" należałoby nazwać parametrem.
"Liczba" jest więc jednym z parametrów
funkcji "silnia"
Właściwa liczba którą ktoś jej przekaże,
więc powiedzmy że ktoś wywoła silnię z "3",
formalnie to "3" jest argumentem.
Więc funkcja zwróci silnię z argumentu "liczba".
i to jest argumentem "number" tutaj.
Nie mówię o słowie number (liczba)
Mówię dosłownie o tej liczbie tutaj
Mogę powiedzieć argument "number"
Może umieszczę to w cudzysłowie, aby było to bardziej przejrzyste.
to jest argument,
Nie mówię tutaj o ogólnie konkretnych liczbach.
Więc zdefiniujmy to.
Zamierzamy więc użyć tutaj tego samego kodu
pozwól że po prostu go skopiuję
pozwól że po prostu go skopiuję i wkleję
Zamierzam więc wyciąć go stąd
i ponownie wkleić tutaj
ale muszę pamiętać o moich wcięciach tekstu
wcięcia pozwalają Pythonowi rozpoznać
która część jakiego kodu, w jaki sposób zinterpretować
Wszystko co jest częścią definicji funkcji
musi być wcięte i można to zrobić używając czterech spacji
jeden, dwa, trzy, cztery.
i to jest kolejna czwarta
jeden, dwa, trzy, cztery.
a to jest cześć pętli
jeden, dwa, trzy, cztery.
Pomyślmy o tym co już mamy
Zamierzam podać jakieś liczby
zdefiniowaliśmy zmienną "product" równy 1
i porozmawiamy więcej na temat zasięgu zmiennych
ale ta zmienna jest tylko użyteczna
z tą definicją funkcji
ponieważ pierwszy raz definiuję ją tutaj
jest tu w środku
więc o zasięgu zmiennych będzie w przyszłości
i później w ten sam sposób jak wcześniej
"for i in range(number)",
teraz wprowadzimy liczby za pomocą wejścia (klawiatury)
ponieważ zmienna została przekazana funkcji,
później "product" jest równy "product" x ("i"+1).
Ta sama logika działań jak wcześniej.
Po tej pętli for
jak po niej przejdziemy,
zasadniczo będzie to przejście przez to "numer" razy.
"Product" będzie miał silnie ze zmiennej "number"
i zamiast wydrukować bezpośrednio wynik
zamierzamy zwrócić wartość,
zamierzamy zwrócić wartość do wywołanego programu
i w następnym materiale wideo, zamierzam to przedstawić
odrobinę przejrzyściej, jeśli to jest dla ciebie trochę za skomplikowane
Zamierzam zwrócić product
więc w zasadzie to ten sam kod, co mieliśmy wcześniej
ale zapakowany do środka funkcji,
zdefiniowaliśmy funkcję.
Przyjmuje ona parametr zwany "number"
Jeśli chcesz silnię z 3
wprowadzasz silnie z 3
i 3 będzie argumentem
który zostanie umieszczony w miejscu zmiennej "number"
lub w innej zmiennej która odnosi się do "number"
Zdefiniowałeś "product" równy 1
i następnie "number" razy.
Więc dla "for i in range(number)",
wytłumaczyliśmy sobie logikę tego w poprzednim materiale wideo.
Za każdym razem jak zaczynasz z 1,
następnie mnożąc 1x1 będzie 1
a następnie "product" przyjmuje wartość 1
ale następnie "i" też będzie 1.
"i" zaczyna się iterować od zera,
więc będzie 1 x (0 + 1) co daje ci 1,
następnie "i" jest 2, więc będzie to 1 x 1,
przepraszam, następnie "i" wynosi 1
więc to zamierza być 1 x (1 + 1), co jest 1 x 2
więc to będzie następnie 2
i w ten sposób będzie dalej wzrastało
ten aspekt omówiliśmy dokładnie w poprzednim wideo.
I następnie w końcu, funkcja zamierza zwrócić "produkt"
więc jeśli ja chcę mieć wykonywane te same działania jak wcześniej
ale teraz używając do tego funkcji.
To co może zrobić, to możemy opisać,
musimy nadal wprowadzić, więc to jest definicją naszej funkcji
ale następnie poprzez nasz program,
mamy zdefiniowaną naszą funkcję
i teraz możemy powiedzieć:
"Pobierz, od użytkownika nie negatywną liczbę typu integer
aby obliczyć dla niej silnię"
i wstaw to do niej,
wywołajmy zmienną zwaną "user_input".
I co następnie zamierzam
to zdefiniować inną zmienną
zwaną "factorialofuser_input"
i teraz zaczyna to być interesujące.
Zamierzam wywołać tą funkcję tutaj.
więc to będzie równe
silni każdej wartości wprowadzonej przez użytkownika
Będzie więc to silnia ze zmiennej "user_input",
silnia tej zmiennej jest tutaj.
silnia wartości wprowadzonej.
będzie przechowywana w "factorialofuser_input",
Powinniśmy raczej powiedzieć,
będzie to wskazywać aktualną odpowiedź
i teraz musimy to już tylko wyświetlić.
Możemy więc wyświetlić "factorialofuser_input".
Nazwy te przypominają zdania
ale to tylko nazwy zmiennych
to jest właściwy sposób ich nazywania
dzięki jej nazwie naprawdę wiesz coś znajduję się w niej
lub na co te zmienne wskazują.
Więc "factorialofuser_input".
Teraz, no wiesz, chwila prawdy
zawsze zapisuj program i próbuj uruchomić go.
Spróbuj więc uruchomić teraz i sprawdzić co się stanie.
Sprawdźmy co się stało.
Jak dotychczas wszystko działa,
więc jeszcze raz,
więc chce aby było jasne, że program zaczyna się tutaj
ale wszystko co powyżej zostało zrobione to tylko jego definicja
więc nie wymaga to od użytkownika żadnej interakcji,
aktualnie nie jest nic przetwarzane,
więc tylko definiujemy funkcję i następnie idziemy na dół
i mówi: "Okej, otrzymałem jakieś dane wejściowe od użytkownika"
i to jest to co robimy tutaj.
Po tym jak wprowadzimy jakąś liczbę tutaj,
następnie zostanie wywołana funkcja z tą liczbą
którą umieściliśmy, liczba została umieszczona,
najpierw zostanie umieszczona w "user_input"
a następnie będzie wywoływana silnia
z argumentem "user_input".
Spróbujmy więc z liczbą 3.
i nie zadziałało!
Oh, i widzę dlaczego, nie zadziałało
ponieważ mam pozostałość z poprzedniego programu
które nie ma już żadnego sensu.
Więc pozwól mi pozbyć się tego.
Jest to dobra lekcja, bardzo rzadko za pierwszym razem
jest zrobienie czegoś perfekcyjnie.
Pozwól mi spróbować raz jeszcze!
To było po prostu bezsensowne.
to że nie zorientowałem się co było poniżej.
Pozwól mi więc spróbować raz jeszcze.
3 raz jeszcze.
i teraz dostaje dobrą odpowiedź.
Otrzymałem silnię z liczby 3
i jest to cool ponieważ
teraz mój interpreter pythona
jest przy założeniu, że ta definicja została wykonana
Teraz mogę wywołać silnię prosto z interpretera,
jeśli miałbym inny program
Mogłbym wywołać go na wiele sposobów
i miejmy nadzieje że teraz powinieneś docenić to
dlaczego jest tak przewspaniale, że zrobiliśmy tę definicję funkcji
bo możemy obliczyć,
bo już ze zdefiniowanej funkcja silnia,
Mogę obliczyć silnię 4.
Jest to 24
Mogę powiedzieć, że silnia 5 minus silnia z 3.
114.
Mogę wziąć silnię z 12
i mogę przekazać komputerowi,
nawet jeśli jest tylko interpretacją tego wszystkiego,
będziemy mówić więcej o kodzie interpretowanym kontra kompilowanym,
jest to niesamowicie szybkie.
Szybciej niż naprawdę możemy to nawet pojąć.
Więc prawdziwą mocą tej funkcji,
jest to, że nie trzeba przepisać kodu za każdym razem,
Mogę po prostu wywołać ją z innymi argumentami
więc silnie z 2 mogę obliczać za każdym razem,
nie muszę ponownie uruchamiać programu.
A jeśli piszę inne programy, które używają silni,
mogę zrobić coś w kombinatoryce,
Można po prostu wykorzystać to jako funkcję,
rzeczywiście nawet nie wiedzieć
co dzieje się w wewnątrz funkcji.
Jeden z najbardziej potężnych aspektów funkcji jest to
że powiedzmy mam napisać kilka programów, które wymagają wywołania,
więc mam ten program tu, który wywołuje silnię.
Ale powiedzmy, że masz lepszy sposób
pisania tego tutaj.
Tak długo jak twój program
robi to samo z różnymi wnętrznościami,
Użytkownik końcowy nic nie zauważy.
Więc może napisać to w szybszy sposób
lub prostszy sposób robienia tego.
Sposób, który zużywa mniej pamięci lub mniej mocy procesora
Następnie można po prostu zastąpić to później
i każdy program który to wywołuje,
tak długo jak działa,
będzie pracować dla tego programu
i będzie on działać o wiele lepiej.