show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次了解的是字符串
- 字符串有一些要素
- 字符串长度
- 这些字符都可以用下标索引
- 字符的长度本身有长有短
- ascii 包括各种 转义字符
- 都对应 1 个字节
- unicode 字符中的汉字
- 可能对应 3 个字节
- ascii 包括各种 转义字符
- 但不管本身是 1 字节 还是 3 字节
- 都算一个字符
- 字符串赋值过程
- 在内存中 分配一块空间
- 放上需要的字符串
- 把字符串在内存的地址
- 赋给一个字符串变量
- 这就是字符串变量的id
- 除了字符串还有什么变量类型?🤔
- 上面两句就是数字型变量的
- 定义
- 引用
- 这太简单了吧
- 我怎么知道他是数字类型的?
- 自省
- introspection
- 知道自己是干什么的
- 可以看到这是一个数字类型的变量
- 地址在 id(i_age)
- 第一句的赋值过程
- 在内存中分配一块空间存储数字型的变量
- 分配的空间在 id(i_age)
- 类型 class 是 int
- 然后把分配空间地址给 i_age 变量
- 两个不同类型的变量
- 在打印输出的时候
- 这两个东西看起来完全一样啊
- 具体什么类型有关系么?
- 还真有
- 首先就是运算的逻辑
- 字符串的加法是拼接(cancatenate)在一起
- 数字的加法是按照数字的值相加
- 为什么数字 int 类型能够按照值相加呢?
- 这个变量是一个整型的变量
- 定义的时候
- 起心动念产生这个变量的时候
- 就是为了运算
- 这和字符串变量不同
- 字符串变量是一个字符的串
- 一开始就是为了字符串查找、匹配、显示之类的目的
- int 全称 integer
- 意思是整的数
- 和零碎的相反
- 一个就是一个
- 两个就是两个
- 没有一个半
- 这个 int 怎么用呢?
- 注意这是一个class(类)
- 可以把字符串转化为 int 类的对象
- 也可以把其他进制的数转化为十进制整型数字
-
一般语言比如 c、java 都把 int 当做关键字
- 但是在 python 这里 int 是一个类
-
在编程语言中
- 什么应该当做类?
- 什么应该进入关键字?
- 这是一个很底层的核心问题
- 这是一个语言设计的时候的最初的问题
- 因为他涉及到了
- 分词 lexical analysis 如何拆成最小的元素
- 语法 parser 这些元素应该如何组合
- 语义分析 Syntax analysis 组合起来应该如何理解
- 理解了之后应该生成怎么的流程
- 是一个语言的根本
- 类名 int 被定义为变量名可能会引发问题
- 就是下图的这个问题
- int、str 都是类
- 都要注意这些问题
- 虽然没有进入关键字
- 不过有哪些是属于关键字呢?
- 下面是 python3.9 目前所有的关键字
- 这里面我们了解过
- for
- import
- 这四个是一套的
- try
- except
- else
- finally
- 很多关键字的习惯来自于 c 语言
- 还记得么?
- 那个最早的 hello world 所用的编程语言
- 其实也是编 python 用的语言
- 还记得么?
- 但是 python 和 c 还是有一些区别
- int 在 c 里面是声明整型变量的关键字
- int 在 python 中是一个类
- 具体的值是一个整型数字的对象
- 但是具体来说
- 这个 int 在电脑内存里面如何存储呢?
- 在打印输入的时候使用十进制
- 这符合我们的生活习惯
- 因为我们有十个手指头
- 在电脑存储和运算的时候使用二进制
- 一切东西在电脑内不都是用二进制方式存储的
- 因为电脑里只有高低电平(0 和 1)
- 相当于两个手指头
- 不管你有几个手指头
- 同样是数 41 个苹果
- 数出来的数字是不会变的
- 真的么?
- (41)10 进制 和 (101001)2 进制 是相等的
- 互相之间可以相互转化
- 不论用 10 个手指头、还是 2 个手指头
- 41 个苹果的数量本身不会变
- 只是计数方法变了
- int(bin(iAge),2)
- 这是什么意思呢?
- 先查询帮助
- int(bin(iAge),2)
- 把
"0b101001"
从二进制转化十进制
- 把
- int甚至可以
- 把7进制数转化为10进制
- 七进制的123 转化为 十进制
- 得到 66
- bin又该如何理解来着?
- help(bin)
- bin(41)
- 0b101001
- 其中 0 明确这是一个数字
- b 明确这是一个二进制数字
int("0b101001", base = 2)
int("101001", base = 2)
int("101001", 2)
- 这三条其实是等价的
- "0b..."明确是二进制数字
- base 是参数的名字标识多少进制
- 这次了解的是整型数字类变量
- 这类变量和字符串不同
- 数字变量是直接存储二进制形式的
- 可以用 int()函数把 2 进制转化为 10 进制
int()
- 接受一个字符串
- 明确字符串使用的进制
- 二进制和十进制之间可以互相转化
- bin(41) 把 10 进制 转化为 2 进制
- int("101001",2) 把 2 进制 转化为 10 进制
- 除了 二进制、 十进制
- 还有什么样的进制来着
- 怎么转化呢?🤔
- 下次再说👋🏻