import是引进外部函数吗_import 在外面和在方法里面有什么区别,性能上有什么差异...

我了解的不够深入,但是你这个测试代码不能反应问题,我自己试了一下

import 的逻辑据我所知是这样的

如果当前引入的包已经被引入过了,那么不会重新引入,而是将其地址复制到当前作用域当中

py2的简单测试

In [1]: import time

In [2]: id(time)

Out[2]: 46466960

In [3]: def impt():

...: import time as t

...: print id(t)

...:

In [4]: impt()

46466960

逆序再来一次

In [1]: def impt():

...: import time as t

...: print id(t)

...:

In [2]: impt()

7866256

In [3]: import time

In [4]: id(time)

Out[4]: 7866256

可以看到,哪怕是在函数内部作用域先进行import,再在外部import,结果还是一样没有进行重复引入.

写成循环重复调用impt,得到的结果也是一样,每次打印的都是同一个内存地址.

然后我们试一下跨文件:

0f386cba0d97937c395f551a051f1f7a.png

5bca02143ff3dfb44424f87a69482bb0.png

5da52c63e379048cd1936ea1862bec1b.png

d7aa5e068da0b663d468ade15657c448.png

贴图片了,可以看到不同文件没什么影响.

通过这个测试我认为,import操作相当于将包引入到解释器当中,下次引入第一步是检查而不是重新引入,这在python交互模式的时候也可以感受到,比如numpy这样大一些的包,第一次引入的时候有一个可以感受到的延迟,再次引入就没有了,因为这次检测到这个包已经存在于这里了,只需要复制内存地址就可以了.

复制地址这个操作还是需要一点时间的,在循环里会有一点点点点点性能损失.

放在文件头位置相当于初始化时加载,放在函数内部可以做到懒加载...

以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值