一.内存管理

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内存管理以及数据类型的更多相关文章

  1. 变量、数据类型、python内存管理

    pycharm快捷键 ctrl + c 复制, 默认复制整行 ctrl + v 粘贴 ctrl + x 剪切 ctrl + a 全选 ctrl + z 撤销 ctrl + f 查找 ctrl + sh ...

  2. 【python测试开发栈】—python内存管理机制(二)—垃圾回收

    在上一篇文章中(python 内存管理机制-引用计数)中,我们介绍了python内存管理机制中的引用计数,python正是通过它来有效的管理内存.今天来介绍python的垃圾回收,其主要策略是引用计数 ...

  3. python内存管理&垃圾回收

    python内存管理&垃圾回收 引用计数器 环装双向列表refchain 在python程序中创建的任何对象都会放在refchain连表中 name = '张三' age = 18 hobby ...

  4. 解读Python内存管理机制

    转自:http://developer.51cto.com/art/201007/213585.htm 内存管理,对于Python这样的动态语言,是至关重要的一部分,它在很大程度上甚至决定了Pytho ...

  5. 转发:[Python]内存管理

    本文为转发,原地址为:http://chenrudan.github.io/blog/2016/04/23/pythonmemorycontrol.html 本文主要为了解释清楚python的内存管理 ...

  6. Python内存管理机制及优化简析(转载)

    from:http://kkpattern.github.io/2015/06/20/python-memory-optimization-zh.html 准备工作 为了方便解释Python的内存管理 ...

  7. 【python测试开发栈】python内存管理机制(一)—引用计数

    什么是内存 在开始进入正题之前,我们先来回忆下,计算机基础原理的知识,为什么需要内存.我们都知道计算机的CPU相当于人类的大脑,其运算速度非常的快,而我们平时写的数据,比如:文档.代码等都是存储在磁盘 ...

  8. python内存管理(通俗易懂,详细可靠)

    python内存管理 python3.6.9 内存管理的官方文档 https://docs.python.org/zh-cn/3.6/c-api/memory.html 一.变量存哪了? x = 10 ...

  9. Python内存管理机制-《源码解析》

    Python内存管理机制 Python 内存管理分层架构 /* An object allocator for Python. Here is an introduction to the layer ...

随机推荐

  1. LeetCode(114): 二叉树展开为链表

    Medium! 题目描述: 给定一个二叉树,原地将它展开为链表. 例如,给定二叉树 1 / \ 2 5 / \ \ 3 4 6 将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 解题思路: 这 ...

  2. 单击列表行前边的checkbox被选中,再单击,取消选中

    需求描述:单击datatabl的一行数据,前边的checkbox被勾选上,再次点击,选中取消,第一次碰到这种需求,不过呢也很实用,简单记录一下 代码: //html代码<tr class=&qu ...

  3. 小学生都看得懂的C语言入门(2): 判别 循环的一些应用实例

    1.bool 类型 定义bool类型之前需要导入#include <stdbool.h> #include <stdio.h> #include <stdbool.h&g ...

  4. 647. Palindromic Substrings

    Given a string, your task is to count how many palindromic substrings in this string. The substrings ...

  5. Squid作代理服务器,用户密码验证,高匿代理

    参考URL: https://www.cnblogs.com/vijayfly/p/5800038.html https://www.cnblogs.com/operaculus/p/5705184. ...

  6. document.createDocumentFragment()运行效率

    createDocumentFragment作用是什么? 快速响应,提高效率,提升用户体验. 调用document.body.append(),每调用一次都要刷新页面 一次.效率就低了. 用docum ...

  7. Django中model层详解

    #!/usr/bin/env python# _*_ coding:utf-8 _*_ from django.db import models class UserType(models.Model ...

  8. JSP基础知识➣结构及生命周期(一)

    概述 网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面.容器负责截获对JSP页面的请求.本教程使用内嵌JSP容器的Apache来支持JSP开发. JSP容器与Web服务器协同合作,为JSP ...

  9. noip2012

    题解: 闲着无聊做了一遍noip2012 我觉得出题出的好奇怪啊... 为什么两道倍增两道二分答案??? 两天第一题: 第一天第一题傻逼普及组题没什么好说的了 第二天第一题你会扩欧就秒了 两天第二题: ...

  10. 2018项目UML设计-课堂实战

    1. 团队信息 队名:小白吃队 成员: 卢泽明 031602328 蔡文斌 031602301 葛亮 031602617 刘浩 031602423 张扬 031602345 李泓 031602321 ...