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基本数据类型与运算符 的相关文章

  • 如何手动计算分类交叉熵?

    当我手动计算二元交叉熵时 我应用 sigmoid 来获取概率 然后使用交叉熵公式并平均结果 logits tf constant 1 1 0 1 2 labels tf constant 0 0 1 1 1 probs tf nn sigm
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • 如何在 Python 中解析和比较 ISO 8601 持续时间? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Python v2 库 它允许我解析和比较 ISO 8601 持续时间may处于不同单
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • Jupyter Notebook 找不到 Python 模块

    不知道发生了什么 但每当我使用 ipython 氢 原子 或 jupyter 笔记本时都找不到任何已安装的模块 我知道我安装了 pandas 但笔记本说找不到 我应该补充一点 当我正常运行脚本时 python script py 它确实导入
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • Python ImportError:无法导入名称 __init__.py

    我收到此错误 ImportError cannot import name life table from cdc life tables C Users tony OneDrive Documents Retirement retirem
  • Scipy Sparse:SciPy/NumPy 更新后出现奇异矩阵警告

    我的问题是由大型电阻器系统的节点分析产生的 我基本上是在设置一个大的稀疏矩阵A 我的解向量b 我正在尝试求解线性方程A x b 为了做到这一点 我正在使用scipy sparse linalg spsolve method 直到最近 一切都
  • 如何应用一个函数 n 次? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 假设我有一个函数 它接受一个参数并返回相同类型的结果 def increment x return x 1 如何制作高阶函数repeat可以
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street
  • 在 JavaScript 函数的 Django 模板中转义字符串参数

    我有一个 JavaScript 函数 它返回一组对象 return Func id name 例如 我在传递包含引号的字符串时遇到问题 Dr Seuss ABC BOOk 是无效语法 I tried name safe 但无济于事 有什么解

随机推荐

  • 电信光猫天翼网关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 的一次投