Werte übergabe in und aus Funktionen

Code-Stücke können hier veröffentlicht werden.
Antworten
search
User
Beiträge: 67
Registriert: Donnerstag 24. April 2008, 10:03
Wohnort: In Deutschland

Hallo zusammen, bin noch totaler Anfänger was Python betrifft, aber mir gefällt die Sprache sehr gut. Hatte vorher etwas mit Basic, C und C++ zu tun. Habe jetzt aber eine Verständnis Frage oder ich bin einfach nur blöde, keine Ahnung. Ich bekomme es auf jedenfall nicht hin.
Habe hier ein wenig Code: Eine Funktion die ich mehrmals benutzen will!! Variable rein, umwandeln und wieder raus. Aber wie kann ich es denn anstellen, dass ich auch die verschiedenen Werte wieder raus bekomme und nicht nur ein und den gleichen. Habe schon alles mögliche probiert aber keinen Erfolg gehabt. Hat einer eine Idee!!!???

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

#Beginn der Funktion 
def test(b):
    global c
    a = "Test in Funktion!"
    print "In der Funktion: ",a
    c = a + b
    print "In der Funktion, komplett: ",c
    return c
    

a = "Test im Programm!"
print "Vor der Funktion: ",a
# Übergabe der Variablen an die Funktion
test(a)

# Zurück im Hauptprogramm mit den Daten der Funktion
print "Nach der Funktion, komplett-neu:",c
print a
m = "Stefan dazu!!"
# Neuer aufruf der Funktion mit neuen Werten
test(m)
n = c
print c
print a
print m
print n
Wie gesagt, das ist nur ein Beispiel. Ich hoffe ich konnte es so erklären das es auch alle verstanden haben. c hat nach dem zweiten Durchlauf den gleichen Wert wie n, und dass will ich eben nicht haben. c soll so bleiben wie nach dem ersten Durchlauf!! Danke für eure Hilfe!!!
Zuletzt geändert von search am Donnerstag 24. April 2008, 16:05, insgesamt 1-mal geändert.
BlackJack

Natürlich sind `c` und `n` an das selbe Objekt gebunden, dass tust Du ja in Zeile 25 explizit mit der Zuweisung.

Und jetzt vergiss bitte ganz schnell dass es ``global`` überhaupt gibt. Ich vermute mal das löst Deine Verwirrung aus.

Deine Funktion gibt etwas zurück, aber diesen Rückgabewert bindest Du bei keinem Aufruf an einen Namen.
search
User
Beiträge: 67
Registriert: Donnerstag 24. April 2008, 10:03
Wohnort: In Deutschland

Hmmm, OK... global ist also Mist! Dachte ich mir schon fast. Aber wie kann ich das jetzt umbauen, dass ich die verschiedenen Ergebnisse auch speichern kann, die mir die eine Funktion auswirft????
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

```wert = test(...)```

Steht auch in jedem Python-Tutorial drin.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Lass die Funktion alle wichtigen Werte mit return zurueckgeben.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
search
User
Beiträge: 67
Registriert: Donnerstag 24. April 2008, 10:03
Wohnort: In Deutschland

Hab alles probiert, ich glaube ich bin echt zu blöde dazu!!!!
@Rebecca: wie kann ich die Funktion Werte mit return ausgeben lassen wenn sie nicht als global bezeichnet sind? Außerhalb der funktion habe ich doch keinen zugriff auf die Ergebnisse, oder wie?????
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Code: Alles auswählen

def add_one(number):
    return number + 1

a = 1
b = add_one(a)
print a
pribt b
So, und letzt gehst du ein Tutorial lesen, denn das sind Grundlagen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
search
User
Beiträge: 67
Registriert: Donnerstag 24. April 2008, 10:03
Wohnort: In Deutschland

Hallo Leonidas,
entschuldige wenn ich so blöd gefragt habe (aber JETZT habe ich es kapiert)!!! Wie schon geschrieben, ich habe erst mit Python angefangen. Ein bischen im Internet gesurft und durch Zufall bei euch hier gelandet. Zusätzlich habe ich mir das Buch "Python. Grundlagen und Praxis" aus dem Addison-Wesley Verlag besorgt, mehr an Material habe ich noch nicht gefunden. Es gibt zwar genügend im Netz, aber es ist nicht so einfach das gute vom schlechten zu sortieren, wenn du noch selber so wenig Ahnung von der neuen Sprache hast!
Trotzdem noch mal vielen Dank an alle!
Gruß
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

search hat geschrieben:es ist nicht so einfach das gute vom schlechten zu sortieren
Naja, im Zweifelsfall: Das Gute.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
search
User
Beiträge: 67
Registriert: Donnerstag 24. April 2008, 10:03
Wohnort: In Deutschland

Keine Ahnung ob es das gute ist! Ich finde es auf jedenfall ganz gut, aber ich habe auch eure Diskussionen hier im Forum gelesen, wo es über "Gute" und "Schlechte" Bücher geht. Und so wie ihr da schreibt gibt es wohl ganz krasse Unterschiede!!!
Kannst du mir da als Anfänger etwas besonderes Empfehlen, oder eine gute Seite im Internet wo ich etwas lernen kann (außer bei euch natürlich!)!!!
Gruß
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

search hat geschrieben:Kannst du mir da als Anfänger etwas besonderes Empfehlen, oder eine gute Seite im Internet wo ich etwas lernen kann (außer bei euch natürlich!)!!!
Das offizielle Tutorial, Dive info Python (etwas später), möglicherweise auch A Byte of Python (da bin ich mir momentan nicht ganz sicher wie brauchbar das ist) und schleißlich noch "Wie ein Informatiker denken lernen... mit Python".

Magst du jetzt mal deinen ursprünglichen Post editieren und ihm einen sinnvollen Titel geben?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
search
User
Beiträge: 67
Registriert: Donnerstag 24. April 2008, 10:03
Wohnort: In Deutschland

Danke für die Tipps!! Neuer Titel wurde eben vergeben!!
Hier jetzt meine Lösung zum Problem:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

#Beginn der Funktion 
def test_1(b):
    a = "Test in Funktion!" + b
    print "In der Funktion: ", a
    a = a + b
    return a
    
a_1 = "Test im Programm!"
print "Vor der Funktion: ",a_1
o_1 = test_1(a_1)
print "Nach der Funktion, komplett-neu:",o_1

m_2 = "Stefan dazu!!"
n_2= test_1(m_2)
print "2.durchlauf:",n_2
print "1.durchlauf:",o_1
Antworten