xml地图|网站地图|网站标签 [设为首页] [加入收藏]
set等深浅拷贝的问题记录,Python基础定义
分类:编程

对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。

  1. Python的解释器种类: 

题目

1、赋值

  • CPython:

第 0000 题: 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。 类似于图中效果

赋值,只是创建一个变量,该变量指向原来内存地址,如:

    安装Python后,官方提供了一个Python解释器CPython,是通过C语言写的,在命令行下运行Python就是启动Cpython解释器,运用最广泛的一个。

图片 1

1
2
3
n1 = {"k1""wu""k2"123"k3": ["alex"456]}
  
n2 = n1
  • Ipython:

 

  图片 2

         基于Cpython之上的一个解释器,跟Cpython差不多,只不过在交互式上有所增强;

Code:

2、浅拷贝

  • Jpython:
 1 from PIL import Image,ImageDraw,ImageFont
 2 # path = "F:Python LearningPython_Exercise"
 3 # 读取图片数据
 4 iconPath = r"ImageWeChart.png"
 5 # labelPath = r"Image圆圈.png"
 6 iconImage=Image.open(iconPath,'r')
 7 # labelImage = Image.open(labelPath,"r")
 8 
 9 # # 标签上写字
10 # user_font = ImageFont.truetype('simsun.ttc',80)
11 # draw = ImageDraw.Draw(labelImage)
12 # draw.text((int(labelImage.size[0]/4),int(labelImage.size[1]/7)),u'24',font=user_font)
13 # labelImage.save("final.png","PNG")
14 
15 # 组合Icon
16 icon = Image.new("RGBA",(iconImage.size[0]+105,iconImage.size[1]+105))
17 # iconImage.paste(labelImage,(int(iconImage.size[0]-labelImage.size[0]/2-1),0))
18 # iconImage.save("final.png","PNG")
19 # 右上角数字标签会导致图片尺寸变大
20 icon.paste(iconImage,(0,54))
21 draw = ImageDraw.Draw(icon)
22 # 直接在图片上画圆
23 draw.ellipse([(iconImage.size[0]-100,5),(iconImage.size[1]+100,205)],"red")
24 user_font = ImageFont.truetype('simsun.ttc',100)
25 # 标注数字
26 draw.text((iconImage.size[0]-50,50),u'24',"white",font=user_font)
27 icon.save("final.png","PNG")

浅拷贝,在内存中只额外创建第一层数据

    用Java语言写的一个python解释器,可以直接将python编译成Java字节码运行;

Result:

1
2
3
4
5
import copy
  
n1 = {"k1""wu""k2"123"k3": ["alex"456]}
  
n3 = copy.copy(n1)
  • PyPy:

图片 3

图片 4

    它的目标是使python代码执行速度快,使用JIT技术实现的,对python动态编译,

总结:

3、深拷贝

  • ironPython

Pillow API 学习

深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化,即不管怎么拷贝,str和num都是只有一份)

    运行在微软的.net平台上

API 文档路径:

1
2
3
4
5
import copy
  
n1 = {"k1""wu""k2"123"k3": ["alex"456]}
  
n4 = copy.deepcopy(n1)

  2.Pythong变量:

 

图片 5

      Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

(1) PIL.Image.new(mode,size,color)

 

    Python中的,全部大写的变量名代表常量

  mode: 新图片的模式,如RGB,灰度图相等

  3.python数据类型:  

  size: 新图象的尺寸,元组对象(a,b)

  • 布尔值:   (ture|false)
  • 数字:

  color: 图像的填充对象

    整型(int):

  返回图像对象

       在32位机器上,整数的位数为32位,即:-2**31~~2**31-1,即:-2147483648——2147483647

(2) Image.size

      在64位机器上,整数的位数为64位,即:-2**63~~2**63-1,即:-2147483648——2147483647

  获取图像尺寸,返回的是元组对象

              长整型(long):

  由于返回是元组对象,则访问结果是Image.size[0]

                python中没有指定位宽,理论上可以无限大,但受限于内存;但是到python3中没有long了,全部都是正型了。

(3) ImageDraw.Draw(im,mode=None)

  • 浮点型(float):

  创建可在图片上进行绘制Draw对象

    是有理数的一个特定子集的集合,Python中精度默认只能是17位精度,所有的语言都是这样的,跟浮点数的存储结构有关系

(4) Image.paste(sourceImg,box=None,mode=None)

本文由澳门新葡亰手机版发布于编程,转载请注明出处:set等深浅拷贝的问题记录,Python基础定义

上一篇:没有了 下一篇:SharpZipLib版本冲突问题解决,034文件上传
猜你喜欢
热门排行
精彩图文