1.对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。 
>>> import copy
# ######### 数字、字符串 #########
>>> n1 = 123
>>> print(id(n1)) # ## 赋值 ##
>>> n2 = n1
>>> print(id(n2)) # ## 浅拷贝 ##
>>> n2 = copy.copy(n1)
>>> print(id(n2)) # ## 深拷贝 ##
>>> n3 = copy.deepcopy(n1)
>>> print(id(n3)) 2.对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。
赋值:只是创建一个变量,该变量指向原来内存地址
>>> n1 = {"k1": "hu", "k2": 123, "k3": ["hh", 456]}
>>> n2 = n1 浅拷贝:在内存中只额外创建第一层数据但是值得地址不变
>>> import copy
>>> n1 = {"k1": "hu", "k2": 123, "k3": ["hh", 456]}
>>> n2 = copy.copy(n1)
>>> print(id(n1))
5706496
>>> print(id(n2))
6270928 >>> print(id(n1['k1']))
6204824
>>> print(id(n2['k1']))
6204824 深拷贝:在内存中将所有的数据重新创建一份
>>> import copy
>>> n1 = {"k1": "hu", "k2": 123, "k3": ["hh", 456]}
>>> n2 = copy.deepcopy(n1)
>>> print(id(n1))
5706496
>>> print(id(n2))
6270808 >>> print(id(n1['k1']))
6204864
>>> print(id(n2['k1']))
500261040 例:
字典dic ={'k1':[20,30],'k2':[40,50],'k3':[50,60]},现在需要更新该字典保存在新字典new_dic 中但不改变原字典
>>> dic ={'k1':[20,30],'k2':[40,50],'k3':[50,60]}
浅拷贝:
>>> new_dic = copy.copy(dic)
>>> new_dic['k1'][0] = 100
#浅拷贝改变新字典的同时也改变了原来的字典
>>> print(new_dic)
{'k1':[100,30],'k2':[40,50],'k3':[50,60]}
>>> print(dic)
{'k1':[100,30],'k2':[40,50],'k3':[50,60]} 深拷贝:
>>> new_dic = copy.deepcopy(dic)
>>> new_dic['k1'][0] = 100
#深拷贝只改变新字典
>>> print(new_dic)
{'k1':[100,30],'k2':[40,50],'k3':[50,60]}
>>> print(dic)
{'k1':[20,30],'k2':[40,50],'k3':[50,60]} python之邮件发送源码:
 #!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
# @time : 2017/4/10 22:58
# @author : huange
# @version : 1.1
# @file : mail.py
# @Software: PyCharm
'''
#coding:utf-8 #强制使用utf-8编码格式
import smtplib #加载smtplib模块
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='********@163.com' #发件人邮箱账号,为了后面易于维护,所以写成了变量
#my_user='*******@qq.com' #收件人邮箱账号,为了后面易于维护,所以写成了变量
def mail(my_user): #user为形式参数
ret=True
try:
content = '''
hello world!
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,
由它来控制信件的中转方式。
'''
msg=MIMEText(content,'plain','utf-8')
msg['From']=formataddr(["欢哥",my_sender]) #括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To']=formataddr(["一蓑烟雨",my_user]) #括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']="python邮件测试" #邮件的主题,也可以说是标题 server=smtplib.SMTP("smtp.163.com",25) #发件人邮箱中的SMTP服务器,端口是25
server.login(my_sender,"邮箱密码") #括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) #括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() #这句是关闭连接的意思
except Exception as e: #如果try中的语句没有执行,则会执行下面的ret=False
print(e)
ret=False
return ret ret=mail('*******@qq.com') #实参
if ret:
print("ok") #如果发送成功则会返回ok,稍等20秒左右就可以收到邮件
else:
print("filed") #如果发送失败则会返回filed

PS:用163邮箱作为发送邮箱时需要先登录163邮箱在“设置”中将SMTP服务器开启!

Python学习——深浅拷贝的更多相关文章

  1. Python学习---深浅拷贝的学习

    浅拷贝copy(): 修改字符串,原来的不变: 更改列表,2个同时修改,以为列表里面还涉及一个指针的索引. 简单讲就是copy()只是简单地copy了第一层,第二层不被copy 深拷贝:  需要单独的 ...

  2. Python原理 -- 深浅拷贝

    python原理 -- 深浅拷贝 从数据类型说开去 str, num : 一次性创建, 不能被修改, 修改即是再创建. list,tuple,dict,set : 链表,当前元素记录, 下一个元素的位 ...

  3. Python的深浅拷贝

    Python的深浅拷贝 深浅拷贝 1. 赋值,对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量并不是复制一份内容 list1 = [']] list2 = list1 p ...

  4. 图解Python中深浅拷贝

    在工作中,常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用.为了生成这个副本,就产生了拷贝.今天就 ...

  5. 24、简述Python的深浅拷贝以及应用场景

    深浅拷贝的原理 深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:copy.deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝 ...

  6. Python入门-深浅拷贝

    首先我们在这里先补充一下基础数据类型的一些知识: 一.循环删除 1.前面我们学了列表,字典和集合的一些操作方法:增删改查,现在我们来看一下这个问题: 有这样一个列表: lst = ['周杰伦','周润 ...

  7. day2学python 数据类型+深浅拷贝+循环

    数据类型+深浅拷贝+循环 别的语言的数组 python不用定义 直接使用 color=['红','橙','黄','绿','青','蓝','紫'] print(color[1:3]) //打印[1,3) ...

  8. 简述Python的深浅拷贝以及应用场景

    深浅拷贝的原理 深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:copy.deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝 ...

  9. python 赋值 深浅拷贝

    深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 impor ...

随机推荐

  1. ActiveMQ集群

    1.ActiveMQ集群介绍 1.为什么要集群? 实现高可用,以排除单点故障引起的服务中断 实现负载均衡,以提升效率为更多客户提供服务 2.集群方式 客户端集群:让多个消费者消费同一个队列 Broke ...

  2. Shiro缓存(十三)

    使用缓存,可以解决每次访问请求都查数据库的问题.第一次授权后存入缓存. 缓存流程 shiro中提供了对认证信息和授权信息的缓存.shiro默认是关闭认证信息缓存的,对于授权信息的缓存shiro默认开启 ...

  3. sqlplus连接远程数据库

    方式一:简易连接,不用进行网络配置,其实就是tnsname.ora文件 命令:sqlplus 用户名/密码@ip地址[:端口]/service_name [as sysdba] 示例:sqlplus ...

  4. centos7入门

    yum install net-tools 设置IP和掩码 ifconfig eth0 1.1.1.20 netmask 255.255.255.0 设置网关 route add default gw ...

  5. Latex 算法Algorithm

    在计算机科学当中,论文当中经常需要排版算法.相信大家在读论文中也看见了很多排版精美的算法.本文就通过示例来简要介绍一下 algorithms 束的用法.该束主要提供了两个宏包,包含两种进行算法排版的环 ...

  6. Linux内存管理2---段机制

    1.前言 本文所述关于内存管理的系列文章主要是对陈莉君老师所讲述的内存管理知识讲座的整理. 本讲座主要分三个主题展开对内存管理进行讲解:内存管理的硬件基础.虚拟地址空间的管理.物理地址空间的管理. 本 ...

  7. 关注网页的更新状况,了解最新的handsup 消息.

    // 第一部分是网页截图和源码保存 // upon page load. var fs = require("fs"); var resourceWait = 300, maxRe ...

  8. Oracle 同步

    原文出处:http://www.cnblogs.com/zeromyth/archive/2009/08/19/1549661.html Oracle备份功能包括: 高级复制(Advanced Rep ...

  9. 在docker中部署centos7镜像

    本篇文章参考自: https://www.cnblogs.com/linjj/p/5606911.html https://blog.csdn.net/u012767761/article/detai ...

  10. SpringMVC中fastjson支持jsonp的实现

    前边一篇文章主要说了下前端处理jsonp的方式,这篇主要介绍了后台接收和响应jsonp的一种方式 继承fastjson消息转换器类:com.alibaba.fastjson.support.sprin ...