Ich habe bereits this Frage überprüft, konnte aber keine Antwort finden. Hier ist ein einfaches Beispiel, das mein Anwendungsfall zeigt:IndexError: Tupel-Index außerhalb des Bereichs beim Parsen von Methodenargumenten
def log(*args):
message = str(args[0])
arguments = tuple(args[1:])
# message itself
print(message)
# arguments for str.format()0
print(arguments)
# shows that arguments have correct indexes
for index, value in enumerate(arguments):
print("{}: {}".format(index, value))
# and amount of placeholders == amount of arguments
print("Amount of placeholders: {}, Amount of variables: {}".format(message.count('{}'), len(arguments)))
# But this still fails! Why?
print(message.format(arguments))
log("First: {}, Second: {}, Third: {}, Fourth: {}", "asdasd", "ddsdd", "12312333", "fdfdf")
Und die Ausgabe:
First: {}, Second: {}, Third: {}, Fourth: {}
('asdasd', 'ddsdd', '12312333', 'fdfdf')
0: asdasd
1: ddsdd
2: 12312333
3: fdfdf
Amount of placeholders: 4, Amount of variables: 4
Traceback (most recent call last):
File "C:/Users/sbt-anikeev-ae/IdeaProjects/test-this-thing-on-python/test-this-thing.py", line 12, in <module>
log("First: {}, Second: {}, Third: {}, Fourth: {}", "asdasd", "ddsdd", "12312333", "fdfdf")
File "C:/Users/sbt-anikeev-ae/IdeaProjects/test-this-thing-on-python/test-this-thing.py", line 10, in log
print(message.format(arguments))
IndexError: tuple index out of range
PS: ich schon geweigert, ein solches Verfahren unter Verwendung von (die str.format()
Wraps), wie es scheint zu viel zu sein. Aber es verwirrt mich immer noch, warum würde das nicht wie erwartet funktionieren?
Sie haben Recht, aber 'arguments' ist ein Tupel :) – ppasler
@ppasler, oops nicht erwartet. Du hast natürlich Recht. – user650881