直接放代码,有注释,就不解析了
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