文章目录

  • 1、Python 变量
  • 2、数据类型
  • 2.1、基本类型:
  • 2.2、数据容器或者数据结构
  • 2.3、其他类型
  • 3、整数类型 --- class int
  • 3.1、进制转换的函数
  • 3.2、字面值表示
  • 4、小数类型 --- class float
  • 4.1、字面值表示
  • 4.2、相关的函数
  • 5、bool 类型 --- class bool


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() 可以用来构造特定类型的数字。


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

任何对象都可以进行逻辑值的检测,以便在 ifwhile 作为条件或是作为下文所述布尔运算的操作数来使用。

产生布尔值结果的运算和内置函数总是返回 0False 作为假值,1True 作为真值,除非另行说明。 (重要例外:布尔运算 orand 总是返回其中一个操作数。)

下面基本完整地列出了会被视为值的内置对象:

  • 被定义为假值的常量: NoneFalse
  • 任何数值类型的零: 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 的子类 或者 同类