Python timeit.timeit返回科学记数法中的时间?

Python timeit.timeit返回科学记数法中的时间?,python,timeit,Python,Timeit,我正在使用timeit.timeit函数为我自己的一个函数计时,但返回的时间是科学记数法 import timeit def func(): ... print(timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000)/100000) 这将返回类似于3.56301226666666E-05的内容。我以前使用过timeit,但这种情况从未发生过。

我正在使用
timeit.timeit
函数为我自己的一个函数计时,但返回的时间是科学记数法

import timeit

def func():
    ...

print(timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000)/100000)

这将返回类似于
3.56301226666666E-05的内容。我以前使用过
timeit
,但这种情况从未发生过。有人知道它为什么这样做吗?

3.563012266666e-05
并不是真正的指数形式;这只是科学符号
3.563012266666E-05
等于
0.00003560122666666
。科学记数法用于表示非常大或非常小的数字。

这是因为你将它除以1000。如果不这样做,则输出如下所示:

>>> t = timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000)/100000
>>> f"{t:.20f}"
打印(timeit.timeit(stmt=“func()”,setup=“from”\uuuu main\uuuuu导入func”,编号=100000)) >>> 0.009756448998814449
Python将使用科学记数法显示某个范围内的任何大的或小的数字

import timeit

def func():
    ...

print(timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000)/100000)
如果希望像以前一样看到结果,可以像下面这样利用Python的字符串格式:

>>> t = timeit.timeit(stmt="func()", setup="from __main__ import func", number=100000)/100000
>>> f"{t:.20f}"
在这里,
:.20
确保它将打印最多20位小数的数字。但是,请记住,这样做是将浮点值转换为字符串。这将返回:

>>> '0.00000009274555020966'

这可能是因为您在检索时间后进行了除法。可以在使用f字符串(f“{time:.4f}”)打印值时设置其格式
.4f
告诉python将值打印为带4位小数点的浮点,您可以根据需要将其设置为小或大。

因此,基本上我的函数是“正常快速注册”,而不一定是“正常”。您刚刚创建了一个运行非常快的函数。这可能是因为您在检索时间后进行了除法。您可以使用f字符串(
f“{time:.4f}”
)打印值时设置其格式。@LucasFord
.4f
的作用是什么?告诉python将值打印为小数点后4位的浮点,您可以将其设置为所需位数的大小。@LucasFord ty,这正是我所需要的:)我将它除以以获得每次执行的平均运行时间。是的,如果您希望看到与以前一样的时间,我已经更新了答案。然而,有一个警告是,当您这样表示它时,float将变成一个字符串。