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

2018-07-23 05:41:46来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

 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

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:情感分析snownlp包部分核心代码理解

下一篇:VsCode Python配置安装教程