[oeasy]python0070_动态类型_静态类型_编译_运行_匈牙利命名法

发布时间 2023-07-03 12:32:34作者: overmind1980
 
动态类型_静态类型
回忆上次内容
 
  • 上次了解了 帮助文档的 生成
  • 开头的三引号注释 可以生成 帮助文档
  • 文档 可以写成网页
 
  • 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