Python的类型与运算一

数字型整数

1.PNG
吐槽:博客里画图太难受了,还是截图方便。

在Python里整数可以输入或输出成二进制,八进制或者十六进制数。
二进制数表示方式为0b或者0B开头。例如:0b10110010,0B11001001
八进制数表述方式为0o或者0O开头。例如:0o632765,0O223174
十六进制数表述方式为0x或者0X开头。例如:0xff,0X3A,0xAC,0Xb7
需要把整数输出成非十进制数的时候,需要使用一下函数:
bin(i), oct(i), hex(i) 在这里i是十进制数字,输出的是文本形式。
我们需要把一个非十进制数的文本转化为整数:
int(str,base) 在这里,str是文本形式的数字,base为2,8,16 数字。各自代表
二进制,八进制,十六进制。
注:Python提供从2进制到36进制数的输入。

运算符优先级:

1
2
3
4
5
6
7
8
9
10
11
12
13
• **
• ~,+,- #这里的加和减是一元运算符
• *,/,%,//
• +,-
• <<,>>
• &
• ^,|
• <=,>=,<,>
• ==,!=
• =,+=,-=,*=,/-0=,%=,//=,**=
• is, is not
• in, not in
• and, or, not

基本数学函数

pow:幂函数
abs:绝对值
fabs:绝对值(与abs稍微有区别)(math)
round:四舍五入(2.x和3.x结果略不同)
ceil,floor:取整(math)
int,bin,oct,hex,float等:格式转换
random:随机函数(random)
cmp:比较函数(*2.x)
log:算出自然对数(math)
log10:算出底数为10的对数(math)
max,min:选出最大,最小值
modf:对浮点数分成小数部分和整数部分(math)
sqrt:算出平方根

##数学函数的应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
• bin,oct,hex:
这是将10进制转换为2进制、8进制、16进制
>>> a=8
>>> bin(a)
'0b1000'
>>> oct(a)
'0o10'
>>> hex(a)
'0x8'
• float
将整数转化为浮点数
>>> float(4)
4.0
• int
将其他进制转换为Python中使用的数值
>>> int('0b1000',2)
8
>>> int('0o10',8)
8
>>> int('0x8',16)
8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pow,sqrt,max,min,abs,fabs:
• pow:冥函数和**效果一样
>>> pow(2,3)
8
• sqrt:当前数的平方根
>>> import math
>>> math.sqrt(4)
2.0
这里需要调用math模块。
• max:最大值
>>> max(1,2,3,4,5)
5
• min:最小值
>>> min(1,2,3,4,5)
1
• abs与fabs:取绝对值
>>> abs(-123)
123
>>> math.fabs(-123)
123.0
同样是取绝对值abs保持原有数字类型,fabs则是浮点数类型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
round,ceil,floor:
• round:四舍五入
>>> round(2.4)
2
>>> round(2.5) ps:说好的五入呢?
2
>>> round(2.6)
3
在3.x里当要舍弃的数值正好为5(中间)时,会取接近的偶数值。(目前只看1位小数)
• ceil:取最小的大于该值的最大整数
>>> math.ceil(2.4)
3
• floor:取最大的小于该值的最小整数
>>> math.floor(2.4)
2

好绕啊!(▼へ▼メ)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
random:随机函数模块
• 随机取0-1之间的小数:
>>> random.random()
0.14441811734525078
取自定义数的随机数(单个\多个):
>>> random.choice((1,2,3,4,5))
4
>>> random.sample((1,2,3,4,5),3)
[5, 1, 4]
• 随机打乱顺序
>>> random.sample((1,2,3,4,5),3)
[5, 1, 4]
>>> a=[1,2,3,4,5]
>>> random.shuffle(a)
>>> a
[1, 5, 4, 3, 2]

动态类型

变量:在Python里,不像别的一些语言,需要声明变量类型。因为在Python里变量没有类型。
变量创建:当第一次赋值给一个变量的时候,它就自动被创建了。
变量类型:在Python里变量没有类型。
变量使用:当变量被表达式使用时马上被其引用的对象所取代。

1
2
如:
a=2

2.PNG
创建变量a,创建对象2,变量a引用对象2,自动形成了从变量到对象的指针。

1
2
3
4
如:
a=2
a=’two’
a=2.2

3.PNG
a分别赋值为整数,字符串,浮点数。a只是更改了引用这些对象的指针。对象是知道自己的类型的。在对象存储的头部信息里,有着指向整数类型(int)的指针。

对象回收:因为对象是独立于变量的,当不再使用的时候是得回收的。

1
2
3
4
a=2
a=’two’ 回收整数2
a=2.2 回收字符串’two’
………

当没有别的变量引用对象2的话,2就会回收,以此类推。
共享引用
在Python里两个变量可以共享一个对象,这个叫做共享引用。

1
2
3
4
5
实例:
>>> a=2
>>> b=a
>>> b
2

4.PNG
这个时候a跟b是共享对象2的

1
2
3
>>> a=3
>>> b
2

6.PNG
当a赋另一个值了,就会新创建一个对象,a变量会引用新对象,而不是改变对象,所有b=3。
列表的共享引用:

1
2
3
4
5
6
7
>>> list1=[1,2,3]
>>> list2=list1 给List2赋值List1的指针
>>> list2
[1, 2, 3]
>>> list1[0]=6 改变list1第一个元素为6
>>> list2
[6, 2, 3]

这个时候,更改的是对象里的元素,因为list2引用的对象是list1,所有list2也包含[6, 2, 3]。
有些时候需要复制列表,而不是共享。

1
2
3
4
5
6
7
>>> list1=[1,2,3]
>>> list2=list1[:] 复制List1引用的对象,把新的对象引用到List2
>>> list2
[1, 2, 3]
>>> list1[0]=6
>>> list2
[1, 2, 3]

这个时候List2指向的对象里的三个元素还是[,2,3]。

可以用下面的快捷判断

== 表示测试两个值是否相等。

1
2
3
4
>>> a=1
>>> b=1
>>> a == b
True

在python里多个变量引用同一整数,字符串的时候,会引用同一对象。 所以上面的a==b和a is b的结果都会是True。
is 表示两个值是否是同一对象。

1
2
3
4
5
6
7
8
>>> a=2
>>> b=2
>>> a is b
True
>>> a=564
>>> b=564
>>> a is b
False

注: 整数在程序中的使用非常广泛,python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 python 的程序中,无论这个整数处于LEGB中的哪个位置,所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。

到此结束

感觉写Python要写好久好久哦!
如有错误请联系lanbaidetanlang@qq.com

文章目录
  1. 1. 数字型整数
    1. 1.1. 运算符优先级:
    2. 1.2. 基本数学函数
  2. 2. 动态类型
    1. 2.0.1. 可以用下面的快捷判断
    2. 2.0.2. 到此结束