1.1.2 python基本数据类型与运算符

2023-10-30

本章引言

        任何计算机语言的学习都离不开其基础中的基础,即数据类型和运算;所以要学好一门语言必须具有扎实的基础,后期是否能够灵活使用就取决于第二章、第三章内容是否深而透。

 

变量含义

  • 用来存储一些之后可能会变化的值

  • 对科比投篮ID为 1 的一次投篮进行分析,那么我们就可以创建一个名称为 shot_id 的变量,并且将 1 值储存在变量 shot_id 中

  • 如果之后我们想要分析科比的另外一次投篮,比如投篮ID为 2 的投篮,我们只需要修改变量 shot_id 的赋值,将 shot_id 赋值为 2 即可

 

变量赋值

       通过赋值运算符 = 变量名和想要赋予变量的值连接起来,变量的赋值操作就完成了声明和定义的的过程,在其他语言中需要制定类型;同一变量可以反复赋值,而且可以是不同类型的变量,这也是Python语言称之为动态语言的原因

示例:
>>>short_id=1
>>>print(short_id)
1
>>>type(short_id)
<type 'int'>
>>>short_>>>print(short_id)
1
>>>type(short_id)
<type 'str'>

 

变量名的命名规范

       在第一章节中提到基本语法中的命名规则要素,命名规范主要有驼峰式和蛇形式,在python中变量名习惯一般遵守蛇形命名法(snake case):

  • 一般变量名,wood_id、wood_program_id;

  • 类名首字符为大写,如Python内置模块collections.abc中的Iterable类

  • 类方法名:get_wood_id();

  • 其他特殊变量,会全部大写,例如常量,MY_PI、MY_COUNT;

 

多个变量赋值

  • python允许同时为多个变量赋值。

    表现形式为:number1=number2=number3....=值
    例如:a = b = c = 1

  • python还可以实现多个变量赋值使用一个语句完成

    表现形式:number1,numbe2,numbe3=1,2,3

说明:

多个变量赋值中涉及非常重要的两个概念:解包、封包

解包:实际就是将一组数据(元组)进行一一对应的赋值给每个变量,此种表示形式实际就是解包操作;
封包:如果一个变量进行赋予多个值的话,则表示的是该变量实际就是一个元组类型,该过程称之为封包操作;

因为此处涉及元组的概念,所以在元组中还会详细举例,请理解概念。

 

常量

       常量表示“不能变”的变量Python中是没有常量的关键字的,只是我们常常约定使用大写字母组合的变量名表示常量,也有不要对其进行赋值”的提醒作用
PI=3.14159265

 

python数据类型

        python语言的数据类型包括整型、浮点型、字符串、布尔型和空值整型(int)整型的取值为整数,有正有负,如 2,-666,666 等。在科比投篮数据集中,shot_id是整型变量

Python有五个标准的数据类型:

  • Numbers(数字)

  • String(字符串)

  • List(列表)

  • Tuple(元组)

  • Dictionary(字典)

 

本章主要讲以下几种基本类型:数值型、布尔型和空值特殊类型

 

数值型

 

a1.整型:在python中其默认的数据类型就是int类型;

>>>number=10
>>>type(number)
<type 'int'>

扩展说明:并且在python3.X中不存在long类型(已经舍去),理论上在python3.X版本中的int类型为无穷存储(最大的数值范围是2的六十四次方,可以通过sys模块中maxsize;在python2.X版本中则获取int的范围是通过sys.maxint)

 

a2.浮点型:其数据类型是float类型;

>>>number=1.1
>>>type(number)
<type 'float'>

扩展说明:

1.整形与浮点型之间可以实现数据类型的转换;转换使用函数int、float

2.在python中所有的值默认都是以十进制的形式进行表示;如果需要实现数值的进制转换的话,则可以分别调用与之对应的函数或者使用int类对象进行完成;例如:int(第一个参数必须是str类型的值,base=可以是2,8,10,16)还可以使用0b表示二进制数据进行转换成十进制,0o表示八进制转换成十进制,0x表示十六进制转换成十进制(对应的函数分别是:bin、oct、hex)

3.在计算机中都是以固定的多少位进行处理数据,如果一个数其转换成二进制不足指定的位的话,则其对应的高位会采取补位补0操作;

a3.复数类型:表示形式是由实部+虚部 (z=a+bi);在python中表示的虚部的单位必须是j;

>>>number=1+1j
>>>type(number)
<type 'complex'>

扩展说明:number=2+3j可以通过复数对象中的real和imag两个属性分别获取复数的实部和虚部的值注意:在python中同样存在对应的ASCII码转换;分别使用的函数是ord、chr;例如:ord(需要传入转换成整型的一个字符)、chr(需要传入整型数字)

 

 

bool类型

     布尔值可以进行 and 、 or 和 not 运算, and 和 or 运算分别用 & 和 | 表示not 运算为非运算,即把 True 变成 False , False 变成 True
逻辑判定型;只存在两个值:True、False;常用的false的值有:""、0、[]、None、()、{}

>>>type(True)
<type 'bool'>

 

空值类型

       空值是Python里一个特殊的值,用 None 表示,一般用 None 填充表格中的缺失值使用 type() 函数来获取某值的类型

>>>type(None)
<type 'NoneType'>

 

类型转换

      函数 int()、float()、str() 和 bool() 分别用于将变量转换成整型、浮点型、字符串和布尔型变量

>>>number1=1.2
>>>int(number1)
1
>>>number2=2
>>>float(number2)
2.0
>>>number3=3
>>>str(number3)
'3'
>>>bool(number3)
True

 

思考:如果存在一个变量str1="hello",然后强制转换成int,即int(str1),其结果是?

 

isinstance用法

    通过帮助查看如下:

作用:来判断一个对象是否是一个已知的类型;

其第一个参数(object)为对象,第二个参数为类型名(int...)或类型名的一个列表((int,list,float)是一个列表)。其返回值为布尔型(True or flase)。

若对象的类型与参数二的类型相同则返回True。若参数二为一个元组,则若对象类型与元组中类型名之一相同即返回True。

简单来说就是判断object是否与第二个参数的类型相同,举例如下:

# -*- coding: utf-8 -*-test_str = '123'print(isinstance(test_str,str))#判断test_str是否是字符串类型test_int = 123print(isinstance(test_int,int)) #判断ttest_int是否是int类型test_float = 1.23print(isinstance(test_float,float))#判断test_float是否是float类型test_bool = Trueprint(isinstance(test_bool,bool))#判断test_bool是否是bool类型

 

 

ASCII码获取

       实现ASCII码与字符相互转换:其中ord()与chr()函数均为Python内置函数。ord()函数接受一个字符类型参数,并返回一个十进制整数chr()函数则为ord()函数的配对函数,其接受一个整型参数,并返回一个与其ASCII码相对应的字符。

>>> ord('A')
65
>>> chr(65)
'A'

 

运算符

       运算符和操作对象是计算机中比较常见的,任何的计算,都涉及到运算符和操作对象。数学学习的加(+)、减(-)、乘(*)、除(/)等都是运算符。操作对象就是由运算符连接起来的对象。以下为python常用运算符说明以及操作。

 

算术运算符

以下变量a为10,变量b为5:

运算符 描述 实例
+ 加:两个对象相加 a+b输出结果15
- 减:得到复数或者是一个数减去另一个数 a-b输出结果5
* 乘:两个数相乘或者是返回一个被重复若干次的字符串 a* b输出结果是50
/ 除:x除以y a/b输出结果2
% 取模:返回除法的余数 b%a 输出结果0
** 幂:返回x的y次幂 a** b 为10的5次方,输出结果100000
// 取整除(地板除):返回商的整数部分 9//2输出结果4,9.0//2.0输出结果4.0

 

比较运算符

以下变量a为10,变量b为20:

运算符 描述 实例
== 等于:比较对象是否相等 (a==b) 返回False
!= 不等于:比较两个对象是否不相等 (a!=b) 返回True
> 大于:返回x是否大于y (a>b) 返回False
< 小于:返回x是否小于y (a<b) 返回True
>= 大于等于:返回x是否大于等于y (a>=b) 返回False
<= 小于等于:返回x是否小于等于y (a<=b) 返回True

 

赋值运算符

以下变量a为10,变量b为20:

运算符 描述 实例
-= 减法赋值运算符 c-=a等价于c=c-a
* = 乘法赋值运算符 c*=a等价于c=c* a
/= 除法赋值运算符 c/=a等价于c=c/a
%= 取模赋值运算符 c%=a等价于c=c%a
** = 幂赋值运算符 c**=a等价于c=c** a
//= 取整除赋值运算符 c//=a等价于c=c//a

 

逻辑运算符

Python语言支持逻辑运算符,以下变量a为10,变量b为20:

运算符 逻辑表达式 描述 实例
And x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y的计算值 (a and b) 返回 20
Or x or y 布尔“或” - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值 (a or b) 返回 10
Not not x 布尔“非” - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True not(a and b)返回False

 

位运算符

运算符 描述 实例
& 按位与运算符 (a&b)输出结果是12 二进制解释:0000 1100
| 按位或运算符 (a|b)输出结果四61 二进制解释:0011 1101
^ 按位异或运算符 (a^b)输出结果是49 二进制解释:0011 0001
~ 按位取反运算符 (~a)输出结果是-61 二进制解释:1100 0011 在一个有符号二进制数的补码形式
<< 左移动运算符:<<“右边的数指定移动的位数,高位丢弃,低位补0 a << 2 输出结果 240 ,二进制解释:1111 0000
>> 右移动运算符 a >> 2 输出结果 15 ,二进制解释:0000 1111

扩展内容:原码、反码、补码

数字在自然界中抽象出来的时候,一棵树,两只猪,是没有正数和负数的概念的

计算机保存最原始的数字,也是没有正和负的数字,叫没符号数字

如果我们在内存分配4位(bit)去存放无符号数字,是下面这样子的

 

后来在生活中为了表示“欠别人钱”这个概念,就从无符号数中,划分出了“正数”和“负数”

正如上帝一挥手,从混沌中划分了“白天”与“黑夜”

为了表示正与负,人们发明了"原码",把生活应该有的正负概念,原原本本的表示出来

把左边第一位腾出位置,存放符号,正用0来表示,负用1来表示

 

但使用“原码”储存的方式,方便了看的人类,却苦了计算机

 

我们希望 (+1)和(-1)相加是0,但计算机只能算出0001+1001=1010 (-2)

这不是我们想要的结果!!

另外一个问题,这里有一个(+0)和(-0)

为了解决“正负相加等于0”的问题,在“原码”的基础上,人们发明了“反码”

“反码”表示方式是用来处理负数的,符号位置不变,其余位置相反

 

 

 

当“原码”变成“反码”时,完美的解决了“正负相加等于0”的问题

过去的(+1)和(-1)相加,变成了0001+1101=1111,刚好反码表示方式中,1111象征-0

人们总是进益求精,历史遗留下来的问题——  有两个零存在,+0 和 -0

我们希望只有一个0,所以发明了"补码",同样是针对"负数"做处理的

"补码"的意思是,从原来"反码"的基础上,补充一个新的代码,(+1)

我们的目标是,没有蛀牙(-0)

 

 

有得必有失,在补一位1的时候,要丢掉最高位

我们要处理"反码"中的"-0",当1111再补上一个1之后,变成了10000,丢掉最高位就是0000,刚好和左边正数的0,完美融合掉了

这样就解决了+0和-0同时存在的问题

另外"正负数相加等于0"的问题,同样得到满足

举例,3和(-3)相加,0011 + 1101 =10000,丢掉最高位,就是0000(0)

同样有失必有得,我们失去了(-0) , 收获了(-8)

以上就是"补码"的存在方式

结论:保存正负数,不断改进方案后,选择了最好的"补码"方案

 

参考信息:运算符优先级

运算符 描述
** 指数(最高优先级)
~+- 按位反转,一元加号、减号(最后两个方法名为+@和-@)
* / % // 乘、除、取模、取整除
+ - 加法、减法
>> << 右移、左移动运算符
^ | 位运算符
<= < >= > 比较运算符
<> != == 等于运算符
= += -= * = /= ** = 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

 

练一练

  1. 下列各赋值语句,语法不正确的是  (    )
    A. x+y=5    
    B. BiNumber =15    
    C. Labell.caption =time    
    D. s_Length =x+y

  2. 下列给出的赋值表达式中正确的是( )
    A.4 = M     
    B.-M = M                 
    C.B = A – 3             
    D.X + Y = 0

  3. 下列程序运行后,变量x的值为(    )
    x=2
    print(x+l)
    print(x+2)
    A、2            
    B、3                            
    C、4                                    
    D、5

  4. 设a=2,b=3,c=4,d=5,下列表达式的值是(   )。
    a<=c or 4* c==b ^2 and b+c==d
    A. -1     
    B.0    
    C. True    
    D. False

  5. 声明两个变量number1=”11”,number2=”22”计算上面两个变量的位与运算结果、位取反运算结果(公式:-(a+1)=-12 实际就是取当前数值原码所对应的反码)、左移动运算结果;要求写出其分析过程?

 

小结

Python第二章内容的学习,需要全面理解Python的基本数据类型的使用以及常用的运算符使用。

限时抢购对应文章视频课程红包:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1.1.2 python基本数据类型与运算符 的相关文章

  • 计算另一个字符串中多个字符串的出现次数

    在 Python 2 7 中 给定以下字符串 Spot是一只棕色的狗 斑点有棕色的头发 斑点的头发是棕色的 查找字符串中 Spot brown 和 hair 总数的最佳方法是什么 在示例中 它将返回 8 我正在寻找类似的东西string c
  • 如何在 __init__ 中使用await设置类属性

    我如何定义一个类await在构造函数或类体中 例如我想要的 import asyncio some code class Foo object async def init self settings self settings setti
  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • 多输出堆叠回归器

    一次性问题 我正在尝试构建一个多输入堆叠回归器 添加到 sklearn 0 22 据我了解 我必须结合StackingRegressor and MultiOutputRegressor 经过多次尝试 这似乎是正确的顺序 import nu
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • python multiprocessing 设置生成进程等待

    是否可以生成一些进程并将生成进程设置为等待生成的进程完成 下面是我用过的一个例子 import multiprocessing import time import sys def daemon p multiprocessing curr
  • 为什么一旦我离开内置的运行服务器,Django 就无法找到我的管理媒体文件?

    当我使用内置的简单服务器时 一切正常 管理界面很漂亮 python manage py runserver 但是 当我尝试使用 wsgi 服务器为我的应用程序提供服务时django core handlers wsgi WSGIHandle
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是

随机推荐

  • 电信光猫天翼网关usb插U盘共享文件

    ftp用不了 samba可以用 1 在电脑文件管理器中输入 192 168 1 1打开 在弹出框中输入光猫背后的账号密码登录即可打开共享的U盘 2 在手机ES文件管理器中 点右上角三点 新建 在弹出框中填入192 168 1 1和选择sam
  • Nginx 官网及中文官网

    英语官方 http nginx org 中文文档 http www nginx cn doc 转载于 https blog 51cto com hacker3389 1877270
  • 什么是大数据(转自知乎)

    声明 纯属个人收藏用 什么是大数据 大数据只是一个空洞的商业术语 就跟所谓的商业智能一样空洞无物 当然 这并不是说大数据没有意义 只是对于不同的人有不同的含义 A 对于投资人和创业者而言 大数据是个热门的融资标签 就和前几年流行的 SoLo
  • 磁盘快照技术

    一 概念解释 像照相机一样 机器快门一闪 很快就把刚刚的人像停留在了相纸上 存储系统中的数据 快照 与我们生活中所说的 照片 非常相似 所不同的是 照片的对象不是人 而是数据 如同照片留住了我们过去的摸样和岁月 快照把数据在某一时刻的映像也
  • 【数据结构】——顺序表介绍(独家介绍,小白必看!!)

    重点和易错点都用彩笔标记出来了 放心食用 数据结构分为线性表和非线性表 今天我们要学习的顺序表就是线性表中的一个小类 那么 何为线性表 线性表是指n个具有相同性质的数据元素的有限序列 常见的线性表有 顺序表 链表 栈 队列 字符串等等 注意
  • java非递归遍历二叉树 - Kaiqisan

    大家好 都吃晚饭了吗 我是Kaiqisan 是一个已经走出社恐的一般生徒 都说所有的递归都可以使用非递归的方式来解决 所以这次来一起康康非递归版本的二叉树的遍历 递归的本质就是不断往栈中塞入待执行代码 然后在代码块被执行的时候就会被调用执行
  • java时间格式化错误_java – SimpleDateFormat显示错误的分钟,秒和毫秒

    我已经编写了这个示例程序 我希望将日期转换为另一种格式 使用简单的日期格式时 我看不到预期的日期 public class TestDate param args public static void main String args Si
  • 聊一聊如何用IDEA追踪Bug?

    Debug用来追踪代码的运行流程 通常在程序运行过程中出现异常 启用Debug模式可以分析定位异常发生的位置 以及在运行过程中参数的变化 通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码 Debug开篇 首先看下ID
  • 仅仅上线一小时,下载量就破10W!阿里内部Java性能优化实战手册

    祸兮福之所倚福兮祸之所伏 上学的时候对这句话不以为然 但是在社会上走的时间越长越觉得有道理 前不久好兄弟和领导闹矛盾裸辞了 身为好兄弟的我总不能干看着吧 总要帮他找工作的 你们应该不会想我和他一起裸辞吧 大学的师兄有好几个在大厂 平常关系还
  • 在 Dockerfile 中 CMD 和ENTRYPOINT可以混着用吗?

    在 Dockerfile 中 CMD 和ENTRYPOINT可以混着用吗 在 Dockerfile 中 CMD 和 ENTRYPOINT 是两个不同的指令 它们可以单独使用 也可以结合使用 CMD 指令用于指定容器启动时默认执行的命令 它可
  • 利用回调函数消灭大量分支语句if,case

    1 背景 有这样一个场景 常见的通讯程序中 根据不同的消息类型 调用不同的处理函数 类似于处理登陆 退出登陆 发送消息等类型 上古操作可能会是这样的代码 void dealLogin std cout lt lt received logi
  • Android实现获取应用程序相关信息列表的方法

    本文所述为Androdi获取手机应用列表的方法 比如获取到Android应用的软件属性 大小和应用程序路径 应用名称等 获取所有已安装的Android应用列表 包括那些卸载了的 但没有清除数据的应用程序 同时在获取到应用信息的时候 判断是不
  • 替换字符串中的括号内容(java)

    问题描述 给你一个字符串 s 它包含一些括号对 每个括号中包含一个 非空 的键 比方说 字符串 name is age yearsold 中 有 两个 括号对 分别包含键 name 和 age 你知道许多键对应的值 这些关系由二维字符串数组
  • micropython 固件开发_Micropython编译固件的操作步骤

    目标 编译STM32F4固件并刷入到我们的开发板 STM32F407VET6 1 在Linux系统下进行编译操作 windows用户可以在虚拟机下运行Linux系统 推荐下载kali Linux系统 https www kali org d
  • 16个推荐系统开放公共数据集整理分享

    本文由深度学习与NLP编译 本文主要整理了一些与推荐系统相关的高质量的数据集 整理自Stack Overflow 一些文章 推荐站点和学术实验 其中 大多数数据集都是免费 开放的 但有些不是 需要获得许可或引用作者的工作才能使用 此外 其中
  • 微信云开发——日记小程序

    真正的大师 永远都怀着一颗学徒的心 一 项目简介 前一段时间在网上看到了一个云笔记的小程序 感觉挺不错的 闲暇之余 把他改造了一波 改成了一个专门写日记的小程序 同时 还增加了类似广场的小功能 就是可以把日记设置成公开 让所有的人都能看到
  • redis持久化配置

    redis有两种持久化方式 RDB和AOF 1 RDB配置方式 默认情况下 是快照RDB的持久化方式 将内存中的数据以快照的方式写入二进制文件中 默认的文件名是dump rdb redis conf默认配置 save 900 1 save
  • java多个jdk切换不同版本无法切换且上移环境JAVA_HOME无效的解决方案

    背景 我电脑上之前安好了java19 因为一些原因要下java1 8 发现可以设置计算机里的多个jdk版本 于是兴冲冲的开始了 网上的教程很详细 我也不啰嗦 前面进行的一切顺利 但是我始终无法切换对应的版本号 一直是原来的java19 后面
  • volatile概念详解及使用场景

    文章目录 一 volatile关键字特性 1 概念 2 特性 可见性 有序性 禁止指令重排序 原子性 二 使用场景 模式1 状态标志 模式2 独立观察 independent observation 模式3 一次性安全发布 模式4 vola
  • 1.1.2 python基本数据类型与运算符

    本章引言 任何计算机语言的学习都离不开其基础中的基础 即数据类型和运算 所以要学好一门语言必须具有扎实的基础 后期是否能够灵活使用就取决于第二章 第三章内容是否深而透 变量含义 用来存储一些之后可能会变化的值 对科比投篮ID为 1 的一次投