• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python nie wiem co zwraca funkcja

Object Storage Arubacloud
+2 głosów
151 wizyt
pytanie zadane 12 listopada 2022 w Python przez niezalogowany

Jaką funckcję zwraca fucnkcja func_with_wrapper?

 

import datetime
import functools

logFilePath = r'd:\function_log.txt'

def CreateFunctionWithWrapper(func):
    def func_with_wrapper(*args,**kwargs):
        file = open(logFilePath,"a")
        file.write("-"*20 + "\n")
        file.write('Function "{}"started at {}\n'.format(func.__name__,datetime.datetime.now().isoformat()))
        file.write('Follwoiung argumkents were used:\n')
        file.write("".join("{}".format(x) for x in kwargs.items()))
        file.write("\n")
        file.write("".join("{}={}".format(k,v) for (k,v) in kwargs.items()))
        file.write("\n")
        result = func(*args,**kwargs)
        file.write('Function rteturned {}"\n'.format(result))
        file.close()
        return result
    return func_with_wrapper



@CreateFunctionWithWrapper
def ChangeSalary(emp_name,new_salary,is_bonus=False):
    print('CHANGING SALARY FOR {} TO {} AS BONUS={}'.format(emp_name,new_salary,is_bonus))
    return new_salary

print(ChangeSalary('Johnson',2000,True))

 

komentarz 12 listopada 2022 przez reaktywny Nałogowiec (41,090 p.)
Tutaj tworzysz tzw. dekorator.
komentarz 13 listopada 2022 przez VBService Ekspert (254,320 p.)
edycja 13 listopada 2022 przez VBService

BTW, w linii 12 IMO zamiast kwargs.items() powinno być args  [ on-line ]

1 odpowiedź

0 głosów
odpowiedź 12 listopada 2022 przez Wiciorny Ekspert (270,650 p.)
result = func(*args,**kwargs)

rezultatem jest  wynik dzialania funkcji przekazanej jako argument  do funkcji zewnętrznej 

CreateFunctionWithWrapper(func):

oraz argumentów przekazanych funkcją 

 def func_with_wrapper(*args,**kwargs):

natomiast argumenty definiuje : 

*argspozwala nam przekazać zmienną liczbę argumentów innych niż słowa kluczowe do funkcji Pythona. W funkcji powinniśmy użyć gwiazdki ( *) przed nazwą parametru, aby przekazać zmienną liczbę argumentów.

natomiast ... 

**kwargspozwala nam przekazać zmienną liczbę argumentów słów kluczowych do funkcji Pythona. W funkcji używamy podwójnej gwiazdki ( **) przed nazwą parametru, aby wskazać ten typ argumentu.

natomiast co do słów kluczowych : 
Słowa kluczowe to specjalne ciągi, które są zarezerwowane przez język programowania. Ciągów tych nie można używać jako nazw zmiennych zdefiniowanych przez użytkownika ani innych nazw identyfikatorów. 
https://gocoding.org/pl/s%C5%82owa-kluczowe-Pythona/

Więc ostatecznie rezultat zwraca wewnętrznym wywołaniem result - to rezultat funkcji func o wskazanych parametrach 

Tu masz też link do notki w zakresie funkcji zwracanych przez funkcje https://inthou.pl/python-4-funkcja-zwracajaca-funkcje/

komentarz 13 listopada 2022 przez VBService Ekspert (254,320 p.)
edycja 13 listopada 2022 przez VBService

Ciągów tych nie można używać jako nazw zmiennych zdefiniowanych przez użytkownika ani innych nazw identyfikatorów. 
https://gocoding.org/pl/s%C5%82owa-kluczowe-Pythona/

polskie tłumaczenie tabelki na podanej stronie  crying 

ciekawe słowo kluczowe - czerwona ramka wink

czyli, np. zapis

for i in some_list:

jest niedozwolony przez użycie " i "  wink

https://gocoding.org/python-keywords/

Podobne pytania

+1 głos
2 odpowiedzi 205 wizyt
0 głosów
1 odpowiedź 390 wizyt
pytanie zadane 1 lipca 2020 w Java przez kasia7777 Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 945 wizyt
pytanie zadane 7 listopada 2017 w C i C++ przez antek782 Początkujący (490 p.)

92,623 zapytań

141,478 odpowiedzi

319,821 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...