Python学习笔记03-数据类型与变量

数据类型

计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在 Python 中,能够直接处理的数据类型有以下几种:

整型

在 python3 中只有一种整型int,可以处理任意大小的整数,包括负整数,大小没有限制。

/// 运算符

在整数除法中,除法/总是返回一个浮点数。如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符//:

>>> 17 / 3 
5.666666666666667
>>> 17 // 3
5
>>> 17 % 3
2

注意: //得到的不一定是整数类型的结果,与分母分子的数据类型有关系。

>>> 17.0 / 3
5.666666666666667
>>> 17.0 // 3
5.0
>>> 17.0 % 3
2.0

整型的二进制、八进制、十六进制表示:

>>> a = 0b100 #二进制
>>> a
4
>>> a = 0o100 #八进制
>>> a
64
>>> a = 0x100 #十六进制
>>> a
256

浮点型

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x10912.3x108 是完全相等的。浮点数可以用数学写法,如 1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把 10 用 e 替代,1.23x109 就是 1.23e9,或者12.3e80.000012 可以写成 1.2e-5 等等。

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

字符串

python 字符串是以'或者"括起来的任意文本,比如'abc'、"ABC"等。

Python 中的字符串不能改变。

如果字符串中既包含'又包含"

'I\'m \"OK\"。'

如果字符串里面有很多字符都需要转义,就需要加很多 \,为了简化,Python 还允许用 r” 表示” 内部的字符串默认不转义:

>>> print('\\\t\\')
\       \
>>> print(r'\\\t\\')
\\\t\\

如果字符串内部有很多换行,用 \ n 写在一行里不好阅读,为了简化,Python 允许用”’…”’的格式表示多行内容:

>>> print('''hello
... world
... python
... ''')
hello
world
python

>>>

多行字符串”’…”’还可以在前面加上r使用:

>>> print(r'''hello\n
... world''')
hello\n
world

字符串运算符

a = 'Hello'
b = 'Python'
操作符 描述 实例
+ 字符串连接 a+b 输出 HelloPython
* 重复字符串 a*2 输出 HelloHello
[] 通过索引获取字符 a[1] 输出 e
[:] 截取字符串的一部分 a[1:4] 输出结果 ell
in 成员运算符,包含给定的字符返回 True ‘H’ in a 输出 True
not in 成员运算符,不包含给定的字符返回 True ‘M’ not in a 输出 True
r/R 所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 print(r’\n’) 或者 print(R’\n’)

布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有 True、False 两种值,要么是 True,要么是 False,在 Python 中,可以直接用 True、False 表示布尔值(请注意大小写)。

注意:在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。

>>> True + 0
1
>>> False + 0
0
>>> True + False
1

空值

空值是 Python 里一个特殊的值,用 None 表示。None 不能理解为 0,因为 0 是有意义的,而 None 是一个特殊的空值。

_

在交互模式中,最后被输出的表达式结果被赋值给变量 _

>>> a, b = 10, 20
>>> a + b
30
>>> print(_)
30
>>> _
30
>>> a - b
-10
>>> _
-10
>>> _ = a ** 2
>>> _
100

此处,_ 为可读可写变量。

变量

python 中的变量不需要声明,每个变量在使用前都必须赋值,变量赋值后才会被创建。

在 python 中,变量就是变量,本身没有类型,我们所说的 “类型” 是变量所指向的内存中对象的类型。

常量

所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。

在 Python 中,通常用全部大写的变量名表示常量:

PI = 3.14159265359

但事实上 PI 仍然是一个变量,Python 根本没有任何机制保证 PI 不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量 PI 的值,也没人能拦住你。

isinstancetype 的区别

内置的 type 函数可以用来查询变量所指向的对象类型:

>>> a = 'hello world'
>>> type(a) 
<class 'str'> #字符串
>>> a = 123
>>> type(a)
<class 'int'> #整型
>>> a = False
>>> type(a)
<class 'bool'> #布尔型
>>> a = 123.456
>>> type(a)
<class 'float'> #浮点型
>>> a = 4+3j
>>> type(a)
<class 'complex'> #复数型

还可以使用 isinstance 来判断:

>>> a = 123
>>> isinstance(a, int)
True

isinstancetype 的区别在于:

class A:
    pass

class B(A):
    pass

print(isinstance(A(), A)) #True
print(type(A()) == A)     #True       
print(isinstance(B(), A)) #True  
print(type(B()) == A)     #False

区别就是:

  • type() 不会认为子类是一种父类类型。
  • isinstance() 会认为子类是一种父类类型。

小结

Python 支持多种数据类型,在计算机内部,可以把任何数据都看成一个 “对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。

对变量赋值 x = y 是把变量 x 指向真正的对象,该对象是变量 y 所指向的。随后对变量 y 的赋值不影响变量 x 的指向。

注意:Python 的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如 Java 对 32 位整数的范围限制在-2147483648-2147483647

Python 的浮点数也没有大小限制,但是超出一定范围就直接表示为 inf(无限大)。

猜你喜欢

转载自blog.csdn.net/u013958997/article/details/80941222