eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPython i argumenty funkcji › Re: Python i argumenty funkcji
  • X-Received: by 2002:a37:9183:: with SMTP id t125mr25031904qkd.262.1613571025607; Wed,
    17 Feb 2021 06:10:25 -0800 (PST)
    X-Received: by 2002:a37:9183:: with SMTP id t125mr25031904qkd.262.1613571025607; Wed,
    17 Feb 2021 06:10:25 -0800 (PST)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
    e.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!newsreader4.netcolog
    ne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.
    iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nn
    tp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Wed, 17 Feb 2021 06:10:25 -0800 (PST)
    In-Reply-To: <602d1f3e$0$537$65785112@news.neostrada.pl>
    Complaints-To: g...@g...com
    Injection-Info: google-groups.googlegroups.com; posting-host=213.192.68.153;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 213.192.68.153
    References: <602ce57f$0$523$65785112@news.neostrada.pl>
    <3...@g...com>
    <602d1f3e$0$537$65785112@news.neostrada.pl>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <e...@g...com>
    Subject: Re: Python i argumenty funkcji
    From: Maciek Godek <g...@g...com>
    Injection-Date: Wed, 17 Feb 2021 14:10:26 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    X-Received-Bytes: 3849
    Xref: news-archive.icm.edu.pl pl.comp.programming:215375
    [ ukryj nagłówki ]

    środa, 17 lutego 2021 o 14:51:13 UTC+1 Roman Tyczka napisał(a):
    > W dniu 17.02.2021 o 12:40, Maciek Godek pisze:
    > >> I teraz dlaczego w wywołaniu metody __init__ parametry są przekazane w
    > >> formie jak w definicji czyli *args, **kwargs? W przykładach jakie
    > >> widziałem, a także w wywołaniu _getParameter() są już podane zwyczajnie,
    > >> czyli: args, kwargs.
    > >> Skąd w tym pierwszym wywołaniu i dlaczego są użyte gwiazdki (czyli w
    > >> formie takiej jak w definicji metody/funkcji)?
    > >
    > > Ściśle rzecz biorąc, dlatego, że projektant funkcji _getParameter() tak sobie
    postanowił.
    > >
    > > Argumenty w Pythonie są pomyślane w taki sposób, że jak masz tę gwiazdkę, to ona
    przechwyci do listy dowolnie wiele argumentów. Na przykład:
    > >
    > > def list(*x):
    > > return x
    > >
    > > sprawi, że jak wywołamy
    > >
    > > list(1,2,3)
    > >
    > > to w wyniku dostaniemy listę
    > >
    > > (1,2,3)
    > >
    > > Tak to wygląda w kontekście definicji. Natomiast w kontekście użycia rola
    gwiazdki jest analogiczna, Załóżmy, że mamy taką funkcję:
    > >
    > > def f(x, y, z):
    > > return [x, y, z]
    > >
    > > i do tego mamy listę L=(1,2,3)
    > >
    > > Moglibyśmy sobie wywołać funkcję f w taki sposób:
    > >
    > > f(L[0], L[1], L[2])
    > >
    > > ale jeśli zamiast tego napiszemy
    > >
    > > f(*L)
    > >
    > > to efekt będzie taki sam.
    > A czy nie możemy po prostu zawołać:
    >
    > f(L)
    >
    > ?
    >

    Jak napiszesz f(L), to wywołasz f z jednym argumentem, mianowicie z listą (1,2,3).
    (w powyższym przykładzie to będzie błąd, bo funkcja f spodziewa się trzech
    argumentów)

    Chodzi o to, że operator * przy wywołaniu funkcji rozwija listę argumentów w miejscu
    wywołania.
    Czyli jeżeli L ma 3 elementy, to f(*L) jest równoważne f(L[0], L[1], L[2]),
    jeżeli L ma 4 elementy, to f(*L) jest równoważne f(L[0], L[1], L[2], L[3])
    i tak dalej.

    > ps. skąd się wzięła powszechnie używana nazwa kwargs? kv to bym jeszcze
    > jako key-value rozszyfrował, ale kw?

    od "keyword arguments"

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: