前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python基础(一)

python基础(一)

作者头像
程序员同行者
发布2018-07-24 11:37:12
4730
发布2018-07-24 11:37:12
举报
文章被收录于专栏:程序员同行者程序员同行者

一、作用域

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

代码语言:javascript
复制
if 1==1:
    name = 'guigu'
print  name

下面的结论对吗?

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

二、三元运算

代码语言:javascript
复制
result = 值1 if 条件 else 值2

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

三、进制

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

Python基础

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

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

一、整数

如: 18、73、84

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

代码语言:javascript
复制
int

二、长整型

可能如:2147483649、9223372036854775807

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

代码语言:javascript
复制
long

三、浮点型

如:3.14、2.88

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

代码语言:javascript
复制
float

四、字符串

如:'guigu'、'qiqi'

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

代码语言:javascript
复制
str

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

五、列表

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

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

代码语言:javascript
复制
list

注:排序;

六、元组

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

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

代码语言:javascript
复制
tuple

七、字典

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

ps:循环时,默认循环key

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

代码语言:javascript
复制
dict
代码语言:javascript
复制
练习:元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66 , 'k2': 小于66}

 八、set集合

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

代码语言:javascript
复制
set
代码语言:javascript
复制
练习:寻找差异
# 数据库中原有
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 }
}
 
需要删除:?
需要新建:?
需要更新:? 注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新
代码语言:javascript
复制
demo

九、collection系列

1、计数器(counter) Counter是对字典类型的补充,用于追踪值的出现次数。 ps:具备字典的所有功能 + 自己的功能 c = Counter('abcdeabcdabcaba') print c 输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1}) Counter 2、有序字典(orderedDict ) orderdDict是对字典类型的补充,他记住了字典元素添加的顺序 OrderedDict 3、默认字典(defaultdict)  学前需求: 有如下值集合 [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所有功能以及其他功能的类型。 import collections   Mytuple = collections.namedtuple('Mytuple',['x', 'y', 'z']) Mytuple

5、双向队列(deque) 一个线程安全的双向队列 deque 注:既然有双向队列,也有单项队列(先进先出 FIFO ) Queue.Queue

迭代器和生成器

一、迭代器

对于Python 列表的 for 循环,他的内部原理:查看下一个元素是否存在,如果存在,则取出,如果不存在,则报异常 StopIteration。(python内部对异常已处理)

代码语言:javascript
复制
listiterator

二、生成器

range不是生成器 和 xrange 是生成器

readlines不是生成器 和 xreadlines 是生成器

代码语言:javascript
复制
>>> print range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print xrange(10)
xrange(10)

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

代码语言:javascript
复制
练习:<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,]
...
代码语言:javascript
复制
Demo

深浅拷贝

为什么要拷贝?

代码语言:javascript
复制
当进行修改时,想要保留原来的数据和修改后的数据

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

代码语言:javascript
复制
在修改数据时:
    数字字符串:在内存中新建一份数据
         集合:修改内存中的同一份数据

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

代码语言:javascript
复制
在内存中拷贝一份

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

代码语言:javascript
复制
深拷贝

作业

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-11-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python基础
  • 迭代器和生成器
  • 深浅拷贝
  • 作业
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档