Python内存管理以及数据类型
一.内存管理
1.Cpython解释器的垃圾回收机制
什么是垃圾:当一个值身上没有绑定任何变量名(该值的引用计数=0)时,该值就是一个垃圾。 Cpython解释器就会自动回收这样的垃圾。
#引用计数增加
#age=18 # 18的引用计数=1
#x=age # 18的引用计数=2
#引用计数减少
#age=19 # 18的引用计数=1
#del x # 18的引用计数=0
2.变量值的三个特征:
id:反映的内存地址 # age=18
type::数据类型 # print(id(age))
值:数据 # orint(age)
总结:id相同,值一定相同;值相同,id可以不同。
例:x='my name is wangke'
y='my name is wangke'
print(id(x),id(y))
# 40702000 40702216
3. is 与 ==
==:值是否相等
is :id是否相等
4.可变类型与不可变类型
不可变类型:值改变,id也变,证明根本不是在改变原值,是创建了新值,原值就是不可变类型
例:x=10
print(id(x))
x=11
print(id(y))
# 1435266816
1435266848
可变类型:值改变,id不变,证明就是在改变原值,原值是可变类型
例:l=['a','b','c']
print(id(l))
l[0]='A'
print(id(l))
# 35398664
35398664
二.python2中与用户交互
1.在python3中只有一个input:
特点:会把用户输入的任意内容都存成str类型
2.在python2中只有一个raw_input,与python3中的input一模一样,而python2中的input要求用户必须输入一个明确的类型,输入什么类型就存成什么类型
三.数据类型的基本使用
1.整型int
作用:用来记录等级、年龄、号码等状态
定义:age=10 # age=int(10)
使用:
print(age+1)
print(age>3)
2.浮点型float
作用:用来记录身高、体重、工资等状态
定义:salary=3.5 # salary=float(3.5)
使用:
print(3.1+3.4)
print(3.1<3.4)
print(3.1>2)
3.字符串类型str
作用:用来记录描述性质状态,比如名字、性别
定义:在单引号(' '),双引号(“ ”),三引号(' ' ' ' ' ' ," " " " " ")内包含一系列的字符
使用:print('abc'+'def') # 仅限字符串相加
print('abc'*10) # 相乘的只能是数字
4.列表类型list
作用:用来记录多个值,用索引对应值,索引反映位置
定义:在[ ]内用逗号分隔开多个任意类型的值
l=[1,3.1,'xxx',['a','b','c']] # l=list(...)
使用:# print(l[0])
# print(l[3][0])
5.字典类型dict
作用:用来记录多个值,用key对应value,其中key对value有描述性的功能
定义:在{}内,用逗号分割开多元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key通常应该是str类型
d={'x':1,'y':3.1,'z':['a','b'],'m':{'aaa':1111}} #d=dict(...)
print(type(d))
使用:
print(d['x'])
print(d['m']['aaa'])
print(d['z'][1])
列表与字典的应用:在多个值是同种类型的时候用列表,在多个值是不同种类型的时候用字典。
6.布尔类型:True,Flase
所有数据类型都自带布尔值
布尔值为假的数据类型:0,None,空
7. None
# print(type(None))
四.基本运算符
1.比较运算符
> >=
< <=
==
!=
print(10 != 11)
# l1=['abc',1,['a','b','c']]
# l2=['abc','aa',]
# print(l2 > l1)
2. 逻辑运算符
and:连接左右两个条件,只有两个条件同时成立时and运算的结果为True
print(10 > 9 and 3 > 2 and 'egon' == 'egon' and True)
or:连接左右两个条件,两个条件成立任意一个or运算的结果就为True
print(False or False or True or False or 3 > 10)
res=(True or (False and True)) or ((False or True) and False)
res=(True or False) or (True and False)
res=True or False
print(res)
not:
print(not 10 > 3)
x=None
print(x is not None)
# age1=18
# age2=19
# print(age2 is not age1)
注:最好用()来区分and、or、not的优先级
练习:
name_bk='egon'
pwd_bak='123'
name=input('please input your name: ')
pwd=input('please input your password: ')
if name == name_bk and pwd == pwd_bak:
print('login successfull')
else:
print('username or password error')
Python内存管理以及数据类型的更多相关文章
- 变量、数据类型、python内存管理
pycharm快捷键 ctrl + c 复制, 默认复制整行 ctrl + v 粘贴 ctrl + x 剪切 ctrl + a 全选 ctrl + z 撤销 ctrl + f 查找 ctrl + sh ...
- 【python测试开发栈】—python内存管理机制(二)—垃圾回收
在上一篇文章中(python 内存管理机制-引用计数)中,我们介绍了python内存管理机制中的引用计数,python正是通过它来有效的管理内存.今天来介绍python的垃圾回收,其主要策略是引用计数 ...
- python内存管理&垃圾回收
python内存管理&垃圾回收 引用计数器 环装双向列表refchain 在python程序中创建的任何对象都会放在refchain连表中 name = '张三' age = 18 hobby ...
- 解读Python内存管理机制
转自:http://developer.51cto.com/art/201007/213585.htm 内存管理,对于Python这样的动态语言,是至关重要的一部分,它在很大程度上甚至决定了Pytho ...
- 转发:[Python]内存管理
本文为转发,原地址为:http://chenrudan.github.io/blog/2016/04/23/pythonmemorycontrol.html 本文主要为了解释清楚python的内存管理 ...
- Python内存管理机制及优化简析(转载)
from:http://kkpattern.github.io/2015/06/20/python-memory-optimization-zh.html 准备工作 为了方便解释Python的内存管理 ...
- 【python测试开发栈】python内存管理机制(一)—引用计数
什么是内存 在开始进入正题之前,我们先来回忆下,计算机基础原理的知识,为什么需要内存.我们都知道计算机的CPU相当于人类的大脑,其运算速度非常的快,而我们平时写的数据,比如:文档.代码等都是存储在磁盘 ...
- python内存管理(通俗易懂,详细可靠)
python内存管理 python3.6.9 内存管理的官方文档 https://docs.python.org/zh-cn/3.6/c-api/memory.html 一.变量存哪了? x = 10 ...
- Python内存管理机制-《源码解析》
Python内存管理机制 Python 内存管理分层架构 /* An object allocator for Python. Here is an introduction to the layer ...
随机推荐
- 安装cx_Oracle 6
首先声明,本文是在Linux 环境下进行安装.不涉及Windows 版安装. 一. 了解cx_Oracle 安装要求 要python 通过cx_Oracle 6 操作Oracle 数据库,以下几个条件 ...
- HDU 3336 Count the string(next数组运用)
Count the string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- python 在WINDOS虚拟环境部署
#查看电脑的版本 C:\Users\lys>pip -V pip 8.1.1 from e:\python\python3.5\lib\site-packages (python 3.5) #安 ...
- CMD批处理——forfiles命令使用,自动删除过期备份文件
公司服务器用来备份数据的硬盘过段时间就会被备份文件占满,弄得我老是要登录到服务器去手工删除那些老的文件,有时忘记了就会导致硬盘空间不足而无法备份.因为只要保留最近几天的备份,如果可以做一个批处理让系统 ...
- 微信公众平台开发教程Java版(六) 事件处理(菜单点击/关注/取消关注)
https://blog.csdn.net/tuposky/article/details/40589325
- [转] webpack3最新版本配置研究(五) devtool,webpack-dev-server,CommonsChunkPlugin
devtool devtool是webpack中config自带的属性只要使用就可以了不用安装 webpack官网的解释如下 当 webpack 打包源代码时,可能会很难追踪到错误和警告在源代码中的原 ...
- 【NOI2017】泳池
题解: 满分的笛卡尔树以后再学吧.. 40分还是比较好想的 但是状态挺复杂的 直接贴代码了 代码: #include <bits/stdc++.h> using namespace std ...
- [转]scp、sftp命令使用
http://wangxuedong.com/index.php/archives/182/ 前言 有时候想上传文件到服务器或者从服务器下载一个文件到本地,但是服务器还没有配置ftp等环境,这时候可以 ...
- centos7 查看ip地址
命令: ip address 简写ip a 过滤出来某个网卡的ip: ip a show ens33 |awk -F ' ' 'NR==3{print$2}'|cut -d / -f1
- Rookey.Frame企业级极速开发框架
项目详细介绍 Rookey.Frame是一套基于.NET MVC + easyui的企业级极速开发框架,支持简单逻辑模块零代码编程.支持工作流(BPM).支持二次开发,具有高扩展性.高复用性.高伸缩性 ...