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
原文地址:https://www.cnblogs.com/youaremylife/p/9354127.html