Importierte Funktion wird nicht ausgeführt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Whatgewesen
User
Beiträge: 12
Registriert: Freitag 24. August 2018, 12:15

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!
nezzcarth
User
Beiträge: 1749
Registriert: Samstag 16. April 2011, 12:47

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.
Whatgewesen
User
Beiträge: 12
Registriert: Freitag 24. August 2018, 12:15

@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
Whatgewesen
User
Beiträge: 12
Registriert: Freitag 24. August 2018, 12:15

@nezzcarth

Danke für deine Hilfe. Ich hab den Fehler gefunden :idea: :roll:
Benutzeravatar
miracle173
User
Beiträge: 127
Registriert: Samstag 6. Februar 2016, 00:28

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.
Antworten