python如何实现类似php的引用赋值
直接放代码,有注释,就不解析了
# ############################
# 改变一个变量的值,与之有关系的变量的值也会相等变化
# 类似php的引用赋值,宏观来看
# ############################ relation = [] # relation是装在有关系的集合的列表 # 绑定有关系的变量
def bind(*arg):
if len(arg) < 2:
'''
判断绑定变量的个数
'''
print("error: 至少绑定两个变量")
exit()
global relation
for i in arg:
'''
检查绑定的变量是否存在
'''
if i not in globals().keys():
print("error: 变量%s不存在"%(i))
exit() # 进行装载
flag = set(arg)
if len(relation):
i = 0
while i < len(relation):
if len(relation[i] & flag):
relation[i] = relation[i] | flag
break
i += 1
if i == len(relation):
relation.append(flag)
else:
relation.append(flag) # 参数中,其余的变量的值等于以第一个变量参数的值
index = 1
while index < len(arg):
globals()[arg[index]] = globals()[arg[0]]
index += 1 # 给变量赋值
def assign(var, value):
global relation
if len(relation):
i = 0
while i < len(relation):
if var in relation[i]:
for item in relation[i]:
globals()[item] = value
break
i += 1
if i == len(relation):
print('error: 赋值的变量尚未绑定')
exit()
else:
print("error: 当前不存在有关系的集合")
exit() a = 'sky'
b = 'land'
bind('a', 'b') # 绑定有关系变量
print(relation) # 打印当前有关系集合的列表 [{'a', 'b'}]
print(a, b) # 输出变量a和b的值 sky sky
assign('a', 'sea') # 改变变量的值
print(a, b) # 输出变量a和b的值 sea sea
python如何实现类似php的引用赋值的更多相关文章
- python按引用赋值和深、浅拷贝
按引用赋值而不是拷贝副本 在python中,无论是直接的变量赋值,还是参数传递,都是按照引用进行赋值的. 在计算机语言中,有两种赋值方式:按引用赋值.按值赋值.其中按引用赋值也常称为按指针传值(当然, ...
- python之局部变量引用赋值前的结果
通过正则表达式,实现加减 昨晚在做计算器的时候,被一个BUG搞懵比了.现在再看看,发现我好小白啊~~ #++- num = input("please input:") sa = ...
- python 字典实现类似c的switch case
#python 字典实现类似c的switch def print_hi(): print('hi') def print_hello(): print('hello') def print_goodb ...
- python调用shell, shell 引用python
python 调用 shell get_line_num="wc -l as_uniq_info | awk '{print $1}'" ###get the lines of & ...
- 7、Python变量流程基础(变量、赋值、格式化、运算符、流程控制、range()函数)
一.执行Python程序的两种方式 1.交互式 在终端内输入“python3”,然后输入python代码 2.命令行式 在终端内输入“python3 文本文件路径” 二.变量 1.变量的组成 Pyth ...
- php foreach引用赋值
在写代码时发现php foreach引用赋值会导致意外的行为. 代码示例: <?php $arr = array('a','b','c'); foreach($arr as $k=>&am ...
- Js的引用赋值与传值赋值
要说js的赋值方式时首先要说明js的数值类型:基本类型和引用类型. 1.基本类型 基本的数据类型有:undefined,boolean,number,string,null. 基本类型存放在栈区,访问 ...
- php foreach 使用&(与运算符)引用赋值要注意的问题
首先了解一下“引用赋值”,看一个例子: <?php <?php $a=123; $a=123; $b=$a; $b=&$a; $a=321; $a=321; echo"$ ...
- PHP变量传值赋值和引用赋值,变量销毁
<?php $a = 100; $b = 200; var_dump($a,$b); //int(100) int(200) ?> php中,上面的代码,变量是怎么存放的呢? 上面的代码变 ...
随机推荐
- CentOS 7配置MariaDB允许指定IP远程连接数据库
防火墙 CentOS7 之前的防火墙是不一样的,比如你要添加3306端口: ## 全部 iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT # ...
- 用canvas画一个等腰三角形
上图是代码,注意,宽高只有在canvas标签内部设置宽高,绘制的路径显示才是正常的:效果如下:
- leetcode — climbing-stairs
/** * * Source : https://oj.leetcode.com/problems/climbing-stairs/ * * * You are climbing a stair ca ...
- 【原创】驱动加载之CreateService
SC_HANDLE WINAPI CreateService( _In_ SC_HANDLE hSCManager, _In_ LPCTSTR lpServiceName, _In_opt_ LPCT ...
- ElasticSearch实战:Linux日志对接Kibana
本文由云+社区发表 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTFul web接口.ElasticSearch是用Java开发 ...
- Redis 初次见面
目录 Redis 特性 使用场景 初次使用 安装(Linux) 配置 启动 redis 的 3 种方法 使用 redis 客户端 关闭 redis 服务 Redis 版本说明 引用 1 Redis 特 ...
- 【转】没那么难,谈CSS的设计模式
什么是设计模式? 曾有人调侃,设计模式是工程师用于跟别人显摆的,显得高大上:也曾有人这么说,不是设计模式没用,是你还没有到能懂它,会用它的时候. 先来看一下比较官方的解释:“设计模式(Design p ...
- 一个word文档中,多个表格的批量调整(根据窗口调整表格和添加表格水平线)
Sub 自动调整所有表格() ' ' 自动调整所有表格 宏 ' 'Application.Browser.Target = wdBrowseTable For i = 1 To ActiveDocum ...
- 【转载】阿里云ECS Linux服务器禁止某些IP访问
在阿里云ECS Linux服务器运维过程中,如果发现某些IP访问异常,如怀疑有攻击行为或者怀疑是别人写的爬虫程序长时间占用你的服务器资源,则可以通过相关的设置来禁止这些IP段的访问,拒绝这些IP的请求 ...
- Docker虚拟机理论
Docker虚拟机架构 ◆ Docker架构 Docker创建的所有虚拟实例共用同一个Linux内核,对硬件占用较小,属于轻量级虚拟机 Docker镜像与容 ...