动态类型_静态类型
回忆上次内容
- 上次了解了 帮助文档的 生成
- 开头的三引号注释 可以生成 帮助文档
- 文档 可以写成网页
- python3 本身
- 也有 在线的帮助手册
- 目前的程序
- 提高了 可读性
添加图片注释,不超过 140 字(可选)
- 还有什么方法
- 可以让程序 更可读么?🤔
- 可以 根据 变量名
- 知道 变量类型 吗?
动态类型 - dynamic type
- 编写一个test.py
添加图片注释,不超过 140 字(可选)
- 运行结果
添加图片注释,不超过 140 字(可选)
- age变量 的类型
- 从 整型数字
- 转变为 字符串
- 同一变量名age 指向的类型
- 可以从整型数字
- 变动到 字符串
- 就是动态类型
- python 是 一门
- 动态类型语言
- 那有没有 静态类型呢?!
静态类型 - static type
- 编辑 test.c
添加图片注释,不超过 140 字(可选)
- :w|!gcc %
- 保存并且
- 用外部命令gcc 编译当前文件
添加图片注释,不超过 140 字(可选)
- 编译失败
- test.c中声明了
- age 是 整型变量
- 不能 再将
- 字符类型’1’
- 赋给变量age
- 变量类型一旦被声明
- 就不能动了
- 这就是 静态类型
- c 是 一门
- 静态类型语言
静态类型 vs 动态类型
- 变量类型 是
- 编程语言的核心
- 静态类型
- 声明类型 之后
- 数值 可以改变
- 类型 不再改变
- 提高效率
- 需要在编程前思考清楚
- 类型错了
- 编译都无法通过
添加图片注释,不超过 140 字(可选)
- 动态类型
- 声明之后
- 类型 还可以改变
- 自主灵活
- 但 容易忘记 变量类型
- 导致 出错
动态 |
静态 |
PHP |
C/C++ |
Ruby |
JAVA |
Python |
C# |
动态类型的优势
- 动态类型语言里
- 解释脚本语言多
- 类型 全靠 解释器
- 因为 不需要编译
- 能解释得通 就行
- 自由 散漫
- 不怎么 追求明确
- 这种灵活性
- 导致python
- 跑起来很容易
- 而且
- 容易和各种其他编程语言 配合
- 这就是 python 被叫做
- 胶水语言(glue Language)的原因
添加图片注释,不超过 140 字(可选)
- 各种语言
- 是怎么声明变量的呢?
声明演示
- 不同语言
- 声明变量的语法不一样
- 看看下面这些语言
语言 |
声明 |
vb |
Dim sum As Integer |
c/c++ java c# |
int sum; |
Pascal Delphi |
sum:Integer; |
Javascript |
var sum; |
- 可以看出
- 静态类型都很明确
- 动态类型就很模糊
- 不知道到底用的是什么类型
- python 虽然是动态语言
- 但是 类型这个事情
- 一定要明确
- 最好 在源代码层面明确
- 否则
- 动态语言 一时爽
- 后期重构 火葬场
自省 introspection
- 虽然 python中 变量声明
- 可以不在乎数据类型
- 可是
- 我们必须明确 数据类型
- 这个时候 就需要自省
- introspection
添加图片注释,不超过 140 字(可选)
- introspectation
- intro
- 向内的
- spectation
- 来自 *spec-
- 看
- 向内看就是自省
- 怎么自省呢?
type函数
- type就是类型
添加图片注释,不超过 140 字(可选)
- 自省
- 知道自己是干嘛的
- 是什么类型额
添加图片注释,不超过 140 字(可选)
- 知道了之后有什么用呢?
自省之后
- 自省之后
- 知道了自己的类型
- 不同类型 的变量
- 有不同的成员函数 和 运算方式
添加图片注释,不超过 140 字(可选)
- 可以在变量名上
- 刻意提醒 吗?
刻意提醒
- 把类型作为前缀
- 明确写在变量名上
- 从而提高可读性
- s
- string
- 字符串
- i
- integer
- 整型数字
- 这样变量
- 不但 有了 明确的语义
- 而且 明确了 数据类型
- 更容易 发现错误
添加图片注释,不超过 140 字(可选)
- 再明确一下这两个前缀
前缀
- s前缀
- 意思来自于string
- 代表变量是字符串型的
- i前缀
- 意思来自于integer’
- 代表变量是整型的
- 这样变量名
- 不但包含了变量含义
- 而且包含了变量的类型
- 甚至 可以包括 描述信息
添加图片注释,不超过 140 字(可选)
- 这种 标识 变量类型的方法
- 来自于哪里呢?
匈牙利命名法
- 匈牙利命名法
- 将类型 作为 变量名前缀
添加图片注释,不超过 140 字(可选)
- 匈牙利命名法
- 命名惯例 本来是小驼峰的
- 现在根据python的命名惯例(name convention)
- 改成蛇形的(snake case)
- 这样就可以
- 明确知道 变量的数据类型 了
- 可是 这个和匈牙利
- 有什么关系呢?
匈牙利命名法由来
- 查尔斯·西蒙尼
- 生于 匈牙利 布达佩斯
- 和 冯·诺依曼 一个地方
- 父亲 是 布达佩斯大学 电气工程教授
- 研发了 核粒子加速器
添加图片注释,不超过 140 字(可选)
- 西蒙尼 从小 就在计算机实验室 做兼职
- 研发了 编译器
- 并卖给了政府
- 17岁
- 离开了匈牙利
- 在丹麦写ALGOL的编译器
- 后来
- 去了美国
后来
- 在施乐公司
- Butler Lampson推动下
- 开发了第一个所见即所得文档准备程序
- WYSIWYG /ˈwɪziwɪɡ/
- 原来
- 都是 用代码模式 编辑富文本文档
- 此后
- 可以 所见即所得
添加图片注释,不超过 140 字(可选)
- 1981年
- 遇到 比尔盖茨
- 从此 加盟微软
- 主导 word和excel的研发
- 并倡导 匈牙利命名法
- 匈牙利命名法
- 明确 变量类型
- 这对于 运算特别重要
- 由于 变量类型不同
- 运算结果
- 就会不同么?🤔
运算结果
- 类型不同
- 确实 运算结果是不同的
添加图片注释,不超过 140 字(可选)
- input 函数
- 返回得到的 变量 是什么类型 呢?
input 函数返回值类型
- input函数 返回值的类型
- 好像是字符串类型的
添加图片注释,不超过 140 字(可选)
- 可是
- 需求要的是 整数类型 啊?
- 怎么办?
转化函数
添加图片注释,不超过 140 字(可选)
- 使用 int 函数
- 就可以完成相应的转化
添加图片注释,不超过 140 字(可选)
- 那么 这个 int 函数
- 到底是 什么意思 来着?
查询函数
- help(int)
添加图片注释,不超过 140 字(可选)
- int函数
- 可以把 str 类型的变量
- 转化为 int 型
- 要把这个int函数
- 整合到程序中
整合程序
- 修改如下
添加图片注释,不超过 140 字(可选)
- 可以从变量名上
- 明确读出 变量类型了
总结
- 这次 分辨了
- 静态语言
- 动态语言
- python 属于
- 对类型要求 没有那么严格的 动态语言
- 这对于 初学者很友好
- 无需明白变量 是 怎么存储的
- 不过很多时候 也容易弄不清变量类型
- 直接 修改代码
- 增强 程序的可读性
- 把变量的类型
- 明确标记在 变量名上
- 就像
- 把缩进 作为程序块的分界一样
- 明确起来
- 想要 真正成为编程高手
- 不但 要
- 明确 变量的数据类型
- 而且 要
- 知道 这数据类型
- 是怎么存储的
- 想要 了解数据
- 是怎么存储的
- 从 哪种数据类型 开始呢 ?🤔
- 下次再说!👋
- 蓝桥->https://www.lanqiao.cn/courses/3584
- github->https://github.com/overmind1980/oeasy-python-tutorial
- gitee->https://gitee.com/overmind1980/oeasypython