python基础(一),,一、作用域对于变量的


一、作用域

对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用。

123if1==1:name=‘guigu‘printname

下面的结论对吗?

外层变量,可以被内层变量使用内层变量,无法被外层变量使用

二、三元运算

1result=1if条件else2

如果条件为真:result = 值1
如果条件为假:result = 值2

三、进制

二进制,01八进制,01234567十进制,0123456789十六进制,0123456789ABCDEF

Python基础

对于Python,一切事物都是对象,对象基于类创建

技术分享

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

技术分享技术分享技术分享

一、整数

如: 18、73、84

每一个整数都具备如下功能:

技术分享int

二、长整型

可能如:2147483649、9223372036854775807

每个长整型都具备如下功能:

技术分享long

三、浮点型

如:3.14、2.88

每个浮点型都具备如下功能:

技术分享float

四、字符串

如:‘guigu‘、‘qiqi‘

每个字符串都具备如下功能:

技术分享str

注:编码;字符串的乘法;字符串和格式化

五、列表

如:[11,22,33]、[‘guigu‘, ‘qiqi‘]

每个列表都具备如下功能:

技术分享list

注:排序;

六、元组

如:(11,22,33)、(‘guigu‘, ‘qiqi‘)

每个元组都具备如下功能:

技术分享tuple

七、字典

如:{‘name‘: ‘guigu‘, ‘age‘: 18} 、{‘host‘: ‘2.2.2.2‘, ‘port‘: 80]}

ps:循环时,默认循环key

每个字典都具备如下功能:

技术分享dict
123练习:元素分类有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。即: {‘k1‘: 大于66,‘k2‘: 小于66}

八、set集合

set是一个无序且不重复的元素集合

技术分享set
123456789101112131415161718练习:寻找差异# 数据库中原有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‘)printc输出: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 是生成器

1234>>>printrange(10)[0,1,2,3,4,5,6,7,8,9]>>>printxrange(10)xrange(10)

生成器内部基于yield创建,即:对于生成器只有使用时才创建,从而不避免内存浪费

1234567891011练习:<br>有如下列表:[13,22,6,99,11]请按照一下规则计算:1322比较,将大的值放在右侧,即:[13,22,6,99,11]226比较,将大的值放在右侧,即:[13,6,22,99,11]2299比较,将大的值放在右侧,即:[13,6,22,99,11]9942比较,将大的值放在右侧,即:[13,6,22,11,99,]136比较,将大的值放在右侧,即:[6,13,22,11,99,]...
技术分享Demo

深浅拷贝

为什么要拷贝?

1当进行修改时,想要保留原来的数据和修改后的数据

数字字符串 和 集合 在修改时的差异?(深浅拷贝不同的终极原因)

123在修改数据时:数字字符串:在内存中新建一份数据集合:修改内存中的同一份数据

对于集合,如何保留其修改前和修改后的数据?

1在内存中拷贝一份

对于集合,如何拷贝其n层元素同时拷贝?

1深拷贝

作业

  开发一个简单的计算器程序
  *实现对加减乘除、括号优先级的解析,并实现正确运算

python基础(一)

评论关闭