[oeasy]python0050_动态类型_静态类型_编译_运行

简介: [oeasy]python0050_动态类型_静态类型_编译_运行

动态类型_静态类型 回忆上次内容

  • 上次了解了 帮助文档的 生成
  • 开头的三引号注释 可以生成 帮助文档
  • 文档 可以写成网页


  • python3 本身
  • 也有 在线的帮助手册


  • 目前的程序
  • 提高了 可读性


添加图片注释,不超过 140 字(可选)

  • 什么方法
  • 可以让程序 更可读么?🤔


变量名

  • 首先
  • 在变量名上想办法


  • 名字
  • 本身就有某些含义
  • 具有某些可读性


  • 可以把
  • a 换成 apple
  • :4,10s/a/apple/gc
  • 过程中需要用Y/n进行确认



添加图片注释,不超过 140 字(可选)

  • b 换成 banana
  • :11,17s/b/banana/gc


  • 变量名 变长
  • 并不会让 程序变慢


  • 只是 换个 指向同一盒子空间的名字 而已
  • python 是动态类型的
  • 什么是动态类型呢?


动态类型 - dynamic type

  • 去游乐场看看

添加图片注释,不超过 140 字(可选)

  • 动态类型语言中
  • age变量
  • 有的时候指向整型数字
  • 有的时候又指向字符串


  • 到底是指向什么的类型?


  • 这两种类型 其实在内存里 不一样
  • 数字
  • 是把具体的数值
  • 变成二进制形态
  • 存在 内存中的指定位置


  • 字符串
  • 是把 字符串中 每个字符的 ascii二进制值
  • 存在 内存中的指定位置



  • 指向的类型
  • 可以从整型数字
  • 到 字符串的
  • 就是态类型


  • python 是 一门
  • 动态类型语言


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

静态类型 - static type

  • c语言 就是 静态类型语言

添加图片注释,不超过 140 字(可选)

  • 声明了
  • a是一个整型数字
  • 不能 再将a
  • 声明为 字符串



静态类型 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函数

添加图片注释,不超过 140 字(可选)

  • 自省
  • 知道自己是干嘛的


添加图片注释,不超过 140 字(可选)

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

自省之后

  • 自省之后可以知道自己的类型

添加图片注释,不超过 140 字(可选)

  • 不同类型有不同的函数和运算方式
  • 可以在名字上刻意提醒自己吗?

刻意提醒

  • 把类型作为前缀
  • 明确写在变量名上
  • 从而提高可读性
  • s
  • string
  • 字符串


  • i
  • integer
  • 整型数字



  • 这样变量
  • 不但 有了 明确的语义
  • 而且 明确了 数据类型


  • 更容易 发现错误

添加图片注释,不超过 140 字(可选)

  • 再明确一下这两个前缀

前缀

  • s前缀
  • 意思来自于string
  • 代表变量是字符串型的


  • i前缀
  • 意思来自于integer'
  • 代表变量是整型的


  • 这样变量名
  • 不但包含了变量含义
  • 而且包含了变量的类型
  • 甚至 可以包括 描述信息


添加图片注释,不超过 140 字(可选)

  • 这种 标识 变量类型的方法
  • 来自于哪里呢?


匈牙利命名法

  • 匈牙利命名法

添加图片注释,不超过 140 字(可选)

  • 匈牙利命名法
  • 命名惯例 本来是小驼峰的
  • 现在根据python的惯例(convention)
  • 改成蛇形的


  • 这样就可以
  • 明确知道 变量的数据类型 了


  • 可是 这个和匈牙利
  • 有什么关系呢?


匈牙利命名法由来

  • 查尔斯·西蒙尼
  • 生于 匈牙利 布达佩斯
  • 和 冯·诺依曼 一个地方



  • 父亲 是 布达佩斯大学 电气工程教授
  • 研发了 核粒子加速器


添加图片注释,不超过 140 字(可选)

  • 西蒙尼 从小 就在计算机实验室 做兼职
  • 研发了 编译器
  • 并卖给了政府


  • 17岁
  • 离开了匈牙利
  • 在丹麦写ALGOL的编译器


  • 后来
  • 去了美国



后来

  • 在施乐公司
  • Butler Lampson推动下
  • 开发了第一个所见即所得文档准备程序
  • WYSIWYG /ˈwɪziwɪɡ/



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


  • 此后
  • 可以 所见即所得


添加图片注释,不超过 140 字(可选)

  • 1981年
  • 拜访 比尔盖茨
  • 从此 加盟微软
  • 主导 word和excel的研发
  • 并提出 匈牙利命名法


  • 匈牙利命名法
  • 明确 变量类型
  • 这对于 运算特别重要


  • 由于 变量类型不同
  • 运算结果
  • 就会不同么?🤔



运算结果

  • 类型不同
  • 确实 运算结果是不同的


添加图片注释,不超过 140 字(可选)

  • input 函数
  • 得到的 是什么类型 呢?


input 函数返回值类型

  • input函数 返回值的类型
  • 好像是字符串类型的


添加图片注释,不超过 140 字(可选)

  • 可是我们要的是整数类型啊?
  • 怎么办?

转化函数

  • 使用 int 函数
  • 就可以完成相应的转化


添加图片注释,不超过 140 字(可选)

  • 那么 这个 int 函数
  • 到底是 什么意思 来着?


查询函数

  • help(int)

添加图片注释,不超过 140 字(可选)

  • int函数 可以把 str 类型的变量
  • 转化为 int 型的变量、


  • 要把这个int函数
  • 整合到程序中


整合程序

添加图片注释,不超过 140 字(可选)

  • 这下
  • 我们可以明确变量类型了


总结

  • 这次 直接 修改代码
  • 增强 程序的可读性
  • 让变量标识符 具有明确的语义


  • 把变量的类型
  • 明确标记在标识符上
  • 就像
  • 把缩进 作为程序块的分界一样
  • 明确起来



  • 明确了
  • 静态语言和动态语言


  • python 属于
  • 要求没有那么严格的 动态语言
  • 这对于 初学者很友好
  • 无需明白变量 是 怎么存储的
  • 不过很多时候 也容易不明所以


  • 想要 真正成为编程高手
  • 不但要 明确 变量的数据类型
  • 而且 要知道 这数据类型 是怎么存储的


  • 想要 了解数据 具体是怎么存储 的
  • 从 哪种数据类型 开始呢 ?🤔



目录
相关文章
|
3天前
|
Python
turtle库的几个案例进阶,代码可直接运行(python经典编程案例)
该文章展示了使用Python的turtle库进行绘图的进阶案例,包括绘制彩色圆形和复杂图案的代码示例。
28 6
turtle库的几个案例进阶,代码可直接运行(python经典编程案例)
|
3天前
|
Python
turtle库的几个简单案例,代码可直接运行(python经典编程案例)
该文章提供了多个使用Python的turtle库绘制不同图形的简单示例代码,如画三角形、正方形、多边形等,展示了如何通过turtle进行基本的绘图操作。
12 5
|
3天前
|
NoSQL MongoDB 数据库
python3操作MongoDB的crud以及聚合案例,代码可直接运行(python经典编程案例)
这篇文章提供了使用Python操作MongoDB数据库进行CRUD(创建、读取、更新、删除)操作的详细代码示例,以及如何执行聚合查询的案例。
19 6
|
22小时前
|
Windows Python
python获取windows机子上运行的程序名称
python获取windows机子上运行的程序名称
|
Linux API C语言
Ubuntu16下编译安装Open Babel2.4.1和python绑定
Ubuntu16下编译安装Open Babel2.4.1和python绑定
377 0
Ubuntu16下编译安装Open Babel2.4.1和python绑定
|
1天前
|
存储 人工智能 数据挖掘
Python编程入门:从基础到实战
【9月更文挑战第26天】 在这篇文章中,我们将一起探索Python编程的奇妙世界。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和技巧。我们将从Python的基本语法开始,然后逐步深入到更复杂的主题,如函数、类和模块。最后,我们将通过一个实际的项目来应用我们所学的知识。让我们一起开始这段Python编程之旅吧!
|
2天前
|
数据采集 人工智能 数据挖掘
Python编程入门:从基础到实战的快速指南
【9月更文挑战第25天】本文旨在为初学者提供一个简明扼要的Python编程入门指南。通过介绍Python的基本概念、语法规则以及实际案例分析,帮助读者迅速掌握Python编程的核心技能。文章将避免使用复杂的专业术语,而是采用通俗易懂的语言和直观的例子来阐述概念,确保内容的可读性和实用性。
|
1天前
|
Python
探索Python编程中的装饰器魔法
【9月更文挑战第26天】在Python的世界里,装饰器就像是一把瑞士军刀,小巧而功能强大。它们让代码更简洁、可维护性更强。本文将通过实际示例,带你领略装饰器的魔力,从基础到进阶,一步步揭开它的神秘面纱。
9 2
|
2天前
|
机器学习/深度学习 人工智能 数据挖掘
探索Python编程之美:从基础到进阶
【9月更文挑战第25天】在数字时代的浪潮中,编程已成为一项宝贵的技能。本篇文章将引导你步入Python的奇妙世界,一个既适合初学者又深受资深开发者喜爱的编程语言。我们将一起揭开Python语言的基础面纱,探索它的核心概念,并通过实际示例深入理解其强大功能。无论你是编程新手还是希望提升自己的老手,这篇文章都将为你提供一条清晰的学习路径,助你在编程之旅上更进一步。
|
2天前
|
存储 开发者 Python
从理论到实践:Python中Trie树与Suffix Tree的完美结合,开启编程新篇章!
在编程领域,高效的数据结构对于解决问题至关重要。本文通过一个案例分析,介绍如何在Python中结合使用Trie树(前缀树)和Suffix Tree(后缀树)。案例聚焦于开发具备高效拼写检查和文本相似度检测功能的文本编辑器。首先,通过构建Trie树快速检查单词是否存在;接着,利用Suffix Tree检测文本相似度。尽管Python标准库未直接提供Suffix Tree,但可通过第三方库或自定义实现。本文展示了高级数据结构在实际应用中的强大功能,并强调了理论与实践相结合的重要性。
9 1