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.
anonym44
Montag 9. Mai 2016, 08:10
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
Zuletzt geändert von anonym44 am Montag 9. Mai 2016, 08:19, insgesamt 3-mal geändert.
/me
User
Beiträge: 3556 Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn
Montag 9. Mai 2016, 08:15
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.
sebastian0202
User
Beiträge: 168 Registriert: Montag 9. Mai 2016, 09:14
Wohnort: Berlin
Montag 9. Mai 2016, 09:26
Vielleicht hat er ja eine Funktion Namens dict geschrieben, welche ohne return Wert arbeitet.
Dann wäre alles Korrekt.
__deets__
User
Beiträge: 14543 Registriert: Mittwoch 14. Oktober 2015, 14:29
Montag 9. Mai 2016, 10:41
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
sebastian0202
User
Beiträge: 168 Registriert: Montag 9. Mai 2016, 09:14
Wohnort: Berlin
Montag 9. Mai 2016, 11:25
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)
BlackJack
Montag 9. Mai 2016, 11:35
@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.
sebastian0202
User
Beiträge: 168 Registriert: Montag 9. Mai 2016, 09:14
Wohnort: Berlin
Montag 9. Mai 2016, 11:41
Ja, konnte das eben nachvollziehen. Der Syntaxfehler ploppt eben vor dem NameError auf.
Ist ja auch verständlich.
anonym44
Montag 16. Mai 2016, 08:42
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
Sirius3
User
Beiträge: 17754 Registriert: Sonntag 21. Oktober 2012, 17:20
Montag 16. Mai 2016, 08:48
@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]}