Tôi đã kiểm tra câu hỏi this nhưng không thể tìm thấy câu trả lời ở đó. Dưới đây là một ví dụ đơn giản thể hiện trường hợp sử dụng của tôi:IndexError: chỉ mục tuple nằm ngoài phạm vi khi phân tích đối số phương thức
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")
Và kết quả:
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: Tôi đã từ chối sử dụng một phương pháp như vậy (mà kết thúc tốt đẹp str.format()
), vì nó có vẻ là dư thừa. Nhưng nó vẫn còn câu đố tôi, tại sao nó sẽ không hoạt động như mong đợi?
Bạn nói đúng, nhưng 'arguments' là một tuple :) – ppasler
@ppasler, oops. Bạn nói đúng, tất nhiên rồi. – user650881