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