文章目录
Python 03-变量和数据类型
1、Python 变量
变量就是数据的名称,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。
- Python 中,使用变量 不需要预先定义及声明
- 变量的名称 只要符合标识符的定义就行
- 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
- Python语言中,所有的
数据
都被称之为 对象, 个人感觉所有的东西都是对象,才对,😄 - Python不是强类型的语言,变量可以赋不同类型的值
# 直接起名,直接使用
>>> a= 'hello' // 此时是字符串类型
>>> print(a)
hello
>>> a = 1 // 此时是整数类型
>>> print(a)
2、数据类型
数据类型主要有 :
2.1、基本类型:
基本类型是首先要掌握的数据类型,其他的可暂时不考虑。
-
数字
- int : 整数 ----- 具有无限的精度
- 布尔型 算是整数的特殊形式
- float :小数 ----- 通常用 C 中的
double
来实现,详见 sys.float_info - complex :复数
构造函数 int()、 float() 和 complex() 可以用来构造特定类型的数字。
- int : 整数 ----- 具有无限的精度
2.2、数据容器或者数据结构
-
序列 — list, tuple, range
- 字符串 — 也就是 str 对象,也是不可变序列
- 二进制序列类型 — bytes, bytearray, memoryview
-
映射 — dict
-
集合 — set, frozenset
2.3、其他类型
暂时不考虑,详细内容可参考python的官档 【内置类型】部分。
3、整数类型 — class int
整型数字面值的长度没有限制,能一直大到占满可用内存,😂
>>> a = 10
>>> print(type(a))
<class 'int'>
>>> isinstance(a,int)
True
class type 内置模块中的 class,表示一个类,type(object) 是构造函数,返回这个obj代表的类
isinstance(obj, class_or_tuple, /) 是内置函数,返回obj 是否是 class_or_tuple 的实例或者 (直接、间接 或 虚拟) 子类
help(isinstance) 启动内置的帮助函数(此函数主要在交互式中使用),通过
site
模块加入到内置命名空间。
3.1、进制转换的函数
-
bin() — 将一个整数转变为一个前缀为“0b”的二进制字符串
>>> bin(10) '0b1010'
-
oct() — 将一个整数转变为一个前缀为“0o”的八进制字符串。
>>> oct(10) '0o12'
-
hex() — 将整数转换为以“0x”为前缀的小写十六进制字符串。
>>> hex(10) '0xa'
-
format(value[, format_spec]) 将 value 转换为 format_spec 控制的“格式化”表示。
在格式化字符串时讲解 -
int(‘x’,base=10) — 将字符串转换为 base 进制 的整数
如果base 非空,则X必须是字符串类型 。 base >= 2 and <= 36>>> int('11',16) 17
3.2、字面值表示
在确定数字大小时字面值中的下划线会被忽略。它们可用来将数码分组以提高可读性。一个下划线可放在数码之间,也可放在基数说明符例如 0x 之后。
注意非零的十进制数开头不允许有额外的零。这是为了避免与 Python 在版本 3.0 之前所使用的 C 风格八进制字面值相混淆。
7 2147483647 0o177 0b100110111
3 79228162514264337593543950336 0o377 0xdeadbeef
100_000_000_000 0b_1110_0101
4、小数类型 — class float
小数(浮点数)是用 C 的double来实现的
>>> a = 1.
>>> type(a)
<class 'float'>
4.1、字面值表示
浮点数字面值由以下词法定义进行描述:
#小数格式: 浮点 | 浮指floatnumber ::= pointfloat | exponentfloat # 浮点:[数字] 小数 | 数字'.' 例如:.1、0.1、1.pointfloat ::= [digitpart] fraction | digitpart "." # 浮指:科学计数表示法,带'e'或者'E'exponentfloat ::= (digitpart | pointfloat) exponent# 部分数字:数字中带下划线,下划线可有可无digitpart ::= digit (["_"] digit)*# 小数:小数点+数字fraction ::= "." digitpart# 指数:'E' + [+,-] + 部分数字exponent ::= ("e" | "E") ["+" | "-"] digitpart
整型数部分和指数部分在解析时总是以 10 为基数。例如,077e010
是合法的,且表示的数值与 77e10
相同。浮点数字面值允许的范围依赖于具体实现。对于整型数字面值,支持以下划线进行分组。
一些浮点数字面值的示例如下:
3.14 10. .001 1e100 3.14e-10 0e0 3.14_15_93
4.2、相关的函数
运算 | 结果: |
---|---|
float.as_integer_ratio() | 返回一对整数,其比率正好等于原浮点数并且分母为正数 |
float.is_integer() | 返回 float 实例可用有限位整数表示 |
float.hex() | 以十六进制字符串的形式返回一个浮点数表示 |
classmethod float.fromhex(s) | 以十六进制字符串 s 表示的浮点数的类方法 |
math.trunc(x) | x 截断为 Integral |
round(x[, n]) | x 舍入到 n 位小数,半数值会舍入到偶数。 如果省略 n,则默认为 0。 |
math.floor(x) | <= x 的最大 Integral |
math.ceil(x) | >= x 的最小 Integral |
5、bool 类型 — class bool
任何对象都可以进行逻辑值的检测,以便在 if
或 while
作为条件或是作为下文所述布尔运算的操作数来使用。
产生布尔值结果的运算和内置函数总是返回 0
或 False
作为假值,1
或 True
作为真值,除非另行说明。 (重要例外:布尔运算 or
和 and
总是返回其中一个操作数。)
下面基本完整地列出了会被视为假值的内置对象:
-
被定义为假值的常量:
None
和False
。 -
任何数值类型的零:
0
,0.0
,0j
,Decimal(0)
,Fraction(0, 1)
-
空的序列和多项集:
''
,()
,[]
,{}
,set()
,range(0)
class bool(int) : bool 是int 的子类
>>> issubclass(bool,int)True
issubclass(cls, class_or_tuple, /)
返回 cls 是否 class_or_tuple 的子类 或者 同类