Rešeno: Kako pozvati bilo koju funkciju sa njenim imenom kao stringom

Posljednje ažuriranje: 09/11/2023

Glavni problem vezan za pozivanje funkcije sa njenim imenom kao stringom je taj što to može dovesti do sigurnosnih propusta. To je zato što kodom mogu manipulirati zlonamjerni korisnici, koji mogu ubaciti vlastiti kod u niz i izvršiti ga. To bi im moglo omogućiti pristup osjetljivim podacima ili čak izvršavanje zlonamjernog koda na serveru. Osim toga, to otežava otklanjanje grešaka jer se kodu ne može lako pratiti do njegovog izvora.

You can use the built-in function getattr() to call a function with its name as a string.

Example: 
def add(a, b): 
	return a + b 
  
# Driver code 
func = 'add' # String containing name of the function 
x, y = 2, 3 # Arguments to pass to the function 
  
# Calling the function using getattr() method 
getattr(sys.modules[__name__], func)(x, y)

Red 1: Ova linija definira funkciju zvanu add koja uzima dva parametra, a i b, i vraća zbir ta dva parametra.

Red 5: Ovaj red kreira string varijablu pod nazivom func koja sadrži naziv funkcije “add”.

Red 6: Ova linija kreira dvije varijable x i y sa vrijednostima 2 i 3 respektivno. Oni će se koristiti kao argumenti za funkciju.

Red 8: Ovaj red koristi getattr() za pozivanje funkcije sa njenim imenom kao stringom. Prvi argument je sys.modules[__name__], koji se koristi za pristup svim funkcijama u trenutnom modulu (u ovom slučaju, to je __name__). Drugi argument je func, koji sadrži ime naše željene funkcije (u ovom slučaju to je “add”). Konačno, prosljeđujemo x i y kao argumente za poziv naše funkcije.

Šta je funkcija u Pythonu

Funkcija u Pythonu je blok koda koji obavlja određeni zadatak. Može uzeti argumente (inpute) i vratiti vrijednosti (izlazi). Funkcije pomažu da se veliki programi razbiju na manje komade kojima se lakše upravlja. Oni također omogućavaju ponovnu upotrebu koda, što pomaže u smanjenju količine vremena potrebnog za razvoj i otklanjanje grešaka programa.

Kako mogu pozvati funkciju dajući njeno ime kao string

U Pythonu možete pozvati funkciju dajući njeno ime kao string pomoću funkcije eval(). Funkcija eval() uzima string kao argument i procjenjuje ga kao Python izraz. Na primjer, ako imate niz koji sadrži ime funkcije, možete koristiti funkciju eval() da pozovete tu funkciju:

my_func = "moja_funkcija"
eval(moja_funkcija)

Slični postovi: