2017-10-20 5 views
1

Lassen Sie uns sagen, dass ich eine Funktion bin Aufruf folgende ArgumenteWie behebt man das Funktionsproblem, während man es dynamisch macht?

Function(char1, char2, char3, char4, Number) 

, wo die ersten vier Begriffe chars gegeben und die letzte repräsentieren eine int, ich könnte mehr Zeichen hinzufügen, so dass die Funktion nicht statisch sein kann. Die Hauptfunktion beginnt wie

def Function(*args): 
    table_line = "" 
    for x in range(Number/2): 

aber durch die Funktion args gibt es nicht mehr weiß, dass es die mitgelieferte Argument Nummer in dieser dritten Zeile verwendet werden soll.

Antwort

2

Pass number als erstes Argument:

def func(number, *char): 
    ... 
1

Wenn Sie mit python3.x (was du bist jetzt nicht, wie Sie in den Kommentaren erwähnt), könnten Sie Ihre args mit * iterable Auspacken entpacken, bevor Sie sie verwenden:

def function(*args): 
    *chars, number = args 
    ... 

Es funktioniert wie folgt:

In [8]: *a, b = (1, 2, 3, 4) 

In [9]: a 
Out[9]: [1, 2, 3] 

In [10]: b 
Out[10]: 4 

Jedes Element in argsmit Ausnahme der letzten an chars geschickt, das wird jetzt ein list. Sie können jetzt die Variable number als separate Variable verwenden.

+0

vergessen zu erwähnen, python2.7, ist diese Methode nicht auf Python unterstützt <3. – Tim

+0

@Tim Uff, diese Details sind wichtig. Gehen Sie für was [diese Antwort] (https://stackoverflow.com/a/46843396/4909087) dann vorschlägt. –

+0

Danke für die Zeit, die du getan hast, um auf Tho zu antworten. – Tim