Seite 1 von 1
dict parameter mit list member verschwindet einfach
Verfasst: Montag 9. Mai 2016, 08:10
von anonym44
Hallo Cracks,
ich habe folgendes Problem:
def func_print(p):
print p
def func(p):
func_print(p)
###
para1 = dict('id' : 1)
func(para1)
Ausgabe:
{'id' : 1}
funktioniert einwandfrei.
folgender QC aber nicht:
def func_print(p):
print p
def func(p):
func_print(p)
###
para1 = dict('id' : [1, 2])
func(para1)
Ausgabe:
None
:K
Re: dict parameter mit list member verschwindet einfach
Verfasst: Montag 9. Mai 2016, 08:15
von /me
Amerika_befreie_uns hat geschrieben:Code: Alles auswählen
para1 = dict('id' : 1)
def func(para1):
print para1 #('id' : 1)
funktioniert einwandfrei.
In welcher Programmiersprache? Schon die erste Zeile sollte dir in Python einen Syntax Error liefern.
Re: dict parameter mit list member verschwindet einfach
Verfasst: Montag 9. Mai 2016, 09:26
von sebastian0202
Vielleicht hat er ja eine Funktion Namens dict geschrieben, welche ohne return Wert arbeitet.
Dann wäre alles Korrekt.
Re: dict parameter mit list member verschwindet einfach
Verfasst: Montag 9. Mai 2016, 10:41
von __deets__
Nein, waere es nicht. Frei stehende Paare mit Doppelpunkt gibt es nicht.
Code: Alles auswählen
>>> def foo(*args):
... pass
...
>>> foo(a:10)
File "<stdin>", line 1
foo(a:10)
^
SyntaxError: invalid syntax
Re: dict parameter mit list member verschwindet einfach
Verfasst: Montag 9. Mai 2016, 11:25
von sebastian0202
Den Doppelpunkt hab ich total außer Acht gelassen. Stimmt natürlich.
Wieso meckert er die Variable a bei dir nicht an?
Demnach ist das ja kein Syntaxfehler und tritt erst zur Laufzeit auf?
Oder geht der Parser die Zeile von hinten nach vorne durch?
@Threadersteller:
###
para1 = dict({'id': [1, 2]})
func(para1)
Re: dict parameter mit list member verschwindet einfach
Verfasst: Montag 9. Mai 2016, 11:35
von BlackJack
@sebastian0202: __deets__ hat keinen Modulquelltext gezeigt, sondern die Ein- und Ausgaben in einer Python-Shell. Da geht der Compiler nicht erst über alle Eingaben. Kann er ja auch gar nicht, denn er kann ja nicht in die Zukunft schauen was als nächstes eingegeben wird.
Re: dict parameter mit list member verschwindet einfach
Verfasst: Montag 9. Mai 2016, 11:41
von sebastian0202
Ja, konnte das eben nachvollziehen. Der Syntaxfehler ploppt eben vor dem NameError auf.
Ist ja auch verständlich.
Re: dict parameter mit list member verschwindet einfach
Verfasst: Montag 16. Mai 2016, 08:42
von anonym44
Habe mich leicht verschrieben:
mit dict ist {} gemeint.
ich habe folgendes Problem:
def func_print(p):
print p
def func(p):
func_print(p)
###
para1 = {'id' : 1}
func(para1)
Ausgabe:
{'id' : 1}
funktioniert einwandfrei.
folgender QC aber nicht:
def func_print(p):
print p
def func(p):
func_print(p)
###
para1 = {'id' : [1, 2]}
func(para1)
Ausgabe:
None
:K
Re: dict parameter mit list member verschwindet einfach
Verfasst: Montag 16. Mai 2016, 08:48
von Sirius3
@Amerika_befreie_uns: Du hast irgendetwas anderes gemacht. Hier funktionierts:
Code: Alles auswählen
>>> def func_print(p):
... print p
...
>>> def func(p):
... func_print(p)
...
>>> para1 = {'id' : [1, 2]}
>>> func(para1)
{'id': [1, 2]}