python中copy.deepcopy_Python eval

python中copy.deepcopy_Python eval仅出于教育目的,我尝试实现copy.deepcopy()的克隆函数。在在玩了一番代码并在谷歌上搜索之后,我想出了以下函数:defmy_deepcopy(data):ifisinstance(data,dict):result={}forkey,valueindata.items():result[key]=my_deepcopy(value)assertid(result)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

仅出于教育目的,我尝试实现copy.deepcopy()的克隆函数。在

在玩了一番代码并在谷歌上搜索之后,我想出了以下函数:def my_deepcopy(data):

if isinstance(data, dict):

result = {}

for key, value in data.items():

result[key] = my_deepcopy(value)

assert id(result) != id(data)

elif isinstance(data, list):

result = []

for item in data:

result.append(my_deepcopy(item))

assert id(result) != id(data)

elif isinstance(data, tuple):

aux = []

for item in data:

aux.append(my_deepcopy(item))

result = tuple(aux)

assert id(result) != id(data)

elif isinstance(data, (int, float, type(None), str, bool)):

result = data

else:

raise ValueError(“unexpected type”)

return result

似乎可以使用所有Python原语类型及其组合:

^{pr2}$

到目前为止,还不错,但是Arbitrary Types呢?如何复制任意对象的实例?我如何检测到它?任意类型是否有任何类型的复制构造函数?在

我的函数中缺少什么可以使以下代码正常工作:class Xpto:

pass

arbitrary = [ Xpto(), Xpto() ]

my_deepcopy( arbitrary ) #ValueError(“unexpected type”)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189058.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 线程的IsBackground属性「建议收藏」

    线程的IsBackground属性「建议收藏」.Net的公用语言运行时(CommonLanguageRuntime,CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。.net环境使用Thread建立的线程默认情况下是前台线程,即线程属性IsBackground=

    2022年10月17日
  • 苹果4s怎么越狱_越狱源和插件大全2020.4.4

    苹果4s怎么越狱_越狱源和插件大全2020.4.4很久没发布关于越狱的消息了,其实也是因为我个人对于越狱玩插件还是少了一些,除非我发布绕ID,解锁之类的教程,才会简单说一下怎么越狱,现在的越狱都比较简单了,小白都可以自行操作了,直接使用“爱思助手”,就能完美越狱。越狱就是添加新功能和破解(各类VIP破解都懂的)、美化,基本上也就这样。现在有两种破解的应用商店,一个是我们熟悉的Cydia,一个是sileo。建议大家用前者。Cydia目前是…

    2022年6月11日
  • 编写java判断闰年_用Java程序判断是否是闰年的简单实例[通俗易懂]

    编写java判断闰年_用Java程序判断是否是闰年的简单实例[通俗易懂]我们知道,(1)如果是整百的年份,能被400整除的,是闰年;(2)如果不是整百的年份,能被4整除的,也是闰年。每400年,有97个闰年。鉴于此,程序可以作以下设计:第一步,判断年份是否被400整除,能的话,就是闰年。比如1600、2000、2400年是闰年。第二步,在第一步不成立的基础上,判断年份能否被100整除,如果是,则不是闰年。比如1900、2100、2200年不是闰年。第三步,在第二步不成…

    2022年7月8日
  • 九度 1201 -二叉排序数遍历- 二叉排序树「建议收藏」

    九度 1201 -二叉排序数遍历- 二叉排序树

    2022年1月20日
  • Quartz中时间表达式的设置—–corn表达式

    Quartz中时间表达式的设置—–corn表达式

    2021年12月9日
  • java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)…

    java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)…描述java中数组的三种定义方式java中,数组是一种很常用的工具,今天我们来说说数组怎么定义[java]viewplaincopy/***数组的三种定义方法*1.数组类型[]数组名=new数组类型[数组长度];*2.数组类型[]数组名={数组0,数组1,数组2,数组3,。。。。};*3.数组类型[]数组名=new数组类型[]{数组0,数组1,数组2,。。。};**/p…

    2022年7月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号