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

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

动态类型_静态类型  

回忆上次内容  


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


  • 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  


目录
相关文章
|
1月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
114 80
|
6天前
|
人工智能 Unix Java
[oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
35 9
|
11天前
|
C语言 Python
[oeasy]python058_一句话让python崩了
本文介绍了如何通过重新赋值`__builtins__`使Python环境崩溃,并探讨了下划线的来历及其在编程中的作用。文章回顾了上次内容,展示了覆盖内建模块导致系统崩溃的过程,解释了恢复方法,以及PEP 8规范中关于空格使用的建议。最后,文章总结了下划线在变量定义和提高代码可读性方面的重要性,并简述了其从打字机时代到计算机时代的演变。
23 10
|
21天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
38 14
|
13天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
25 3
|
16天前
|
存储 Python
[oeasy]python056_python中下划线是什么意思_underscore_理解_声明与赋值_改名字
在Python中,下划线有多种用途。单下划线(_)常用于避免命名冲突,如将`max`改为`max_`以保留内置函数功能。双下划线(__var__)通常用于特殊方法和属性,如`__name__`、`__doc__`等。此外,单下划线(_)在交互式解释器中表示上一次表达式的值,但不建议作为普通变量名使用。总结:下划线用于避免命名冲突及特殊标识。
21 1
|
30天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
35 9
|
2天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
7 0
|
1月前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
117 5
|
27天前
|
Shell 开发工具 Python
如何在vim里直接运行python程序
如何在vim里直接运行python程序