欢迎光临散文网 会员登陆 & 注册

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

2023-07-03 12:28 作者:oeasy  | 我要投稿

动态类型_静态类型

回忆上次内容

  • 上次了解了 帮助文档的 生成

    • 开头的三引号注释 可以生成 帮助文档

    • 文档 可以写成网页

  • python3 本身

    • 也有 在线的帮助手册

  • 目前的程序

    • 提高了 可读性

  • 还有什么方法

    • 可以让程序 可读么?🤔

  • 可以 根据 变量名

    • 知道 变量类型 吗?

动态类型 - dynamic type

  • 编写一个test.py

  • 运行结果

  • age变量 的类型

    • 从 整型数字

    • 转变为 字符串

  • 同一变量名age 指向的类型

    • 可以从整型数字

    • 到 字符串

    • 就是态类型

  • python 是 一门

    • 动态类型语言

  • 那有没有 静态类型呢?!

静态类型 - static type

  • 编辑 test.c

  • :w|!gcc %

    • 保存并且

    • 用外部命令gcc 编译当前文件

  • 编译失败

  • test.c中声明了

    • age 是 整型变量

  • 不能 再将

    • 字符类型’1’

    • 赋给变量age

  • 变量类型一旦被声明

    • 就不能动了

    • 这就是 态类型

  • c 是 一门

    • 静态类型语言

静态类型 vs 动态类型

  • 变量类型 是

    • 编程语言的核心

  • 静态类型

    • 类型错了

    • 编译都无法通过

    • 数值 可以改变

    • 类型 不再改变

    • 提高效率

    • 声明类型 之后

    • 需要在编程前思考清楚

    • 动态类型

      • 类型 还可以改变

      • 自主灵活

      • 声明之后

      • 但 容易忘记 变量类型

      • 导致 出错

    动态静态PHPC/C++RubyJAVAPythonC#

    动态类型的优势

    • 动态类型语言里

      • 不怎么 追求明确

      • 因为 不需要编译

      • 能解释得通 就行

      • 解释脚本语言多

      • 类型 全靠 解释器

      • 自由 散漫

      • 这种灵活性

        • 容易和各种其他编程语言 配合

        • 跑起来很容易

        • 导致python

        • 而且

        • 这就是 python 被叫做

          • 胶水语言(glue Language)的原因

        • 各种语言

          • 是怎么声明变量的呢?

        声明演示

        • 不同语言

          • 声明变量的语法不一样

        • 看看下面这些语言

        语言声明vbDim sum As Integerc/c++ java c#int sum;Pascal Delphisum:Integer;Javascriptvar sum;

        • 可以看出

          • 不知道到底用的是什么类型

          • 静态类型都很明确

          • 动态类型就很模糊

        • python 虽然是动态语言

          • 但是 类型这个事情

          • 一定要明确

          • 最好 在源代码层面明确

        • 否则

          • 动态语言 一时爽

          • 后期重构 火葬场

        自省 introspection

        • 虽然 python中 变量声明

          • 可以不在乎数据类型

        • 可是

          • 我们必须明确 数据类型

        • 这个时候 就需要自省

          • introspection

        • introspectation

          • 来自 *spec-

          • 向内的

          • intro

          • spectation

          • 向内看就是自省

          • 怎么自省呢?

          type函数

          • type就是类型

          • 自省

            • 知道自己是干嘛的

            • 是什么类型额

          • 知道了之后有什么用呢?

          自省之后

          • 自省之后

            • 知道了自己的类型

          • 不同类型 的变量

            • 有不同的成员函数 和 运算方式

          • 可以在变量名上

            • 刻意提醒 吗?

          刻意提醒

          • 把类型作为前缀

            • integer

            • 整型数字

            • string

            • 字符串

            • 明确写在变量名上

            • 从而提高可读性

            • s

            • i

            • 这样变量

              • 不但 有了 明确的语义

              • 而且 明确了 数据类型

            • 更容易 发现错误

            • 再明确一下这两个前缀

            前缀

            • s前缀

              • 意思来自于string

              • 代表变量是字符串型的

            • i前缀

              • 意思来自于integer’

              • 代表变量是整型的

            • 这样变量名

              • 不但包含了变量含义

              • 而且包含了变量的类型

              • 甚至 可以包括 描述信息

            • 这种 标识 变量类型的方法

              • 来自于哪里呢?

            匈牙利命名法

            • 匈牙利命名法

              • 将类型 作为 变量名前缀

            • 匈牙利命名法

              • 命名惯例 本来是小驼峰的

              • 现在根据python的命名惯例(name convention)

              • 改成蛇形的(snake case)

            • 这样就可以

              • 明确知道 变量的数据类型 了

            • 可是 这个和匈牙利

              • 有什么关系呢?

            匈牙利命名法由来

            • 查尔斯·西蒙尼

              • 和 冯·诺依曼 一个地方

              • 生于 匈牙利 布达佩斯

            • 父亲 是 布达佩斯大学 电气工程教授

              • 研发了 核粒子加速器

            • 西蒙尼 从小 就在计算机实验室 做兼职

              • 去了美国

              • 离开了匈牙利

              • 在丹麦写ALGOL的编译器

              • 并卖给了政府

              • 研发了 编译器

              • 17岁

              • 后来

              后来

              • 在施乐公司

                • 开发了第一个所见即所得文档准备程序

                • WYSIWYG /ˈwɪziwɪɡ/

                • Butler Lampson推动下

              • 原来

                • 都是 用代码模式 编辑富文本文档

              • 此后

                • 可以 所见即所得

              • 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


                  [oeasy]python0070_动态类型_静态类型_编译_运行_匈牙利命名法的评论 (共 条)

                  分享到微博请遵守国家法律