1

我有以下代码

f = open('BigTestFile','w');
str = '0123456789'
for i in range(100000000):
    if i % 1000000 == 0:
        print(str(i / 1000000) + ' % done')
    f.write(str)
f.close()

当我运行它时,我得到了这个TypeError

Traceback (most recent call last):
  File "gen_big_file.py", line 8, in <module>
        print(str(i / 1000000) + ' % done')
TypeError: 'str' object is not callable

这是为什么?怎么修?

4

5 回答 5

10

将变量称为str. 它正在遮蔽str内置功能。

于 2013-07-31T06:39:50.693 回答
7

这是因为您覆盖了str第 3 行的函数。

str()是 Python 中的一个内置函数,它负责返回一个对象的良好字符串表示。

将第 3 行从

str = '0123456789'

number_string = '0123456789'
于 2013-07-31T06:37:43.897 回答
2

您覆盖str了通常是字符串的构造函数。

"{} % done".format(i)如果你真的不想改变它,你可以改变这条线。

于 2013-07-31T06:38:48.490 回答
0

如果您坚持str class用实际字符串覆盖实例化器,那么替换str(i)"".__class__(i)将修复错误。

于 2013-07-31T06:45:51.627 回答
0

首先,如果你想访问i某事物的第 th 元素,你需要使用[i]and not (i)。其次,正如其他人已经提到的,不要覆盖str获取任何对象的字符串表示的函数。

于 2013-07-31T07:40:51.783 回答