2017-08-25 3 views
0

In Python versuche ich eine Funktion zu machen, die 1 oder mehr Argumente akzeptieren kann. Der Einfachheit halber wollen wir sagen, dass ich eine Funktion machen wollen, dass alle Argumente druckt die print_all("A", "B")Python: Akzeptiere mehrere Argumente

def print_all(**arguments**): 
    print(arg1, arg2, ..., argN) 

so ausgeben würde AB geben werden.

Die Anzahl der übergebenen Argumente könnte 1 oder mehr Zeichenfolgen sein.

Was ist der beste Weg, dies zu tun?

+0

[werfen Sie einen Blick hier] (https://stackoverflow.com/questions/3394835/args-and-kwargs) – bracco23

+0

Mögliche Duplikat (https [\ * args und \ * \ * kwargs?]: //stackoverflow.com/questions/3394835/args-and-kwargs) – Netwave

Antwort

0

Sie suchen nach der Verwendung von *args, die es Ihnen ermöglicht, mehrere Argumente zu übergeben, ohne sich Gedanken über die Anzahl der Argumente zu machen, die Sie übergeben möchten.

Musterbeispiel:

>>> def arg_funct(*args): 
...  print args 
... 
>>> arg_funct('A', 'B', 'C') 
('A', 'B', 'C') 
>>> arg_funct('A') 
('A',) 

Hier ist diese Funktion kehrt das Tupel der Parameter an die Funktion übergeben.

Für weitere Informationen überprüfen: What does ** (double star) and * (star) do for parameters?

0

einfach:

def print_all(*args): 
    for arg in args: 
     print(arg) 
2

* args und ** kwargs Einräumung keine Argumente zu übergeben, Positions (*) und Stichwort (**) mit der Funktion

>>> def test(*args): 
...  for var in args: 
...   print var 
... 
>>> 

Für keine der variablen

>>> test("a",1,"b",2)   
a 
1 
b 
2 

>>> test(1,2,3) 
1 
2 
3 

Für Liste & dict

>>> a = [1,2,3,4,5,6] 
>>> test(a) 
[1, 2, 3, 4, 5, 6] 
>>> b = {'a':1,'b':2,'c':3} 
>>> test(b) 
{'a': 1, 'c': 3, 'b': 2} 

For detail

0

über den Splat-Operator (*) ein oder mehr Positions Argumente zu übergeben. Fügen Sie sie dann als Zeichenfolgen in Ihre Funktion ein, um das Ergebnis zu drucken.

def print_all(*args): 
    print("".join(str(a) for a in args)) 

>>> print_all(1, 2, 3, 'a') 
123a 
Verwandte Themen