paulwang 发表于 2023-1-12 16:35:22

timeit()第一个参数要用‘’括起来 为什么

小白刚学到timeit()函数, 看解释里面有说可以可以接受单个变量测试
但是我试了下好像是timeit()第一个参数要用 '' 括起来 为什么呢?
''搞起来后不是变为字符串了吗?
有谁可以解释一下

isdkz 发表于 2023-1-12 16:42:10

本帖最后由 isdkz 于 2023-1-12 16:43 编辑

因为不用字符串的话就会直接调用得到返回值了,而用字符串他会根据你字符串里面的语句帮你去调用,

当然你不用字符串也是可以的,只要你不要让他立即调用就可以了,这个可以用到匿名函数表达式,

所以 timeit 你传入一个函数(注意不是函数调用,而是函数本身)或者字符串都是可以的

timeit('print("test")', number=5)
# 等价于
timeit(lambda:print("test"), number=5)

chinajz 发表于 2023-1-12 16:58:56

import timeit
print("The time taken is ",timeit.timeit(stmt='a=100;b=100;sum=a+b'))
还是指:
print(timeit.timeit('outpt = 50*5'))

paulwang 发表于 2023-1-13 08:23:20

isdkz 发表于 2023-1-12 16:42
因为不用字符串的话就会直接调用得到返回值了,而用字符串他会根据你字符串里面的语句帮你去调用,

当然 ...

是否可以这样理解,也就是说直接调用返回值意味着计算出的时间就不是变量操作花费的时间了。
而变为字符串后则相等。

我总是感觉直接的字符串与变量操作花费时间因该是不一样的。

isdkz 发表于 2023-1-13 08:31:36

本帖最后由 isdkz 于 2023-1-13 08:32 编辑

paulwang 发表于 2023-1-13 08:23
是否可以这样理解,也就是说直接调用返回值意味着计算出的时间就不是变量操作花费的时间了。
而变为字符 ...

如果传入的是字符串的话他会帮你去执行这个字符串里面的语句的,

如果不是字符串的话在传参的时候赋值这些操作都是无效的,

他会当成在传关键字参数,

你传一个字符串他会用 exec() 来执行字符串里面的代码,并计算执行时间

跟你执行的时候并没有什么区别

paulwang 发表于 2023-1-15 22:07:20

isdkz 发表于 2023-1-13 08:31
如果传入的是字符串的话他会帮你去执行这个字符串里面的语句的,

如果不是字符串的话在传参的时候赋 ...

感谢大神,其实我这边看了下应该说 参数 这个具体解释我还没学到,所以看到“”的时候总觉得是电脑应该把它作为一般字符去理解。其实不是, 所以说具体函数中的参数有其对应的格式吧。估计学到后面可能会理解的透彻。
页: [1]
查看完整版本: timeit()第一个参数要用‘’括起来 为什么