Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.
Załóżmy, że trzeba wywołać fikcyjną funkcję
wyszukujÄ…cÄ… dany tekst w pliku:
4 //
4# 1
4#,4 #, 1
4#,1
% 1
Parametr % zmienia kolejność
przeszukiwania. Jeśli trzeba będzie rozpocząć
przeszukiwanie wstecz, a nie do przodu
i pozostałe wartości domyślne będą mogły być
przyjęte, wywołanie tej funkcji z użyciem
argumentów pozycyjnych może być
następujące:
Określanie argumentów
45 /, 655 ,5111+
Oto jego równoważnik z użyciem argumentów
jako słów kluczowych:
45 /, 655 ,5 %
Warto zwrócić uwagę na zalety wywołania ze
słowami kluczowymi: jest ono bardziej czytelne,
można pominąć opcjonalne argumenty i można
umieszczać słowa kluczowe w dowolnej kolejności.
248
Funkcje
Wywoływanie funkcji z argumentami
- -
Ä"
w postaci słów kluczowych
%9
- - "%-
1. Wpisz:
- -@@ "-
-@@- -
-@@-@@ -
@@- - -
Nazwa jest nazwÄ… funkcji, to
@@- -@@ -
argumenty pozycyjne (jeśli takie istnieją),
@@-@@- -
@@-@@-@@
zaÅ› , sÄ… argumentami
:
(wyrażeniami) przekazywanymi do
"--"
parametrów nazwanych ,
%# %"
w definicji funkcji (rysunek 8.13).
%."/
Oto kilka reguł stosowania argumentów
"
w postaci słów kluczowych:
@@
u w odróżnieniu od argumentów pozycyjnych
argumenty w postaci słów kluczowych nie
@@-
muszą być podawane w tej samej kolejności,
Określanie argumentów
Ä"@@-@@
w jakiej występują na liście argumentów
&
@@-@@-
w definicji funkcji;
Ä"@@
u argument pozycyjny nie może następować
&
,?-"@@
po argumencie w postaci słowa kluczowego
A%033
(patrz: rysunek 8.13);
@@- -@@
*!.F 8 !& ( !&
u nie można używać argumentów
Ä
zduplikowanych, równocześnie podając
@@-@@
je jako pozycyjne i jako słowa kluczowe
, " 8
(patrz: rysunek 8.13).
B CD C E
,!# F 8 = "#
Wskazówka
Ä( !& "
@@
u Użycie argumentów w postaci słów
, " 8
kluczowych w wywołaniach funkcji
B CD C E
wbudowanych nie jest dozwolone. W takiej
,!# F 8 = .#
sytuacji Python zgłasza wyjątek ( ' .
Ä !& " #
Rysunek 8.13. Przykłady wywołań funkcji
z argumentami w postaci słów kluczowych i kilka
przykładów błędów popełnianych przy takich
wywołaniach
249
Rozdział 8.
Określanie dowolnej liczby
C
argumentów pozycyjnych
#
Funkcja może pobierać zmienną (czyli taką, która
#
nie jest ustalona z góry) liczbę argumentów
A 8A
pozycyjnych. Kilka z takich funkcji już omawiano
2
(na przykład i , które pobierają listy
argumentów o zmiennej długości). Przy
%%
wywołaniu takiej funkcji Python dopasowuje
;
normalne argumenty pozycyjne (poczÄ…wszy od
?%
lewego), a później umieszcza każdy nadmiarowy
),- -
argument w krotce, która może być wykorzystana
%222222222222
w funkcji.
Rysunek 8.14. Funkcja mean pobiera dowolnÄ…
liczbę argumentów i zwraca ich średnią arytmetyczną
Definiowanie funkcji pobierajÄ…cej
dowolną liczbę argumentów
pozycyjnych
1. Wpisz:
.
Nazwa jest nazwÄ… funkcji,
są parametrami pozycyjnymi (jeśli takie
istnieją), a jest krotką, która uzyskuje
każde nadmiarowe argumenty pozycyjne
( nie jest częścią nazwy parametru).
Wywołanie funkcji z dowolną liczbą
argumentów pozycyjnych
1. Wpisz:
.
Określanie dowolnej liczby argumentów
Nazwa jest nazwÄ… funkcji, sÄ…
zwykłymi argumentami pozycyjnymi (jeśli
takie występują), zaś są
argumentami nadmiarowymi (wyrażeniami),
które są umieszczone w krotce.
Na rysunku 8.14 pokazano funkcjÄ™ obliczajÄ…cÄ…
średnią arytmetyczną dowolnej liczby swoich
argumentów. W skryptach 8.2 i 8.3
przedstawionych w tym rozdziale pokazano
funkcje, które odpowiednio zwracają przecięcie
i złączenie dwóch sekwencji.
250
Funkcje
Skrypt 8.6. Funkcja intersection pobiera dowolnÄ…
Skrypty 8.6 i 8.7 zawierajÄ… zmodyfikowane
liczbę sekwencji i zwraca listę, która zawiera
funkcje obliczające przecięcie i złączenie
pozycje wspólne dla wszystkich jej argumentów
dowolnej liczby sekwencji. Na rysunku 8.15
pokazano przykłady wywołań skryptów 8.6 i 8.7.
( G 8
Wskazówki
&!:16
( . 1%68
u Jeśli do funkcji nie przekazano żadnych
( ! 1868
argumentów nadmiarowych, to staje
(.!8
się domyślnie pustą krotką.
8
u Opis wprowadzania dowolnej liczby
&!## .
argumentów w postaci słów kluczowych
&!
podano w następnym podrozdziale.
u
Zapis wprowadzono w wersji 2.0
Skrypt 8.7. Funkcja union pobiera dowolnÄ… liczbÄ™
języka Python.
Określanie dowolnej liczby argumentów
sekwencji i zwraca listę, która zawiera wszystkie
pozycje pojawiajÄ…ce siÄ™ w jej argumentach
u
W języku Perl argumenty podprogramu
(bez duplikatów)
sÄ… gromadzone w tablicy o nazwie 7#.
W języku C do przechowywania list
argumentów o zmiennej długości używa się
(G 8
i %#.
&!:16
( 8
( . 8
(.&!8
&!## .
&!
,%&
=
,--=
1 &6
,--=
1 &
Ä#( "
Ä!6
Rysunek 8.15. Przykładowe wywołania funkcji ze
skryptów 8.6 i 8.7
251
Rozdział 8.
Określanie
% %--CC
dowolnej liczby argumentów
-
# -
jako słów kluczowych
%- #
%--
Funkcja może pobierać zmienną (czyli taką,
która nie jest ustalona z góry) liczbę argumentów
% %D -
w postaci słów kluczowych, jeśli nazwa jej
E-$ -
ostatniego parametru rozpoczyna siÄ™ od
F -
znaków . Przy wywołaniu takiej funkcji
%%-
Python dopasowuje normalne argumenty
==>-
pozycyjne (poczÄ…wszy od lewego), a potem
%,11>
dopasowuje nadmiarowe argumenty pozycyjne
!8, #!
8-
(patrz: poprzedni podrozdział) i umieszcza
( "8" # &
każdy nadmiarowy argument podany jako
&! &8H
słowo kluczowe w słowniku, który może być
822@
wykorzystany w funkcji. Na rysunku 8.16
855@
pokazano przykład takiej funkcji.
Rysunek 8.16. Funkcja ksiązka gromadzi w słowniku
inne nadmiarowe argumenty w postaci słów
Definiowanie funkcji pobierajÄ…cej
kluczowych i wyświetla pary klucz-wartość
dowolną liczbę argumentów
należące do tego słownika
w postaci słów kluczowych
1. Wpisz nagłówek definicji funkcji:
.
Nazwa jest nazwÄ… funkcji,
to zwykłe parametry pozycyjne funkcji (jeśli
takie występują), jest krotką, która