今日内容
今日开始正式学习 python 语言
套路: 是什么, 为什么, 怎么用
大前提: python 中出现的所有语法都是为了让计算机能够具备人的某一功能
变量
什么是变量
变化的量, 指的是事物的状态
变: 事物是不断发生变化的
量: 变化的度量
为什么要有变量
为了让计算机想人一样记住某种状态, 状态时可以发生变化的
程序执行的本质是一系列的变化, 所以需要有一种机制能够反映或者说是保存下来程序执行时状态, 以及状态的变化
变量组成部分
变量名: 指向等号右侧值的内存地址, 用来访问变量值
赋值符号: 将变量值的内存地址绑定给变量名
变量值: 代表纪录事物的状态
变量的基本使用
原则: 先定义后引用
定义:
name = 'deimos'
在内存里开辟一个内存空间, 把变量值放进去, 变量名与内存空间关联
存不是目的, 目的是为了方便地取
内存管理: 垃圾回收机制
一个变量值当其与变量名关联, 可以通过变量名访问, 则他是有用的
垃圾: 如果这个变量值没有和任何变量名关联, 无法被访问到, 占用内存, 应该被回收. 因此引入垃圾回收机制
快捷键 ctrl + d 复制当前行, ctrl + / 注释当前行
引用计数:
引用计数增加
- x = 10 # 10 的引用计数为 1,x 指向 10 的内存地址
- y = x # 10 的引用计数为 2,y 也指向 10 的内存地址
- z = x # 10 的引用计数为 3
引用计数减少
del: 解除变量名与变量值的绑定关系
- del x # 解除变量名 x 与其变量值的绑定关系 10 的引用计数变为 2
- del y # 解除变量名 y 于 10 的绑定关系 10 的引用计数变为 1
- z = 12345 # 解除 z 与 10 的绑定关系, 再建立于 123456 的绑定关系, 10 的引用计数变为 0, 则没有变量名与 10 绑定, 无法访问到 10, 那么 10 就没用了, 于是被回收
小白色波浪线: pep8 标准
变量三个组成部分
变量名, 赋值符号, 变量值
变量名
如何命名变量?
变量名的命名原则: 顾名思义
由字母, 数字, 下划线组成
不能以数字开头
不能用关键字来命名变量 (print,for,break...)
不要用拼音, 不要用中文
命名风格:
纯小写 + 下划线_ 形式 (推荐)
shop_phone_num,custom_id
单词首字母大写
ShopNum,CustomerId
变量值
变量值三个重要特征: id,type,value
id: 一串数字编号, 变量值内存地址的映射, 内存地址不同则 id 不同
- shop_num = 666
- print(id(shop_num))
- 2598526700496
用 id() 来查看变量的 id
type: 事物状态的类型各不相同, 有数字, 有字符等等, 变量值也应该有不同的类型对应不同类型的状态
用 type() 来看变量的类型
value: 值本身
is 与 ==
is 和 == 是运算符
is 比较左右两个值的身份 id 是否相等, 值一样, id 不一定一样, 因为 id 代表内存地址, 同一时刻内是唯一的
- shop_num = 666
- shop_num1 = 666
- id(shop_num) is id(shop_num1)
- # 返回 false
- # 在 pycharm 内返回 true
id 相同, 值肯定相同
== 比较左右两个值是否相等
小整数池
? 从 python 解释器启动的那一步开始, 就会在内存中事先申请好一系列内存空间, 存放好常用的整数, 使用常用整数的时候不会新创建内存地址, 而是直接调用已经放好的整数
? 只要是程序运行中产生的常用整数, 无论是变量还是算式结果, 都会在已经存好的内存中调用, 不会新创地址
- y=4
- x=3
- x+=1
- >>> x is y # 返回 true
小整数池范围: python 解释器中为 - 5 到 256
pycharm 会突破解释器的范围, 扩充小整数池. 以 python 解释器为准
小整数池对部分字符串也有效果, 对浮点数无效. 仅了解
常量
python 语法中没有常量的概念, 但是在程序的开发过程中会涉及常量的概念: 重力加速度, 圆周率...
约定俗成用纯大写字母代表常量
基本数据类型
用 type(变量) 来看变量的类型
数字类型 int float
整型 int
作用: 纪录年龄等整数
定义: 直接 变量 = 数字 age = 21
浮点型 float
作用: 纪录薪资, 身高体重等小数
定义: 直接 变量 = 小数 weight = 100.8
数字类型的基本使用
数学运算: 加减乘除, int 和 float 之间可以数学运算
比较: 大于小于不等于
字符串类型 str
作用: 纪录描述性质的信息, 住址, 一段话. 可迭代
定义: 用引号 ('str',"str", 或着三引号)
shop_phonenum = '18888888888'
要在字符串中使用引号 (字符串嵌套), 外层, 内层用不同的引号
要在字符串中定义有特殊意义的字符, 使用反斜杠 \ 转意
基本使用
字符串之间用 + 可以连接, 但仅限于字符串与字符串之间 (不推荐使用)
字符串使用 * 代表字符串的重复
列表 list
索引对应值, 正向索引从 0 开始, 0 代表第一个
作用: 纪录同种属性多个值, 并且可以按照索引取指定位置的值
定义: 在中括号 [] 中, 用逗号分隔开任意类型的值, 一个值称为一个元素
取值: 列表名 [索引], 取值可以嵌套
正向索引, 第一个值开始, 索引是 0
负向索引, 最后一个值开始, 索引是 -1
索引反映的是顺序, 位置, 对值性质没有描述
字典 dic
以 key:value 键 - 值的形式存值, 其中 key 通常为字符串类型, 所以 key 对值可以有描述作用
作用: 用来存多个值, 每个值都有唯一 key 与其对应, key 具有描述性
定义: 在花括号 {} 内用逗号分开多个 key:value
- dic = {
- 'key1':1,
- 'key2':2,
- 'key3':[11,22,33,[44,550],66]
- }
先把字典当成无序
取值 dic['key'] 注意要在 key 加引号
嵌套取值
- print(dic['key3'][3][1])
- # 输出 550
布尔类型 Boolean
纪录真, 假两种状态
真: True; 假: False
作用: 用于条件判断
定义: 所有数据类型都自带布尔值, 0,none, 空 表示假, 其余全为真
来源: http://www.bubuko.com/infodetail-3447027.html