当前位置: 首页 > news >正文

有没有做网站的联系方式谷歌网页版入口

有没有做网站的联系方式,谷歌网页版入口,app拉新推广平台有哪些,领导交给你一个网站你该怎么做在 Python 中,大部分人都应该都遇到过循环导入的问题。 循环导入是指两个文件各自尝试导入另一个文件(模块),当一个模块没有完全初始化时会导致失败。解决这种情况的最好方法是将代码分层组织,这样导入的关系就会自然…

在 Python 中,大部分人都应该都遇到过循环导入的问题。

循环导入是指两个文件各自尝试导入另一个文件(模块),当一个模块没有完全初始化时会导致失败。解决这种情况的最好方法是将代码分层组织,这样导入的关系就会自然地朝着一个方向流动。但是更加简单的方式只需更改使用的 import 语句的样式即可。

# one.py
from two import func_twodef func_one():func_two()
# two.py
from one import func_onedef do_work():func_one()def func_two():print("Hello, world!")
# main.py
from two import do_work
do_work()

如果我们运行 main.py , 会得到如下的报错信息:

Traceback (most recent call last):File "/mnt/data/python/main.py", line 2, in <module>from two import do_workFile "/mnt/data/python/two.py", line 2, in <module>from one import func_oneFile "/mnt/data/python/one.py", line 2, in <module>from two import func_two
ImportError: cannot import name 'func_two' from partially initialized module 'two' (most likely due to a circular import) 

当 Python 导入一个模块时,它会逐行执行该文件。文件中的每个全局变量(包括函数和类)都成为正在构造的模块对象的一个属性。
two.py 中,我们在第2行从 one.py 导入一个函数。此时,已经有了onetwo模块,但是它们还没有属性,因为还没有定义任何东西。模块two最终会包含 do_workfunc_two函数,但是还没有执行到这些 def 语句,所以它们暂时不存在。
与函数调用一样,当 import 语句运行时,它开始执行导入的文件,直到导入完成后才返回当前文件。

当导入one.py时,它的第2行尝试从two模块导入func_two。正如我们刚才所说的,two模块已经存在,但是还没有定义func_two,这就导致了错误。

解决这个问题的方法也很简单:我们不需要从模块导入具体的函数名称,而是可以导入整个模块,然后使用导入的模块中的函数,如下所示:

# one.py
import two              # was:  from two import func_twodef func_one():two.func_two()      # was:  func_two()
# two.py
import one              # was:  from one import func_onedef do_work():one.func_one()      # was:  func_one()def func_two():print("Hello, world!")
# main.py
from two import do_work
do_work()

这次就可以正常运行 main.py了。

这次能够正常运行是因为 two.py 在第2行导入one模块,然后 one.py 在第2行导入two模块,这样是可以正常导入的,因为这两个模块都存在。就像上面提到的那样,它们此刻是空的,但是现在我们没有导入某个具体的函数名称。在完成所有导入之后,onetwo模块就都会包含了他们的内部的函数名称,我们可以使用模块名来引用其中的函数了。

这里的关键点是 from two import func_two 语句在导入期间尝试查找 func_two(在它存在之前)。通过使用import two将函数名称查找延迟到函数体内,可以让所有模块完全初始化,避免循环导入的错误。

正如在开头提到的,修复循环导入的最佳方法是对代码结构进行优化,这样模块就不会相互依赖。但这样在代码比较复杂时的改动会非常大,使用上面提到的方法可以暂时解决问题。

http://www.ds6.com.cn/news/86129.html

相关文章:

  • 温州网站建设模板总部推广商
  • sem推广软件哪家好seo交流网
  • 固镇县住房和城乡建设局网站seo在线教学
  • 网站建设的编程技术seo网络营销公司
  • wordpress个人中心打不开上海seo有哪些公司
  • 开发区网站建设工作管理办法seo综合查询怎么进入网站
  • 石家庄网站建设推广公司哪家好百度推广的几种方式
  • 常平网站建设公司海外广告投放公司
  • 临沂网站建设找谁网站在线推广
  • 公司网站建设工作总结全国教育培训机构平台
  • 2016网站谷歌权重百度应用商店下载安装
  • 如何做电影网站挣钱网络科技公司网站建设
  • 邯郸网站建设报价互联网广告联盟
  • 安徽网站建设qq群推广方法
  • 网站建设的经济社会效益网站策划书
  • 龙泉公路建设投资有限公司网站新浪体育最新消息
  • 网站建设开发技术类型网络营销竞价推广
  • 广告设计制作公司网站怎么让付费网站免费
  • 外网搭建seo工资一般多少
  • 有范app的网络营销方式网站seo优化排名
  • 机械免费网站制作国内搜索引擎排名第一
  • 网站服务器ip地址怎么查品牌营销策略分析
  • 网站建设怎么付费在线培训
  • 佛山做外贸网站服务seo sem是什么
  • seo网站内容优化网络建站流程
  • 社交网站 模板常见的微信营销方式有哪些
  • 产品review网站怎么做西安seo排名
  • 那些网站可以做行测题韶关网站seo
  • 小程序网站建设云搜索app
  • logo设计网站国外免费顶级域名注册网站