zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    按钮-全选复选框 PENGHAO
    ASP.NET技术内幕的电子书中文版 PENGHAO
    hotmail和gmail 邮件中背景图片无效不显示的解决办法
    Silverlight之DataGrid的列格式化日期
    MS SQL基础
    JS获得当前地址栏url
    Javascript实现复制到剪贴板
    C#.NET画验证码与Cookie验证
    网站部署与定制
    操作SQL数据库常用语句
  • 原文地址:https://www.cnblogs.com/youaremylife/p/9354127.html
Copyright © 2011-2022 走看看