Python的第3堂课
20181119笔记
一、内存管理相关
①Cpython解释器的垃圾回收机制
什么是垃圾:当一个值没有被绑定任何变量名(即该值的引用计数为零时),该值就是垃圾。
垃圾回收是收回值占用的内存空间。
引用计数增加:
age=18 # 18的引用计数为1
x=18 # 18的引用计数为2
print(age)
print(x)
引用计数减少:
age=19 #18的引用计数变为1
del x #18的引用计数变为0,del是解除变量名与值的绑定关系,并不能简单地理解为删除
②变量值的三个特征
id:反应的是内存地址
type:数据类型
值:
age=18
print(id(age))
print(type(age))
print(age)
总结:id相同,值一定相同
值相同,id可以不同
cmd下测试:
>>> x='name:egon age:18***'
>>> y='name:egon age:18***'
>>> id(x)
2847698422856
>>> id(y)
2847698422928
③比较运算符==和身份运算符is的区别
==:验证值是否相等
is:id是否相等(即内存地址是否一致)
④可变类型和不可变类型
可变类型:值改变,id不变,证明就是在改变原值
不可变类型:值改变,id也变,证明根本不是在改变原值,而是创建了新值,原值就是不可变类型
>>> x=10
>>> print(id(x))
1924296448
>>> x=12
>>> print(id(x))
1924296512
a=['alex','123','www.z.cn','egon']
print(id(a))
a[0]='baidu'
print(a)
print(id(a))
输出结果为:
2431705698248
['baidu', '123', 'www.z.cn', 'egon']
2431705698248
⑤用户态与内核态
内核态: CPU可以访问内存所有数据,包括外围设备,例如硬盘,网卡。 CPU也可以将自己从一个程序切换到另一个程序。
用户态:只能受限的访问内存,且不允许访问外围设备。占用CPU的能力被剥夺,CPU资源可以被其他程序获取。
⑥小整数池
对整数N [-5, 256],解释器对他们做了单独的处理,放进了固定的内存中,不因每次运行而变化。
不仅对小整数有这样的处理,内建的类(int,staticmamethod,object,TypeError,,,)也都是这样处理的。 看一个变量的内存是不是这样处理的,无需运行两次,只要看id()编号的长度就行,它们都是10位的,普通变量都是十三位的。 其实并不是每次运行结果都是一样的,比如重启一下电脑再试试。 不同的软件打开的同一个python解释器结果也是不同的(最先打开的那个会影响其他的),比如先打开pycharm、cmd、jupyter得到的是不同的结果。只要把解释器全部关闭再打开某一个,其余的都会是这个软件的值。电脑不关机的话,软件重复关闭打开id值是一样的。
·cmd下:
>>> print(id(1))
1923378656
>>> print(id(666))
1857984630576
·pycharm下:
print(id(1))
print(id(666))
1923378656
2061107886992
二、python2与python3中不同的一点
①在python3中只有一个input:
特点:会将用户输入的任意内容都存成str类型。
②在python2中,与python3中input相同的是raw_input;
python2中input要求必须输入一个明确的类型,输入的类型是什么就是什么类型。
三、数据类型的基本使用
python3中数据类型主要有以下七种:

1、数字类型
①整型int
作用:用来记录年龄、号码等状态
定义:age=10 # age=int(10)
print(type(age))
②浮点型float
作用:用来记录身高、体重等状态
定义:salary=3.1 # salary=float(3.1)
print(type(salary))
2、字符串类型str
作用:用来记录描述性质的状态,比如名字、性别
定义:在单引号('')、双引号("")、三引号(""" """,''' ''')中包含一系列的字符
x='abc' # x=str('abc')
print(type(x))
其中如果字符串中已经有单引号时,注意就不可以再使用单引号了:
a="I'm good boy."
如果字符串需要换行,则必须使用三引号:
x="""
go
stop
go on
"""
字符串可以直接相加或相乘:
a="I'm a "
b='good boy.'
print(a+b)
I'm a good boy.
print('abc'*3) # *后面只能是数字
'abcabcabc'
字符串也可以比较大小(依据ASCII表编码):
x='job'
y='zzz'
print(x>y)
print('z'<'a')
注意:字符串不能和数字比大小
3、列表类型list
作用:用来记录多个值,用索引对应值,索引反映的是位置。
定义:在[]内用逗号分隔开多个任意类型的值。
eg:x=[1,2.3,'abc',['a','b','c']] # 列表可以嵌套列表
使用:print(x[0]) #索引从0开始,即0是第一个
print(x[3]#[0]) # 去掉中间#号,系统原因,无法连续两个方括号。
4、字典类型dict
作用:用来记录多个值,用key对应value,其中key对value有描述的功能 定义:在{}内,用逗号分隔多个元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key通常是str类型。 d={'x':'1','z':[1,2],a:{'aaa':'123'}} 使用:print(d['x'])
print(d['a']#['aaa']) # 去掉中间#号,系统原因,无法连续两个方括号。
5、布尔类型:
True False 所有数据类型自带布尔值 布尔值为假的的数据类型:0,None,空
6、 None
print(type(None))
<class 'NoneType'>
四、基本运算符
1、比较运算符
所有的比较运算符返回1表示真,返回0表示假,等同于True和False。比较运算符只能返回真或者假。Python2中<>表示不等于。
| == | 等于:比较对象是否相等 |
|---|---|
| != | 不等于:比较两个对象是否不想等 |
| > | 大于:返回是否大于 |
| < | 小于:返回是否小于 |
| >= | 大于等于:返回是否大于等于 |
| <= | 小于等于:返回是否小于等于 |
2、逻辑运算符
and:连接左右两个条件,只有两个条件同时成立时and运算的结果为True
or:连接左右两个条件,两个条件成立任意一个or运算的结果就为True
not:not是对紧跟其后的取反 is not
假设a=10,b=20
| 运算符 | 逻辑表达式 | 描述 | 实例 |
|---|---|---|---|
| and | x and y | 布尔“与”:如果x为False,x and y就返回False,否则返回y的计算值 | (a and b)返回20 |
| or | x or y | 布尔“或”:如果x是非0,就返回x的值,否则返回y的计算值 | (a or b)返回10 |
| not | not x | 布尔“非”:如果x为True,就返回False,如果x为False,就返回True。 | not(a and b)返回False |
Python的第3堂课的更多相关文章
- Python学习第五堂课
Python学习第五堂课推荐电影:华尔街之狼 被拯救的姜哥 阿甘正传 辛德勒的名单 肖申克的救赎 上帝之城 焦土之城 绝美之城 #上节内容: 变量 if else 注释 # ""& ...
- 《程序员的思维修炼:开发认知潜能的九堂课》【PDF】下载
<程序员的思维修炼:开发认知潜能的九堂课>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196325 内容简介 运用一门程序设计语言 ...
- 大神教你零基础学PS,30堂课从入门到精通
ps视频教程,ps自学视频教程.ps免费视频教程下载,大神教你零基础学PS教程视频内容较大,分为俩部分: 大神教你零基础学PS--30堂课从入门到精通第一部分:百度网盘,https://pan.bai ...
- C语言学习书籍推荐《学通C语言的24堂课》下载
下载地址:点我 编辑推荐 <学通C语言的24堂课>:用持续激励培养良好习惯以良好习惯铸就伟大梦想——致亲爱的读者朋友在开始学习<学通C语言的24堂课>的同时,强烈建议读者朋友同 ...
- Python小白的数学建模课-A1.2021年数维杯C题(运动会优化比赛模式探索)探讨
Python小白的数学建模课 A1-2021年数维杯C题(运动会优化比赛模式探索)探讨. 运动会优化比赛模式问题,是公平分配问题 『Python小白的数学建模课 @ Youcans』带你从数模小白成为 ...
- Python小白的数学建模课-03.线性规划
线性规划是很多数模培训讲的第一个算法,算法很简单,思想很深刻. 要通过线性规划问题,理解如何学习数学建模.如何选择编程算法. 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛 ...
- Python小白的数学建模课-04.整数规划
整数规划与线性规划的差别只是变量的整数约束. 问题区别一点点,难度相差千万里. 选择简单通用的编程方案,让求解器去处理吧. 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛达 ...
- Python小白的数学建模课-A1.国赛赛题类型分析
分析赛题类型,才能有的放矢. 评论区留下邮箱地址,送你国奖论文分析 『Python小白的数学建模课 @ Youcans』 带你从数模小白成为国赛达人. 1. 数模竞赛国赛 A题类型分析 年份 题目 要 ...
- Python小白的数学建模课-05.0-1规划
0-1 规划不仅是数模竞赛中的常见题型,也具有重要的现实意义. 双十一促销中网购平台要求二选一,就是互斥的决策问题,可以用 0-1规划建模. 小白学习 0-1 规划,首先要学会识别 0-1规划,学习将 ...
随机推荐
- EasyUI datagrid 列宽度拖动问题
问题:拖不动或者偶尔能拖动,拖动不按指定? 原因:列宽度绑定的时候使用的百分比; 方法:获取总宽度,经过百分比计算在绑定
- 【bzoj1731】Layout 排队布局
1731: [Usaco2005 dec]Layout 排队布局 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 868 Solved: 495[Subm ...
- Codeforces 1139F(树状数组+扫描线)
题目传送 做法 对于每个人,inc为x,pref为y:对于每道菜,p和s为x,b为y 于是根据题意有\[p[i]<=x<=s[i]\]\[p[i]+b[i]<=x+y\]\[p[i] ...
- Appium禁止appium setting和unlock在设备上重复安装
1.文件:/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/appium-android-dri ...
- performSelector withObject afterDelay 在子线程上调用不运行
如题,这是最近在修改一个数据同步模块时发现的问题.整个数据同步的任务是在App启动后放在一个后台执行的线程中的,执行某个单条数据同步任务成功后,会使用 [self performSelector:(n ...
- 牛客网Java刷题知识点之什么是cookie、什么是session、cookie和session有什么区别
不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?tpId=31&tqId=21170&query=&asc= ...
- java面试题(基础部分)
1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...
- VS中以插件开发的思想开发Winform应用
简单定义: 插件(也称构件)式开发:主要内容就是一个宿主程序加上后期开发的若干插件程序构成整个系统! 宿主程序提供接口注册,插件注册实现接口,从而使不同的插件提供新的功能: 举例: 以下是用VS中的W ...
- Java 多个if 和多个else if 的区别
int a=1; if(a==1){System.out.println("1");} if(a==2){System.out.println("2");} i ...
- HTTP 三次握手 建立连接 和 四次握手断开连接
三次握手建立连接 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机: 第二次握手:主机B收到请求后要确 ...