Ansicht umschalten
Avatar von Member of the Inner Party
  • Member of the Inner Party

mehr als 1000 Beiträge seit 27.02.2004

Python varargs fuer Funktionen

Folgende Definition:

class X( object ):
  def f( self, x, *args ):
    print x % args

X().f( None, '%s %s', 'a', 'b' )

sollte dann

a b

ausdrucken. Stattdessen: 

TypeError: not enough arguments for format string

Aendere ich die Definition in:

class X( object ):
  def f( self, x, *args ):
    print args
    print type( args )

dann ergibt obiger Aufruf:

(('a', 'b'),)
<type 'tuple'>

Um Klarheit zu verschaffen:

class X( object ):
  def f( self, x, *args ):
    print args
    print type( args )
    print args[0]
    print type( args[0] )
    print m % args[0]

Obiger Aufruf:

(('a', 'b'),)
<type 'tuple'>
('a', 'b')
<type 'tuple'>
a b

???

Ich dachte immer, *args ergaebe ein Tupel der
Elemente, kein Tupel eines Tupels der Elemente?

Oder habe ich etwas uebersehen?

O'Brien

*verwirrt*

Bewerten
- +
Ansicht umschalten