Python_数据类型1

链式赋值_系统解包赋值_常量

链式赋值

链式赋值用于同一个对象赋值给多个变量。

>>>x=y=123     #相当于x=123;y=123;

系统解包赋值

系列数据赋值给对应相同个数的变量(个数必须保持一致)

>>>a,b,c=4,5,6     #相当于a=4,b=5,c=6

操作使用系列解包赋值实现变量变换

>>>a,b=1,2
>>>a,b=b,a
>>>print(a,b)
2 1

常量

Python不支持常量,即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值做出修改

>>>MAX_SPEED=120
>>>print(MAX_SPEED)
120
>>>MAX_SPEED=140     #实际上是可以修改的。只是逻辑上不能做修改
>>>print(MAX_SPEED)
140

内置数据类型_基本算术运算符

最基本内置数据类型介绍

每个对象都有数据类型,python中最基本的内置数据类型:

  • 整型
    整数:2345 13 50
  • 浮点型
    小数:3.14或者科学计数法314e-2
  • 布尔型
    表示真假:仅包含:True False
  • 字符型
    由字符组成的序列:’abc’ ‘sxt’ ‘安安’

数字

Python支持整数(如:50,520)和浮点数(如:3.14,10.0,1.23e2),我们可以对数字做如下运算。

运算符说明实例结果
+加法3+25
-减法30-525
*乘法3*618
/浮点数除法8/24.0
//整数除法7/23
%模(取余)7%43
**2**38

除数为0,会产生异常。

使用divmod()函数同时得到商和余数:

>>>divmod(13,3)
(4,1)

divmod()是一个函数,我们以后会详细介绍。它返回的是一个元组(后续将会学习)。

整数_不同进制_其他类型转换成整数

整数

Python中,除10进制外,还有其他三种进制:

表示进制说明
0b或0B二进制0 1
0o或0O八进制0 1 2 3 4 5 6 7
0x或0X十六进制0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

这三种进制可以非常方便的进行“位运算”。(位运算后续介绍)

【操作】测试不同进制

>>>12
12
>>>0b101
5
>>>0o19
SyntaxError:invalid syntax
>>>0o10
8
>>>0xff
255
>>>0xf
15

(Tips:可以查阅一下二进制、八进制、十六进制的英语单词,帮助记忆)

使用int()实现类型转换:

  • 浮点数直接舍去小数部分。如int(9.9)结果为9
  • 布尔值True转为1,False转为0。如:int(True)结果为1
  • 字符串符合整数格式(浮点数格式不行)则直接转换为对应整数,否则报错

其中,第三条理解可参考下面实例:

>>>int(‘456’)
456
>>>int(‘456abc’)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '456abc'

自动转型:

整数和浮点数混合运算时,表达式结果自动转型成浮点数。2+8.0结果为10.0(和C语言有点类似)

整数可以有多大?

Python2中,int是32位,可以存储从-2147483648到2147483648的整数。(约±21亿)。Long类型是64位,可以存储:-263—263-1之间的数值。
Python3中,int可以存储任意大小的整数,Long被取消。我们甚至可以存储下面的值:

>>>googol=10**100
>>>googol
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Googol也是Google最初的名字,这也是Google最初的含义。

Python3中可以做超大数的运算,而不会导致“整数溢出”,这也是Python特别适合做科学计算的原因。

浮点数_自动转换_强制转换_增强赋值运算符

浮点数

浮点数,称为float
浮点数用a×b^10形式的科学计数法表示。比如:3.14表示成:314E-2或者314e-2
这些数字在内存中也是按照科学计数法存储

类型转换和四舍五入

  • 类似于int(),我们也可以用float()将其他类型转换为浮点数。
  • 整数和浮点数混合运算时,表达式结果自动转换为浮点数。比如2+8.0结果为10.0
  • round(value) 可以返回四舍五入的值。
    注:但不会改变原有值,而是产生新的值。

增强型赋值运算符

运算符+、-、*、/、//、**、%和赋值运算符=结合可以构成“增强型赋值运算符”。(类似于C语言中复合赋值运算符)

增强赋值运算符

运算符例子等价于
+=a+=2a=a+2
-=a-=2a=a-2
*=a*=2a=a*2
/=a/=2a=a/2
//=a//=2a=a//2
**=a**=2a=a**2
%=a%=2a=a%2

(注:+=之间不能加空格)

时间表示_unix时间点_毫秒和微秒_time模块

时间的表示

计算机中时间的表示是从“1970年1月1日00:00:00”开始,以毫秒(1/1000)秒进行计算。我们也把1970年这个时刻称为“unix时间点
这样,我们就把时间全部用数字来表示了。

(注:像一把刻度尺,因此时间就是一个数字)
Python中可以通过**time.time()**获得当前时刻,返回的值是以秒为单位,带微秒(1/1000毫秒)精度的浮点值。例如:1530167364.8566
(注:但需要先导入time模块,用import time命令)

多点坐标_绘出折线图_计算两点距离

【操作】定义多点坐标_绘出折线_并计算起始点和终点距离
源码:

import turtle    #导入turtle模块
import math      #导入math模块
#定义多个点的坐标
x1,y1 = 100,100
x2,y2 = 100,-100
x3,y3 = -100,-100
x4,y4 = -100,100

#绘制折线
turtle.penup()
turtle.goto(x1,y1)
turtle.pendown()

turtle.goto(x2,y2)
turtle.goto(x3,y3)
turtle.goto(x4,y4)


#计算起止点和终点距离

distance = math.sqrt((x1-x4)**2 + (y1-y4)**2)

turtle.write(distance)

布尔值_比较运算符_逻辑运算符_短路问题

布尔值

Python2中没有布尔值,直接用数字0表示False,1表示True
Python3中,把True和False定义成了关键字,但他们的本质还是1和0,甚至可以和数字相加。

>>>a=True
>>>b=3
>>>a+b
4

比较运算符

所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。(和C语言有点类似)

以下假设变量a为15,变量b为30

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

逻辑运算符

运算符格式说明
or 逻辑或x or yx为True,则不计算y,直接返回x。x为false,则返回y
and 逻辑与x and yx为True,则返回y的值。x为False,则不计算y,直接返回False
notnot xx为True,则返回False。x为False,则返回True

同一运算符

同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址(id)。

运算符描述
isis是判断两个标识符是不是引用同一个对象
is notis not是判断两个标识符是不是引用不同对象

is与"=="区别:

  • is用于判断两个变量引用对象是否为同一个,即比较对象的地址(id)

  • "=="用于判断引用变量引用对象的值(value)是否相等,默认调用对象的_eq_()方法。
    (注:综上,is判断对象的id,==判断对象的value)

在这里插入图片描述

整数缓存问题

Python仅仅对比较小的整数对象进行缓存(范围为[-5,256])缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行,而在Pycharm或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围为[-5,任意正整数])。
在这里插入图片描述
总结:

  • is比较两个对象的id,是否指向同一个地址。
  • ‘’==’'比较两个对象内容是否相等, value(值)是否相等。
  • 小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用。
  • is运算符比’’==’'效率高,在变量和None比较时,应该使用is
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值