一、作用域
对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用。
1 2 3 | if 1==1: name = ‘wupeiqi‘print name |
下面的结论对吗?
外层变量,可以被内层变量使用
内层变量,无法被外层变量使用
二、三元运算
1 | result = 值1 if 条件 else 值2 |
如果条件为真:result = 值1
如果条件为假:result = 值2
三、进制
二进制,01
八进制,01234567
十进制,0123456789
十六进制,0123456789ABCDE
对于Python,一切事物都是对象,对象基于类创建

所以,以下这些值都是对象: "wupeiqi"、38、[‘北京‘, ‘上海‘, ‘深圳‘],并且是根据不同的类生成的对象。



一、整数
如: 18、73、84
每一个整数都具备如下功能:
int
二、长整型
可能如:2147483649、9223372036854775807
每个长整型都具备如下功能:
long
三、浮点型
如:3.14、2.88
每个浮点型都具备如下功能:
float
四、字符串
如:‘wupeiqi‘、‘alex‘
每个字符串都具备如下功能:
str
注:编码;字符串的乘法;字符串和格式化
五、列表
如:[11,22,33]、[‘wupeiqi‘, ‘alex‘]
每个列表都具备如下功能:
list
注:排序;
六、元组
如:(11,22,33)、(‘wupeiqi‘, ‘alex‘)
每个元组都具备如下功能:
tuple
七、字典
如:{‘name‘: ‘wupeiqi‘, ‘age‘: 18} 、{‘host‘: ‘2.2.2.2‘, ‘port‘: 80]}
ps:循环时,默认循环key
每个字典都具备如下功能:
dict
1 2 3 | 练习:元素分类有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。即: {‘k1‘: 大于66 , ‘k2‘: 小于66} |
八、set集合
set是一个无序且不重复的元素集合
set
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 练习:寻找差异# 数据库中原有old_dict = { "#1":{ ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 }, "#2":{ ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 } "#3":{ ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 }}# cmdb 新汇报的数据new_dict = { "#1":{ ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 800 }, "#3":{ ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 } "#4":{ ‘hostname‘:c2, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 }}需要删除:?需要新建:?需要更新:? 注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新 |
demo
九、collection系列
1、计数器(counter)
Counter是对字典类型的补充,用于追踪值的出现次数。
ps:具备字典的所有功能 + 自己的功能
123c=Counter(‘abcdeabcdabcaba‘)c输出:Counter({‘a‘:5,‘b‘:4,‘c‘:3,‘d‘:2,‘e‘:1})
Counter
2、有序字典(orderedDict )
orderdDict是对字典类型的补充,他记住了字典元素添加的顺序
OrderedDict
3、默认字典(defaultdict)
学前需求:
12有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。即: {‘k1‘: 大于66,‘k2‘: 小于66}
原生字典解决方法
defaultdict字典解决方法
defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。
defaultdict
4、可命名元组(namedtuple)
根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型。
123importcollectionsMytuple=collections.namedtuple(‘Mytuple‘,[‘x‘,‘y‘,‘z‘])
Mytuple
5、双向队列(deque)
一个线程安全的双向队列
deque
注:既然有双向队列,也有单项队列(先进先出 FIFO )
Queue.Queue
一、迭代器
对于Python 列表的 for 循环,他的内部原理:查看下一个元素是否存在,如果存在,则取出,如果不存在,则报异常 StopIteration。(python内部对异常已处理)
listiterator
二、生成器
range不是生成器 和 xrange 是生成器
readlines不是生成器 和 xreadlines 是生成器
1 2 3 4 | >>> print range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print xrange(10)xrange(10) |
生成器内部基于yield创建,即:对于生成器只有使用时才创建,从而不避免内存浪费
1 2 3 4 5 6 7 8 9 10 11 | 练习:<br>有如下列表: [13, 22, 6, 99, 11]请按照一下规则计算:13 和 22 比较,将大的值放在右侧,即:[13, 22, 6, 99, 11]22 和 6 比较,将大的值放在右侧,即:[13, 6, 22, 99, 11]22 和 99 比较,将大的值放在右侧,即:[13, 6, 22, 99, 11]99 和 42 比较,将大的值放在右侧,即:[13, 6, 22, 11, 99,]13 和 6 比较,将大的值放在右侧,即:[6, 13, 22, 11, 99,]... |
Demo
为什么要拷贝?
1 | 当进行修改时,想要保留原来的数据和修改后的数据 |
数字字符串 和 集合 在修改时的差异? (深浅拷贝不同的终极原因)
1 2 3 | 在修改数据时: 数字字符串:在内存中新建一份数据 集合:修改内存中的同一份数据 |
对于集合,如何保留其修改前和修改后的数据?
1 | 在内存中拷贝一份 |
对于集合,如何拷贝其n层元素同时拷贝?
1 | 深拷贝 |
开发一个简单的计算器程序
*实现对加减乘除、括号优先级的解析,并实现正确运算

作者:武沛齐
出处:http://www.cnblogs.com/wupeiqi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
原文:http://sky66.blog.51cto.com/2439074/1722611