PC Hard- und Software
›
Thread
python: Übergabeparameter Funktion
ZR
Zo R.
(hsch1978)
OP
18.03.2024 11:31
#7626076
Hallo,
in eine Funktion werden 10 Parameter übergeben. Dies ist allerdings sehr unübersichtlich. Wie kann die Übergabe dieser Parameter über ein Referenz realisiert werden?
1
parameters: ClassSetupParameters = step . input [ "param" ]
2
3
arg0 = parameters . value1
4
arg1 = parameters . value2
5
arg2 = parameters . value3
6
arg3 = parameters . value4
7
arg4 = parameters . value5
8
arg5 = parameters . value6
9
arg6 = parameters . value7
10
arg7 = parameters . value8
11
arg8 = parameters . value9
12
arg9 = parameters . value10
13
14
response = write_parameters ( arg0 , arg1 , arg2 , arg3 , arg4 , arg5 , arg6 , arg7 , arg8 , arg9 )
warum nicht einfach
write_parameters(parameters)
und fertig?
Bei mir sind solche Parameter ggf eine Liste
1
#!/usr/bin/python3
2
# -*- coding: UTF-8 -*-
3
# vim:fileencoding=UTF-8:ts=4
4
5
def func ( * args , ** kwargs ):
6
for i , v in enumerate ( args ):
7
print ( i , type ( v ), v )
8
for k , v in kwargs . items ():
9
print ( k , type ( v ), v )
10
11
func ( 1 , 2 , ' Hallo ' , [ 9 , 8 , 7 ], foo = 6 , bar = ' 777 ' )
RD
Re D.
Gast
18.03.2024 14:00
#7626190
Stephan S. schrieb:
Bei mir sind solche Parameter ggf eine Liste
Oder noch besser ein Objekt!
Das Beispiel zeigt mal wieder, das man auch in Python hässlichen Code schreiben kann.
RD
Re D.
Gast
18.03.2024 14:09
#7626203
Sven B. schrieb:
warum nicht einfach
write_parameters(parameters)
und fertig?
Wenn es im Übrigen darum geht, die Attribute eines Objekts auszugeben, geht das viel eleganter, wenn man mit str und dir, und getattr arbeitet.
ZR
Zo R.
(hsch1978)
OP
18.03.2024 14:11
#7626204
Hast du dazu ein Beispiel?
Um Attribute eines Objekts mit dir und getattr auszugeben? Das ist wirklich eine perfekte Stackoverflow- oder ChatGPT-Frage. Dazu gibts tausende Treffer.
Stephan S. schrieb:
Bei mir sind solche Parameter ggf eine Liste
Er hat doch schon ein Objekt. Warum jetzt dadraus umständlich eine Liste machen, nur um dann in der Funktion in den Genuss zu kommen, die Parameter nach Index statt nach Namen wieder mühsam aus der Liste herauszuklauben?
ZR
Zo R.
(hsch1978)
OP
18.03.2024 14:33
#7626232
Danke für Eure Hilfe.
Ich habe einen Weg gefunden. Mit set attribute und getattr werde ich das lösen.
Zo R. schrieb:
Danke für Eure Hilfe.
Ich habe einen Weg gefunden. Mit set attribute und getattr werde ich das
lösen.
Verzeihung, aber die Verwendung von setattr() und getattr() ist meistens ein Anzeichen für ein... merkwürdiges Softwaredesign.
Wenn man in Python z.B. eine Liste l mit drei Elementen hat, und möchte diese Elemente einer Funktion mit drei Parametern übergeben, dann kann man beim Aufruf in der Parameterliste *l benutzen (den Auspackoperator) um alle drei Parameter aus der Liste zu befüllen.
LG, Sebastian
Ein T. schrieb:
Zo R. schrieb:
Danke für Eure Hilfe.
Ich habe einen Weg gefunden. Mit set attribute und getattr werde ich das
lösen.
Verzeihung, aber die Verwendung von setattr() und getattr() ist meistens
ein Anzeichen für ein... merkwürdiges Softwaredesign.
Naja, für eine generische Logging- oder Debug-Funktion ist das sicherlich geeignet.
ZR
Zo R.
(hsch1978)
OP
18.03.2024 14:58
#7626270
Macht keine Wissenschaft daraus. Hauptsache ich habe einen Weg gefunden.
Zo R. schrieb:
Macht keine Wissenschaft daraus. Hauptsache ich habe einen Weg gefunden.
Wenn das Dein Anspruch ist... wie schon jemand weiter oben gesagt hat: man kann auch in Python schlechten Code schreiben, wenn man sich Mühe gibt.
↑ Nach oben
← Zurück zu PC Hard- und Software
Antwort schreiben