第一模块 第4章 变量与基本数据类型

内容概要

day04:变量与基本数据类型(全为重点)

  1. 变量

    变量的基本使用

    变量的三大组成部分

    变量名命名规范

    变量名命名风格

    变量值的三个特征

      id

      type

      值

    is与==

    小整数池(了解)

    垃圾回收机制之引用计数

    常量

  2. 基本数据类型

    数字类型:int、float

    字符串类型

    列表类型

    字典

    布尔值

4.1 写代码的思想

代码质量:程序的可读性和可维护性,不是越短的代码越好。

4.2 理解所有python语法的万能法则

1.xxx是什么?

  窍门:提取知识点名词中的关键字来加以解释

2.为什么要有它?

  大前提:python语言中出现的所有语法都是为了让计算机能够具备人的某一功能/像人一样去做事。

4.3 什么是变量?为何要有变量?

什么是变量?

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

为什么要有变量?

  为了让计算机能够像人一样能够记录事物的某种状态,并且状态是能够发生改变的

详细地说:

  程序执行的本身是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或...

如何使用变量?

  原则:先定义,后引用

# 1.变量的基本使用
# 原则:先定义,后引用
name = 'egon'  # 定义
print(name)  #引用

自己理解:各种类型的数据对应的是变量后的值。

4.4 变量的内存管理

内存管理:垃圾回收机制

垃圾:当一个变量值被绑定的变量名的个数为0时,该变量无法被访问到,称之为垃圾。

引用计数:

  引用计数就是:变量值被变量名关联的次数

引用计数增加:

name = 'egon'  # egon的引用计数为1
x = name  # egon的引用计数为2
y = name # egon的引用计数为3

引用计数减少:

解除变量名与值的绑定关系

del x  # egon的引用计数变为2
del y  # egon的引用计数变为1
z = 123  # egon的引用计数变为0, 但是egon依然存在,这样就取不到egon,成为了垃圾

引用计数变成0的值,就无法通过变量名进行访问,就成为了垃圾。python解释器提供了一种功能,会在内存进行扫描,遇到引用计数为0的直接进行回收。

 4.5 变量名的命名

如果代码写的不规范,pycharm文件中会出现波浪线,可以使用以下方法进行格式化:

1. Code>>>Reformat Code

2. File>>>Settings>>>Keymap

变量的三大组成部分;

1.变量名:指向等号右侧值的内存地址,用来访问等号右侧的值

2.赋值符号:将变量值的内存地址绑定给变量名

3.变量值:代表记录的事物的状态

变量名命名规则:

原则:见名知意

1.由字母、数字、下划线组成

2.不能由数字开头

3.关键字不能声明为变量名

4.不要用拼音,不要用中文,在见名知意的前提下尽可能简短

5.变量的命名风格:

  纯小写加下划线,如age_of_alex(在python中,关于变量名的命名,推荐使用这种方式)

  驼峰体,如AgeOfAlex

4.6 身份运算is与==

变量值的三个重要特征:

id:反映的是变量值的内存地址,它不是内存地址,是根据变量值的内存地址计算出来的id号码

type:不同类型的值表示用来记录不同的状态

value:值本身

name = 'egon'  # 定义
print(id(name))  # 查看id    2724179244400
print(type(name))  # 查看type    <class 'str'>
print(name)  # 访问值本身

is与==

is:比较左右两个值的身份id是否相同

==:比较左右两个值它们的值是否相同

# 黑窗口中:

>>> x = 'info:alex:18'
>>> y = 'info:alex:18'
>>> x == y
True
>>> x is y
False

pycharm中:

x = 'info:alex:18'
y = 'info:alex:18'
print(x == y) True
print(x is y) True

黑窗口中调用python解释器运行的结果和在pycharm中运行的结果不同。

值相等,id可能不同,即两块不同的内存空间里可以存放相同的值。

小整数池:

从python解释器启动那一刻起,就会在内存中事先申请好一系列内存空间,存放常用的整数[-5,256],适用于字符串。

C:\Users\wangjian_tr>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x=-5
>>> y=-5
>>> x==y
True
>>> x is y
True
>>> x=-6
>>> y=-6
>>> x==y
True
>>> x is y
False

但是在pycharm中运行以下代码,会出现和在黑窗口中不同的结果:

x = -6
y = -6
print(x == y)    True
print(x is y)    True

出现以上结果,说明pycharm帮助做了处理,原因:pycharm软件启动后会在内存中开辟内存空间,且开辟的内存空间大于python解释器开辟的内存空间。

注意:以上情况应该当成False去看。

总结:id不同的情况下,值有可能相等,id相同的情况下,值一定相同。

4.7 常量

常量:不变的量

注意:python语法中没有常量的概念,但是在程序的开发过程中会涉及到常量的概念。

约定:变量名中的小写字母全为大写,代表常量,这只是一种约定、规范。例如:AGE_OF_ALEX = 90

4.8 基本数据类型之数字类型

数据对应着变量值,变量值是有类型的。

1.数字类型

  1.1整型int

    作用:记录年龄、数量等

    定义:age = 18

  1.2浮点型float

    作用:记录薪资、身高

    定义:height  = 1.8

  注意:其中整型和浮点型包括负数。

  数字类型的其他使用:

    1.数学运算

  注意:int和float之间可以相加

print(10+10.3)  # 结果:20.3

+比较特殊,通常只有同类型数据才能相加,但是int和float随属于不同数据类型,但都是数字,是可以相加的。

    2.比较大小 

age = 10print(age > 18)  # 结果为False

4.9 基本数据类型之字符串类型

  作用:记录描述性质的状态,比如姓名、性别等。

  定义:

    1.用引号包含的一串字符,引号可以是单引号、双引号、三个单引号或三个双引号

    注意:不要混淆字符串和变量名,变量名是不可以加引号的。

  字符串的嵌套:如果外层用单引号,则内层应该用双引号,反之亦然。

print('my name is "egon"')
print('my name is \'egon\'')

  字符串相加:字符串可以直接相加,但仅限于字符串与字符串之间进行,代表字符串的拼接操作,但是效率很低,了解即可,不推荐使用。

print('my name is '+'egon')

  字符串相乘:代表字符串的重复,了解即可。

print('a'*10)  # 结果:aaaaaaaaaa

4.10 基本数据类型之列表类型

作用:按位置记录多个值,并且可以按照索引取指定位置的值。

定义:在[]内用逗号分隔开多个任意类型的值,一个值称之为一个元素。

列表中存储的基本是同种属性的信息。

lst = [1,'hello',['good','bad',10]]
print(type(lst))
print(lst)
print(lst[2])
print(lst[2][1])

'''
结果如下:
<class 'list'>

[1, 'hello', ['good', 'bad', 10]]
['good', 'bad', 10]
bad

'''

4.11 基本数据类型之字典类型

索引反映的是顺序、位置,对值没有描述功能

字典类型:

  key通常为字符串类型,有描述功能。

作用:

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

定义:

  在{}内用逗号分隔开多个key:value,其中key多为字符串类型(也可以为int、float,通常并不这么做)且必须为不可变类型,value可以是任意数据类型

注意:列表中有顺序,可以将字典看做无序的。

dic = {'name': 'egon', 'age': 18, 'hobby': ['篮球', '足球', '听音乐']}  # 定义字典
print(type(dic))
print(dic['name']) # 字典取值
print(dic['hobby'])
students_info = [
{'id': 1, 'name': '小明', 'gender': '男'},
{'id': 1, 'name': '小蓝', 'gender': '女'},
{'id': 1, 'name': '小冰', 'gender': '男'},
{'id': 1, 'name': '小车', 'gender': '男'}
]
print(students_info[1]['name'])
'''
结果如下:

<class 'dict'>
egon
['篮球', '足球', '听音乐']
小蓝

'''

4.12 基本数据类型之布尔类型

作用:

  用来记录真假这两种状态

定义:

  flag = True

  flag = False

通常用来当作判断的条件,我们将在if判断中用到它。

flag1 = True
flag2 = False
print(type(flag1))
print(type(flag2))
'''
执行结果:

<class 'bool'>
<class 'bool'>

'''

注意:在记录某些状态,如性别时,不一定非得使用'gender'='男/女',也可以使用'gender' = '0/1',或者'gender' = True/False,只要能将状态表示出来即可。

考试题:

  1. 什么是变量?为何要有变量?

  2. 变量的三大组成部分是?每部分的作用是什么?

  3. 变量名的命名原则、规范、风格

  4. 变量值的三个特征是什么?

  5. is与==的区别

  6. id相同值是否可以相同?

  7. id不同值是否可以相同?

  8. 用变量的定义说明int、float、str、list、dict、bool类型用于记录何种状态,每种类型至少写出三个示例,如下所示:

    int类型

    age = 10

    level = 3

    year = 1990

猜你喜欢

转载自www.cnblogs.com/libyan/p/13043105.html