python如何实现类似php的引用赋值

Posted 听风寻雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python如何实现类似php的引用赋值相关的知识,希望对你有一定的参考价值。

直接放代码,有注释,就不解析了

 1 # ############################
 2 # 改变一个变量的值,与之有关系的变量的值也会相等变化
 3 # 类似php的引用赋值,宏观来看
 4 # ############################
 5 
 6 relation = []   # relation是装在有关系的集合的列表
 7 
 8 
 9 # 绑定有关系的变量
10 def bind(*arg):
11     if len(arg) < 2:
12         ‘‘‘
13         判断绑定变量的个数
14         ‘‘‘
15         print("error: 至少绑定两个变量")
16         exit()
17     global relation
18     for i in arg:
19         ‘‘‘
20         检查绑定的变量是否存在
21         ‘‘‘
22         if i not in globals().keys():
23             print("error: 变量%s不存在"%(i))
24             exit()
25 
26     # 进行装载
27     flag = set(arg)
28     if len(relation):
29         i = 0
30         while i < len(relation):
31             if len(relation[i] & flag):
32                 relation[i] = relation[i] | flag
33                 break
34             i += 1
35         if i == len(relation):
36             relation.append(flag)
37     else:
38         relation.append(flag)
39 
40     # 参数中,其余的变量的值等于以第一个变量参数的值
41     index = 1
42     while index < len(arg):
43         globals()[arg[index]] = globals()[arg[0]]
44         index += 1
45 
46 
47 # 给变量赋值
48 def assign(var, value):
49     global relation
50     if len(relation):
51         i = 0
52         while i < len(relation):
53             if var in relation[i]:
54                 for item in relation[i]:
55                     globals()[item] = value
56                 break
57             i += 1
58         if i == len(relation):
59             print(error: 赋值的变量尚未绑定)
60             exit()
61     else:
62         print("error: 当前不存在有关系的集合")
63         exit()
64 
65 
66 a = sky
67 b = land
68 bind(a, b)  # 绑定有关系变量
69 print(relation)     # 打印当前有关系集合的列表 [{‘a‘, ‘b‘}]
70 print(a, b)     # 输出变量a和b的值 sky sky
71 assign(a, sea)  # 改变变量的值
72 print(a, b)     # 输出变量a和b的值 sea sea

 

以上是关于python如何实现类似php的引用赋值的主要内容,如果未能解决你的问题,请参考以下文章

php如何实现多继承?

详解PHP变量传值赋值和引用赋值变量销毁

python 深入理解 赋值引用拷贝作用域

php foreach引用赋值

学习PHP弱引用的知识

如何让python嵌入html实现类似php的快速开发,十分有价值