变量与数据类型

一 变量

1、什么是变量

变量就是可以变化的量,量指的是事物的状态,比如人的年龄、性别等

2、为什么要有变量

      为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的
      详细地说:程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程

3、如何使用变量

a、变量基本使用

原则:先定义,后引用
name = 'egon'  # 定义-》存
print(name)     # 引用-》取

b、内存管理:垃圾回收机制

垃圾:当一个变量值被绑定的变量名的个数为0时,该变量值无法被访问到,称之为垃圾
引用计数增加
x = 10      # 10的引用计数为1
y = x        # 10的引用计数为2
z = x        # 10的引用计数为3
 
引用计数减少

del x  # 解除变量名x与值10的绑定关系,10的引用计数变为2

print(y)

del y  # 10的引用计数变为1
print(z)
z = 12345  # # 10的引用计数变为0
print(z)

4、变量有三大组成部分

a、变量名:是指向等号右侧值的内存地址的,用来访问等号右侧的值,没有引号

b、赋值符号:将变量值的内存地址绑定给变量名,如==

c、变量值:代表记录的事物的状态,有引号

5、变量名的命名规则

原则:不要用拼音,不要用中文,在见名知意的前提下尽可能短
a、只能是数字、字母、下划线的任意组合
b、第一个字符不能为数字
c、关键字不能声明为变量,常用关键字如
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 
'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 
'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

6、命名风格

a、纯小写加下划线的方式(在python中,关于变量名的命名推荐使用这种方式)
age_of_alex = 18
print(age_of_alex)
b、驼峰体
AgeOfAlex = 18
print(AgeOfAlex)

7、变量值的三个重要特征

name = ‘egon’
a、id:反映的是变量值的内存地址,内存地址不同则id不同
print(id(name))
b、 type:不同类型的值用来表示记录不同的状态,能够知道赋值的数据类型
print(type(name))
c、value:值本身
print(name)

8、赋值的两种方法(is 与 ==)

is:比较左右两个值身份id是否相等
 ==:比较左右两个值他们的值是否相等
值相等,id可能不同,即两块不同的内存空间里可以存相同的值

ps:比较时需直接在python解释器里进行操作,在pycharm等IDE操作时,软件可能会自动优化,导致id相同

了解:小整数池[-5,256]

从python解释器启动那一刻开始,就会在内存中事先申请
好一系列内存空间存放好常用的整数,

9、常量:不变的量

注意:python语法中没有常量的概念,但是在程序的开发过程中会涉及到常量的概念
AGE_OF_ALEX=73 # 小写字母全为大写代表常量,这只是一种约定、规范
AGE_OF_ALEX=74
print(AGE_OF_ALEX)

二 基本数据类型

1、数字类型

a、整型int

作用:记录年龄、身份证号、个数等等

定义: age = 18

b、浮点型float

作用:记录薪资、身高、体重
定义:
salary = 3.3
height = 1.87
weight = 70.3
c、数字类型的其它使用
a = 1
a = a + 1
print(a)

print(a*3)

print(10 + 3.3) # int与float之间可以相加
age = 19
print(age > 18)

2、字符串类型str

作用:记录描述性质的状态,名字、一段话

定义:用引号(‘ ’,“ ”,“”“ ”“”)包含的一串字符,赋给变量的值

xxx = ’abc‘

xxx代表访问变量的名字,’abc‘代表的是赋给xxx的值

#其他使用

字符串的嵌套,注意:外层单引号,则内层双引号,内外层引号要有明显区别

print(’name is”abc“‘)

print(’name is \'egon\'‘)

字符串之间可以相加,但仅限于str与str之间进行,
代表字符串的拼接,了解即可,不推荐使用,因为str之间的
相加效率极低
print('my name is '+'egon')
print('='*20)
print('hello world')
print('='*20)
 

3、列表:索引对应值,索引从0开始,当值的数量过多,想取末尾的之的时候,以最后一个值的位置为-1

作用:按位置记录多个值,并可以按索引取指定位置的值
定义:在[]内用逗号分开多个任意类型的值,每个值为一个元素        
L = [10,3.1,'aaa',['bbb','ccc'],ddd']

print(L)

print(L[1])

print(L[3][1]) == print(L[-1])

其他用途:

students_info=[
     ['tony',18,['jack',]],
     ['jason',18,['play','sleep']]
 ]
取出第一个学生的第一个爱好:
print(students_info[0][2][0])

4、字典类型:key对应值,key通常为字符串,所以key对值可以有描述性的功能

作用:用来存多个值,每个值都有唯一一个key与其对应,key对值有描述性功能

定义:在{}内用逗号分开各多个key:value
d={'a':1,'b':2}
print(type(d))
print(d['a'])
# 其他用途:
students_info=[
     第1个信息,
     第2个信息,
     第3个信息,
]
如:
students_info=[
    {"name":'egon1','age1':19,'gender':'male'},
    {"name":'egon2','age1':19,'gender':'male'},
    {"name":'egon3','age1':19,'gender':'male'},
]
print(students_info[1]['gender'])

5、布尔类型

用来记录真假状态(True / False),通常当最判断条件,一般在if判断中用到它

#总结:如何选择合适的类型来记录状态

1、选取的类型是否可以明确标识事物的状态
2、存不是目的,存的目的是为了日后取出来用,并且方便的用
3、把自己想象成一台计算机,如果我是计算机,
    我会如何以何种形式把事物的状态记到脑子里
    然后再去python中找相应的数据类型来让计算机像自己一样去记下事物的状态

 

 

 

 

posted @ 2020-03-04 17:05  NevMore  阅读(297)  评论(0编辑  收藏  举报