Python发邮件精简代码实例,快来参考一下
本文实例将为大家分享用于发送邮件的 Python 精简代码,供大家参考,具体如下

最后返回标志 flag。
本文内容已全部呈现,希望能助力大家的学习,同时也期待大家大力支持查字典教程网。
一、二者区别
列表:
1.可以增加列表内容 append
2.可以统计某个列表段在整个列表中出现的次数 count
可以将一个字符串插入进来,并且把这个字符串的每一个字母都拆分出来,然后将这些拆分后的字母当作列表段逐一追加到列表当中。
4.可以查询某个列表段在整个列表的位置 index
5.可以在指定位置插入一个列表段 insert
6.可以删除列表的最后一个列表段 pop
7.可以删除指定列表中的某个列表段 remove
8.可以正向反向排序 reverse
9.可以按字母或数字排序 sort
10.定义列表时候使用中括号"[]"
注意:在列表当中,若有两个列表段相同,无论是通过 index 还是 remove 进行统计,统计的都是最靠前的那个列表段。
元组:
1.可以统计某个元组段在整个元组中出现的次数 count
2.可以查询某个元组段在整个元组中的元组号 index
3.定义元组时候使用小括号"()"
二、二者的使用方法
列表
定义列表,其中 name_list 包含以下元素:['sean','tom','jack','Angelia','Daisy','jack']。查看定义的列表,其内容为['sean', 'tom', 'jack', 'Angelia', 'Daisy', 'jack']。增加 david 列表段,即对 name_list 进行相关操作。统计 name_list 中 'david' 出现的次数,name_list 为 ['sean', 'tom', 'jack', 'Angelia', 'Daisy', 'jack', 'david'],通过 name_list.count('david') 得到结果为 1。使用 count('jack') 得到 2 。然后使用 extend 向列表中增加列表段,接着是 name_list 。name_list 本身
name_list 中索引为 2 的位置插入 Adam,之前该位置是 'jack'。name_list 中索引为 1 的位置是 'tom'。删除最后一个列表段后得到 name_list 。删除后得到的 name_list 为 ['sean', 'tom', 'Adam', 'Angelia', 'Daisy', 'jack', 'david', 'H', 'e', 'l', 'l', 'o', ',', 'M', 'y','', 'n', 'a', 'm', 'e','', 'i', 's']
name_list 包含 ['sean', 'tom', 'Adam', 'Angelia', 'Daisy', 'jack', 'david', 'H', 'e', 'l', 'l', 'o', ',', 'M', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', ' ', 's', 'e', 'a']。对整个列表进行倒序操作。然后得到倒序后的 name_listname_list 包含了多个元素,如'sean'、'tom'、'Adam'、'Angelia'、'Daisy'、'jack'、'david'、'H'、'e'、'l'、'l'、'o'、','、'M'、'y'、' '、'n'、'a'、'm'、'e'、' '、'i'、's'、' '、's'、'e'、'a'。对整个列表进行列表段的首字母排序,排序后的结果仍为 name_list。
name_list 中包含了多个不同的元素,有空格、逗号等特殊字符,也有具体的人名。
元组
尝试增加一个元组单元,name_tuple.append('xiaowang'),出现错误,Traceback (most recent call last):File " 。
在 name_tuple.append('xiaowang')这一行中,出现了属性错误。原因是'tuple'对象没有'append'属性。>>>
元组的元素是不可变的,元组的元素的元素是可变的
定义了一个元组 tuple_A ,其元素为 (1, 2, {'k1': 'v1'}) 。然后通过 for 循环遍历 tuple_A 并打印每个元素,分别输出 1 、 2 、 {'k1': 'v1'} 。接着更改了 tuple_A 中索引为 2 的元素的 'k1' 值为 'v2' ,再次通过 for 循环遍历 tuple_A 并打印每个元素,此时输出 1 、 2 、 {'k1': 'v2'} 。
一切皆是对象
Python 中一切都是对象,其中包含各种类型的常量和变量,像整型、布尔型等,甚至还有函数。可参考 stackoverflow 上的一个问题:Is everything an object in python like ruby
代码中即可以验证:
如何计算
Python 在 sys 模块里提供了一个函数叫做 getsizeof ,这个函数可以用来计算 Python 对象的大小。
但不保证对第三方扩展有效,因为与具体实现相关。getsizeof() 会调用对象的 __sizeof__ 方法。如果对象是由垃圾收集器来进行管理的,那么就会额外加上垃圾收集器的开销。
对象内存占用和 Python 版本有密切关系,对象内存占用也和操作系统版本有密切关系。本文的代码以及测试结果是以 windows7 32 位操作系统为基础的。
import sys print sys.version
默认情况下,时间是 2011 年 6 月 24 日 12 时 21 分 10 秒,使用的是 MSC v.1500 32 位(Intel)。
基本类型
•布尔型
打印“False 的大小:%d” % (sys.getsizeof(False))
输出:
True 的尺寸为 12,False 的尺寸也为 12。
•整型
使用普通整数时,打印出“整数的大小:%d”,其中的整数为 1,其大小通过 sys.getsizeof(1)获取;使用长整数时,打印出“长整数的大小:%d”,其中的长整数为 1L,其大小通过 sys.getsizeof(1L)获取;使用大长整数时,打印出“大长整数的大小:%d”,其中的大长整数为 100000L,其大小通过 sys.getsizeof(100000L)获取。
整数的大小:12 倍长整数 1L 的大小;14 倍长整数 1L 的大小;100000L 的大小为 16 倍长整数 1L 的大小
Python 3.0 之后,整型和长整型统一为一种类型。
•浮点型
打印出“浮点数的大小:%d”,其中的浮点数是 1.0,通过 sys.getsizeof(1.0) 获取其大小并进行格式化输出。
输出:
size of float: 16
浮点型占用16个字节。超过一定精度后会四舍五入。
参考如下代码:
打印 1.000000000005
输出:
1.00000000003 1.00000000001
•字符串
"rn".join(["Unicode 字符串长度为 %d 时的大小: %d" % (len(elem), sys.getsizeof(elem)) for elem in [u"", u"a", u"ab"]])
输出:
字符串长度为 0 的大小:21;字符串长度为 1 的大小:22;字符串长度为 2 的大小:23;unicode 字符串长度为 0 的大小:26;unicode 字符串长度为 1 的大小:28;unicode 字符串长度为 2 的大小:30
普通空字符串占用 21 个字节。每增加一个字符,就会多占用 1 个字节。Unicode 字符串最少占用 26 个字节。每增加一个字符,就会多占用 2 个字节。
集合类型
•列表
打印出“具有 3 个元素的列表的大小:列表的内存占用大小”,其中列表的内存占用大小通过 sys.getsizeof([0, 1, 2])获取。
输出:
列表中元素个数为 3 的大小:48
可见列表占用的字节数最少为 36 个。每增加一个元素,字节数就会增加 4 个。不过需要注意的是,sys.getsizeof 函数不会计算容器类型的元素大小。例如:
打印“包含 3 个字符串的列表的大小 %d” % (sys.getsizeof(['0', '1', '2']))
输出:
列表中包含 3 个整数的大小为 48,列表中包含 3 个字符串的大小也为 48。
容器中所保存的应当是对元素的引用。若要精确地计算容器,可参考 recursive sizeof recipe。运用其提供的 total_size 函数:
打印“包含 3 个字符串的列表的总大小 %d” % (total_size(['0', '1', '2']))
输出为:
从列表的空间占用情况可以看出,它是由基本空间 36 加上(对象引用 4 加上对象大小)与元素个数的乘积构成的。
另外需注意,若声明一个列表变量,它会预先分配一定的空间,这样在添加元素时能提高效率。
然后将整数 i 添加到列表 li 中。
•元组
基本与列表类似,但其最少占用为28个字节。
•字典
字典的情况较为复杂。具体情况当然得参考代码 dictobject.c 。此外,NOTES ON OPTIMIZING DICTIONARIES 很值得仔细去阅读。
基本情况能够参考[stackoverflow]的那个关于 Python 的字典所使用的底层哈希数据结构的问题中的一些回答。
字典拥有至少 8 个条目的空间,这是 PyDict_MINSIZE 所规定的;
•条目数小于50,000时,每次增长4倍;
•条目数大于50,000时,每次增长2倍;
•键的hash值缓存在字典中,字典调整大小后不会重新计算;
每接近2/3时,字典会调整大小。
以上这篇关于浅谈 Python 对象内存占用的内容就是小编分享给大家的全部啦,希望能给大家提供一个参考,也希望大家多多支持查字典教程网。