Seite 1 von 1

Importierte Funktion wird nicht ausgeführt

Verfasst: Freitag 31. August 2018, 16:31
von Whatgewesen
Hallo zusammen,

ich habe folgenden Code geschrieben.

Code: Alles auswählen

import Testfunktion_02


def liste_übergeben(liste, funktion):
	print("\n-----")
	for element in liste:
		print(element)
	print("-----\n")
	
	
	
liste = [1, 2, 3, 4, 5]


liste_übergeben(liste, Testfunktion_02)

# Testfunktion_02
def funktion_1 (zahl):
	print(zahl * 2)
	
def main():
	print("Hallo")
	
if __name__ == "__main__":
	main()
Wenn ich ihn nun auf der Konsole ausgeben lasse, passiert jedoch das:

Code: Alles auswählen

-----
1
2
3
4
5
-----
Ich habe doch in die Testfunktion geschrieben, dass alle Werte verdoppelt werden sollen. Wieso geschieht dass denn hier nicht, ich habe doch die Funktion korrektermaßen importiert.

Danke für Eure Hilfe!

Re: Importierte Funktion wird nicht ausgeführt

Verfasst: Freitag 31. August 2018, 16:53
von nezzcarth
Ich finde dein Beispiel leider recht verwirrend. Mit 'import <name>' importiert man ja komplette Module, d.h. in deinem Fall ein Modul namens "Testfunktion_02.py". Daher ist der Name unpassend gewählt, denn das ist ja keine Funktion. Ein Modul kann höchstens Funktionen enthalten. Die würdest du dann als 'Testfunktion_02.<funktions_name>(..)' aufrufen.

Wozu ist denn der Abschnitt:

Code: Alles auswählen

# Testfunktion_02
def funktion_1 (zahl):
	print(zahl * 2)
gedacht? Soll das nur ein Beispiel sein, um zu zeigen, wie die Funktion aus dem anderen Modul, aussieht, oder soll das irgendetwas machen? Denn eigentlich ist das nur eine Funktion, die nirgendwo aufgerufen wird, mit einem Kommentar davor.

In der Zeile 'liste_übergeben(liste, Testfunktion_02)') übergibst du dann das Modul als Parameter und verwendest es in der Funktion wie eine Funktion; das ist sehr ungewöhnlich.

Ansonsten: Die Listenerzeugung und der Listenaufruf gehören in die 'main'-Funktion. Eingerückt wird per Konvention mit vier Leerzeichen.

Re: Importierte Funktion wird nicht ausgeführt

Verfasst: Freitag 31. August 2018, 17:06
von Whatgewesen
@nezzcarth

Der von dir ausgewählte Code sollte nur verdeutlichen, was die Testfunktion macht.

Ich würde gerne die Funktion aus Testfunktion übergeben, welche einfach alle Zahlen der Liste verdoppelt. Wie kann man das tun, da er mit im Moment einfach nur die Zahlen der Liste ausgibt

Re: Importierte Funktion wird nicht ausgeführt

Verfasst: Freitag 31. August 2018, 17:13
von Whatgewesen
@nezzcarth

Danke für deine Hilfe. Ich hab den Fehler gefunden :idea: :roll:

Re: Importierte Funktion wird nicht ausgeführt

Verfasst: Sonntag 2. September 2018, 06:30
von miracle173
Whatgewesen hat geschrieben: Freitag 31. August 2018, 16:31 Hallo zusammen,

ich habe folgenden Code geschrieben.

Code: Alles auswählen

import Testfunktion_02


def liste_übergeben(liste, funktion):
	print("\n-----")
	for element in liste:
		print(element)
	print("-----\n")
	
	
	
liste = [1, 2, 3, 4, 5]


liste_übergeben(liste, Testfunktion_02)

# Testfunktion_02
def funktion_1 (zahl):
	print(zahl * 2)
	
def main():
	print("Hallo")
	
if __name__ == "__main__":
	main()
Wenn ich ihn nun auf der Konsole ausgeben lasse, passiert jedoch das:

Code: Alles auswählen

-----
1
2
3
4
5
-----
Ich habe doch in die Testfunktion geschrieben, dass alle Werte verdoppelt werden sollen. Wieso geschieht dass denn hier nicht, ich habe doch die Funktion korrektermaßen importiert.

Danke für Eure Hilfe!
Die Funktion 'liste_übergeben' tut genau das, was du verlangst. Es druckt die Elemente der Liste 'liste'aus, die ihr übergeben wird. Der Parameter 'funktion' wird in 'liste_übergeben' nicht weiter verwendet.