Pytanie w sprawie python – Przypisywanie funkcji do zmiennej

42

Powiedzmy, że mam funkcję

<code>def x():
    print(20)
</code>

Teraz chcę przypisać funkcję do zmiennej o nazwiey, więc jeśli użyjęy wywołuje funkcjęx jeszcze raz. jeśli po prostu wykonam zadaniey = x(), wracaNone.

Redagowałem również, ponieważ to, co chcesz tutaj zrobić, toprzypisz funkcję do zmiennej, nieprzypisz zmienną do funkcji. Gareth Latty
Zmodyfikowałem twoje pytanie, aby ograniczyć je dotylko istotne informacje.. Twój entuzjazm jest wspaniały, ale w przyszłości skup się na wyjaśnieniu swojego aktualnego pytania. Li-aung Yip
Myślęlambda   powinien działać, pls. sprawdź moją odpowiedź poniżej. Pengju Zhao

Twoja odpowiedź

5   odpowiedzi
6

y=x() faktycznie przypisujesz y do wyniku wywołania obiektu funkcjix a funkcja ma wartość zwracanąNone. Wywołania funkcji w Pythonie są wykonywane przy użyciu(). Przypisaćx to y więc możesz zadzwonićy tak jak tyx przypisujesz obiekt funkcji x do y jaky=x i wywołaj funkcję za pomocąy()

-1

utwórz funkcję y = x + 1y=lambda x:x+1

wywołać funkcjęy(1) potem wróć2.

1

Składnia

<code>def x():
    print(20)
</code>

jest zasadniczo taki sam jakx = lambda: print(20) (istnieją pewne różnice pod maską, ale w większości praktycznych celów wyniki są takie same).

Składnia

<code>def y(t):
   return t**2
</code>

jest zasadniczo taki sam jaky= lambda t: t**2. Kiedy definiujesz funkcję, tworzysz zmienną, która ma funkcję jako jej wartość. W pierwszym przykładzie ustawiaszx być funkcjąlambda: print(20). Więcx teraz odnosi się do tej funkcji.x() nie jest funkcją, to jestpołączenie funkcji. W pythonie funkcje są po prostu typem zmiennej i mogą być ogólnie używane jak każda inna zmienna. Na przykład:

<code>def power_function(power):
      return  lambda x : x**power
power_function(3)(2)
</code>

Zwraca to 8.power_function jest funkcją, która zwraca funkcję jako wyjście. Kiedy zostanie wywołany3, zwraca funkcję, która kostkuje dane wejściowe, więc kiedyże funkcja jest wywoływana na wejściu2, zwraca 8. Możesz to zrobićcube = power_function(3), i terazcube(2) wróci 8.

12

nie użyj (), ale po prostu nazwy funkcji.

W twoim przypadkudef x(): ...i zmiennasilly_var zrobiłbyś coś takiego:

<code>silly_var = x
</code>

a następnie możesz wywołać funkcję za pomocą

<code>x()
</code>

lub

<code>silly_var()
</code>
77

Po prostu nie wywołujesz funkcji.

<code>>>>def x():
>>>    print(20)
>>>y = x
>>>y()
20
</code>

Nawiasy mówią pythonowi, że wywołujesz funkcję, więc gdy je tam umieścisz, wywołuje ona funkcję i przypisujey wartośćzwrócony przezx (co w tym przypadku jestNone).

@semjaavria Pewnie, metody działają w ten sam sposób - spróbuj. Gareth Latty
@Latty dzięki człowiekowi, to świetnie wiedzieć. ten cały wątek był naprawdę pomocny. jimh
@seeker, aby lepiej zrozumieć swój problem, powinieneś także sprawdzićLevona odpowiedź. Gruber
@seeker Ponieważ twoja funkcja jest wywoływana. Aby uzyskać wynikx(), x musi być uruchomiony. W tym przypadku działa, drukuje20 i wracającNone. Wtedy wynik (None) jest przypisany doy. Funkcje w Pythonie (jak w większości języków) mogą mieć skutki uboczne. Aby wywołać funkcję, aby uzyskać jej wartość zwracaną (lubNone jeśli nie ma wyraźnej wartości zwracanej), funkcja jest wykonywana i występują efekty uboczne. Gareth Latty

Powiązane pytania