内存管理
C python解释器的垃圾回收机制
-
什么是垃圾: 当一个值身上没有绑定任何变量名(该值得引用计数=0)时,该值就是一个垃圾。
引用计数增加
# age=18 # 18的引用计数等于1
# x=age # 18的引用计数等于2引用计数减少("del x"解除变量名和值的绑定,减少计数,然后由Python机制回收)
变量值的三个特征
-
id : 反映的是内存地址
-
type : 数据类型
-
值 : 值本身
总结:
-
id相同,值一定相同
-
值相同,id可以不同
-
is 与 ==的区别
-
== :值是否相等
-
is : id是否相等
-
可变类型和不可变类型:判断可不可变,主要是判断id是否改变。
-
可变类型:值改变,id不可变
-
不可变类型:值改变,id也变,证明根本不是在改变原值,是创建了新值,原值就是不可变类型。
-
Python 2中与用户交互(了解)
-
-
在Python 3中只有一个input
特点:会将用户输入的任意类型都存成str类型
-
在Python 2中只有一个raw_input,与Python 3的input一模一样
x = raw_input('>>>:')
python 2 中的 input 要求用户输入明确的类型,输入什么类型就存为什么类型。
>>> x = input('x:')x:123>>> x123>>> type(x)
-
数据类型的基本使用
1. 整型:int
-
作用:用来记录年龄、等级、各种号码状态
-
定义:
age = 10
-
使用:略
2.浮点型:float
-
作用:用来记录身高,体重、工资状态
-
定义:
height = 1.83
-
使用:略
3.字符串:str
-
作用:用来记录描述性质状态,比如名字、性别等。
-
定义:在单引号('')、双引号(" ")、三引号(''' ''', """ """)内包含一系列字符。
-
三种不同引号的区别:
-
-
单引号和双引号基本无区别,都是用来存放单个字符串,但要注意的是要保证前后的一致性
-
三引号多用来存放多行字符串
-
字符串的嵌套时,要保证内外引号的差异性,否则就会报错
-
-
-
x = 'abc' # 等同于x = "abc"y = """abc123hahaha"""msg = 'my name is "Jason"'
-
使用:
-
字符串的加法运算(仅限于字符串同类型相加)
-
字符串的乘法(相乘的对象必须是int类型)
-
字符串之间的大小比较
-
4.列表:list
作用:用来存取多个值,用索引对应值,索引反映的是位置
定义:在[]内用逗号分隔开多个任意类型的值
>>> l = [1, 0.1, 'Jason', ['a', 'b', 'c']]>>> print(type(l))
使用:列表的取值及嵌套取值
5.字典:dict
作用:用来存放多个值,用key对应value,其中key对value有描述性作用
定义:在{}内,用逗号分隔开多个元素,每一个元素都是key:value的形式,其中value可以是任意类型,而key通常是字符串类型。
>>> s = { 'name':'Jason','age':'23','hobby':'basketball'}
用法:按照key取value
>>> s = { 'name':'Jason','age':'23','hobby':'basketball'}>>> print(s['age'])23
6.布尔类型:bool
作用:用来控制程序的走向
定义:布尔类型只有两种,True/false;
与之前的类型不同,基本不需要提前定义。
用法:通常用在循环或判断语句中,控制程序流程的走向
所有数据类型自带布尔值,除0,None,空(任何为空的数据类型)的布尔类型为False外,其他数据类型的布尔值皆为True。
>>> print(type(None))
基本运算符
1. 比较运算符
比较运算符包含:">", ">=", "<", "<=", "==", "!="
用法:通常用于循环或判断语句中,输出值为布尔类型。
2. 逻辑运算符
-
and:连接左右两个条件,只有在两个条件同时成立时,输出结果才为真
-
or:连接左右两个条件,只要有其中一个条件成立时,输出结果就位真
-
not:非
注:当统一语句中存在两个以上条件时,用括号标明优先级可增加代码可读性