小小见解之python循环依赖

a.py

from b import b
print ‘---------this is module a.py----------‘
def a():
    print "hello, a"
    b()

a()

b.py

print ‘----------this is module b.py----------‘

def b():

    print "hello, b"

def c():

    print "hello, c"

c()

from a import a

运行a.py,结果:

分析:

首先要去b.py中找到b(),而b.py中创建函数后直接就把b给它了,最后b.py又向a.py中要a,因为b.py已经得到想要的了,就答应给a.py想要的。就是说,我要的你先给我了,所以我也给你你想要的

运行b.py,结果:

分析:

a.py先向b.py要a(),但b不答应,反而要a.py先给b(),a.py不乐意,即使有也不给,谁让你不先满足我的要求。

总结,谁先要的必须给,如果不给,就不答应另一方的要求,有点无理,但也没办法,人是自私的,程序也是自私的,否则一再谦让,说不定会让一个人即使给了东西却什么也得不到。

今天对python的循环依赖想了好久,这只是此时的想法,可能不太准确甚至是错误的,但我根据程序结果暂时只能这样理解,待以后有了新的见解再来补充。欢迎有识之人给予纠正。

时间: 2024-10-25 10:20:13

小小见解之python循环依赖的相关文章

Python开发常见问题之各模块循环依赖

今天写了一个程序,由于设计上的问题,导致两个模块需要相互引用,出现了“importError”错误.分析良久,对于模块循环依赖的问题有两种方法: 1.可通过调整import导入顺序来解决,把 import 语句放到方法定义的后面即可 2.两个模块写到一个文件里面去 对于此类问题Python并没有提供解决方案,所以尽量在设计之初就要避免出现模块循环依赖问题,以免开发后期大刀阔斧的修改.

记 suds 模块循环依赖的坑

下面是soa接口调用的核心代码 #! /usr/bin/python # coding:utf-8 from suds.client import Clientdef SoaRequest(wsdl,fnname,data): soaService = Client(wsdl).service soaRep = getattr(soaService,fnname)(data) return soaRep 问题就这样出现了: 我调用一个接口,总是报错,见下图: 之后Debug断点定位到suds模块

python基础:python循环、三元运算、字典、文件操作

目录: python循环 三元运算 字符串 字典 文件操作基础 一.python编程 在面向过程式编程语言的执行流程中包含: 顺序执行 选择执行 循环执行 if是条件判断语句:if的执行流程属于选择执行:if语句有三种格式,如下: 在多分支的if表达式中,即使多个条件同时为真,也只会执行一个,首先测试为真: 选择执行 单分支的if语句 if CONDITION: 条件为真分支 双分支的if语句 if CONDITION 条件为真分支 else 条件不满足时分支 多分支的if语句 if CONDI

Python循环语句

Python语言中的循环结构包含两种语句,分别是while语句和for语句. 1. while语句 while(表达式): -- else: -- 执行过程:当循环表达式为True时,依次执行while中的语句.直到循环表达式的值为False时,才执行else语句或退出循环.其中else子句可以省略,表达式两端的等号也可以省略. 2. for语句 for循环用于遍历一个集合,依次访问集合中的每个项目.格式如下: for 变量 in 集合: -- else: -- 执行过程:每次循环从集合中取出一

Spring之循环依赖

转:http://my.oschina.net/tryUcatchUfinallyU/blog/287936 概述 如何检测循环依赖 循环依赖如何解决 Spring如何解决循环依赖 主要的几个缓存 主要步骤 Spring不能完全解决的循环依赖问题 面对Spring不能完全解决的现状,我们该如何处理 概述 入职的时候学习spring研究过循环依赖,现在再回顾下,发现啥都忘记了,还是得总结下来,故总结该文. 本文主要解决如下问题: 1.何为循环依赖 2.如何检测循环依赖 3.循环依赖可以如何解决 4

Python循环常见的语法错误有哪些?

本文和大家分享的主要是python循环下最易错的一些语法,一起来看看吧,希望对大家学习python有所帮助. 循环语句下break和continue的区别和作用 break和continue都是用来控制循环结构的,主要是停止循环. · break break用于完全结束一个循环,跳出循环体执行循环后面的语句. for x in range(10): if x == 5: break print(x)print('for循环终止') break循环不是等循环条件为False才终止,打印结果为: 0

剑指架构师系列-Struts2构造函数的循环依赖注入

Struts2可以完成构造函数的循环依赖注入,来看看Struts2的大师们是怎么做到的吧! 首先定义IBlood与BloodImpl类: public interface IBlood { } public class BloodImpl implements IBlood{ private IPeople people; @Inject public BloodImpl(@Inject IPeople people) { System.out.println("Blood 构造函数被调用.&q

JAVA循环依赖

最近看到一个问题:如果有两个类A和B,A类中有一个B的对象b,B类中有一个A的对象a,那么如何解决这两个类的相互依赖关系呢? 示例代码1 public class Test{ public static void main(String[] args) { B testb = new B(); } } class A{ public B b; public A (){ b = new B(); } public void printB(){ System.out.println("Ab"

Spring源代码解析 ---- 循环依赖

一.循环引用: 1. 定义: 循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比方CircularityA引用CircularityB,CircularityB引用CircularityC,CircularityC引用CircularityA.形成一个环状引用关系. 2. 代码演示样例: CircularityA public class CircularityA { private CircularityB circularityB; public CircularityA()