数据类型和基本运算符

13 阅读8分钟

保留字和标识符

保留字

  • 保留字是Python已经被赋予特定意义的一些单词,在开发程序时,不可以把这些保留字作为变量、函数、类、模块和其他对象的名称来使用(import是小写的不是大写的,写错了) image.png
  • 查看保留字
import keyword

print(keyword.kwlist)
  • 保留字区分大小写
  • 错误使用会报错:SyntaxError 语法错误

标识符

  • 标识符可以简单地理解为一个名字,它主要用来标识变量、函数、类、模块、和其他对象的名称
  • Python标识符的命名规则
    • 可以是字母、下划线 “_” 和数字,并且第一个字符不能是数字
    • 不能使用Python中的保留字
    • 标识符严格区分大小写
    • 以下划线开头的标识符有特殊意义,一般应避免使用相似的标识符
    • 允许使用中文作为标识符,但不建议使用

标识符的命名规范

  • 模块名尽量短小,并且全部用小写字母,可以使用下划线分隔多个字母。例如:grame_main
  • 包名尽量短小,并且全部使用小写字母,不推荐使用方下划线。例如:com.bjmsb,不推荐使用com_bjmsb
  • 类名采用单词首字母大写形式(Pascal风格)。例如:MyClass
  • 模块内部的类采用 “_”+Pascal 风格的类名组成,例如:在MyClass中的内部类 _InnerMyClass
  • 函数、类的属性和方法的命名,全部使用小写字母,多个字母之间使用下划线分隔
  • 常量命名时采用全部大写字母,可以使用下划线
  • 使用单下划线 “_” 开头的模块变量或函数式受保护的,在使用 “from xxx import *” 语句从模块中导入时,这些模块变量或函数不能被导入
  • 使用双下划线 “_” 开头的实例变量或方法是类私有的
  • 以双下划线开头和结尾的是Python的专用标识,例如:init() 表示初始化函数

变量、定义及使用

什么是变量

  • 变量是保存和表示数据值的一种语法元素,可以简单的理解为 “名字”
  • 变量的值是可以改变的,可以通过赋值的方式被修改

变量的定义

  • 语法结构
    • 变量名 = value
  • Python是一种动态类型的语言,变量的类型可以随时变化
    • 使用内置函数 type() 可以查看变量的数据类型
  • 允许多个变量指向同一个值
    • 使用内置函数 id() 可以返回变量所指的内存地址

变量命名应遵循以下几条规则

  • 变量名必须是一个有效的标识符
  • 变量名不能使用Python中的保留字
  • 慎用小写字母 l 和大写字母 O
  • 应选择有意义的单词作为变量名

常量

  • 常量就是在程序运行过程中,值不能改变的量
  • Python中没有定义常量的保留字
  • 常量规定使用大写字母和下划线组成
  • 常量首次赋值后,还是可以被其他代码修改的

基本数据类型

数值类型

整数类型

  • 表示整数数值,即没有小数部分的数值
  • 正整数、负数和0
  • 理论上的取值范围内 [负无穷, 正无穷]

image.png

浮点数类型

  • 表示带有小数点的数值
  • 浮点数由整数部分和小数部分组成
  • Python浮点数类型必须带有小数部分,小数部分可以是0
  • 浮点数可以使用科学计数法表示
  • 两个浮点数运算,有一定概率运算结果后增加一些 “不确定的” 尾数
  • 使用内置函数 round() 限定运算结果需要保留的小数位数
    •   print(round(3.14+1, 2))
      
  • 不可变数据类型

复数类型

  • Python中的复数与数学中的复数形式完全一致
  • 复数由实部和虚部组成
  • j 是复数的一个基本单位,被定义为 j = 根号-1,又称“虚数单位”
  • .real 获取实数部分,.imag 获取虚数部分
  • 不可变数据类型

字符串类型

  • 字符串就是连续的字符序列,可以表示计算机所能识别的一切字符
  • 不可变数据类型,即不可变字符序列
  • 单行字符串使用 '……' 或 "……"
    • 多行字符串使用 '''……''' 或 """……"""

转义字符

  • 反斜杠字符()是一个特殊字符,在Python字符串中表示“转义”,该字符与后面相邻的一个字符共同组成一个新的含义
  • 在字符串界定符前加上 r 或 R,转义字符失效,将原样输出

image.png

字符串的索引

  • 对字符串中某个字符的检索成为索引
  • 语法结构
    • 字符串或字符串变量[序号]

image.png

字符串的切片

  • 对字符串中某个子串或区间的检索称为切片
  • 语法结构

image.png

字符串类型的操作

image.png

布尔类型

  • 用来表示真值或假值
  • 在Python中使用标识符 True 和 False 表示布尔类型的值
  • 布尔类型可以转换化为数值,True表示1 False表示0
  • 所有对象都有一个布尔值,使用内置函数bool() 进行测试
  • 布尔值为假的情况
    • False 或者 None
    • 数值中的0,包含0, 0.0, 虚数0
    • 空序列, 包含空字符串、空列表、空字典
    • 自定义对象的实例,该对象的 _bool_() 方法返回 False 或 _len_() 方法返回0

数据类型之间的转换

隐式类型转换

通过数学运算可以隐式将 int类型 转换成 float类型

x = 10
y = 3
z = x/y
print(z, type(z))  # 3.3333333333  <class 'float'>

显式类型转换

image.png

eval() 函数

  • eval(s)函数 将去掉字符串s最外侧的引号,并按照Python语句方式执行去掉引号后的字符串
  • 语法格式
    • 变量 = eval(字符串)
  • eval()函数 经常和 input()函数 一起使用,用来获取用户输入的数值型
age = eval(input("Enter your age: "))
print(age, type(age))
height = eval(input("Enter your height: "))
print(height, type(height))
hello = "你好"
print(eval("hello"))

不同的进制数

进制的进位

  • 二进制:0或1组成,满二进一,以0b开头或0B开头
  • 八进制:0~7组成,满八进一,以0o或0O开头
  • 十进制:0~9,满十进一
  • 十六进制:0~9 和 a~f 或 A~F 组成,满十六进一,以0x或0X开头

进制之间的转换

运算符

算数运算符

处理四则运算的符号,在数字的处理中应用得最多

image.png

运算符的优先级

  • 先乘除后加减
  • 同级运算符从左到右进行计算
  • 可以使用 () 调整计算的优先级

image.png

算数运算符优先级由高到低

  • 第一级:**
  • 第二级:*,/,%,//
  • 第三级:+,-

注意事项:除数不能为0

赋值运算符

  • 主要用于为变量进行赋值
  • 直接把赋值运算符 “=” 右边的值赋给左边的变量

image.png

Python 支持系列解包赋值

a,b = 10,20
print(a,b)

b,a =a,b
print(a,b)

比较运算符

  • 也称关系运算符,用于对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则值为 True,比较结果为假,值为 False

image.png

逻辑运算符

  • 逻辑运算符是对真和假两种布尔值进行运算,运算的结果仍是一个布尔值

image.png

  • 使用逻辑运算符进行逻辑运算的结果

image.png

and: 当第一个表达式为 False 时,不计算第二个表达式

or: 当第一个表达式为 True 时,不计算第二个表达式

位运算符

  • 位运算符是把数字看作二进制数来进行计算的,所以需要先将要执行运算的数据转换为二进制,然后才能进行执行运算

“位与” 运算(&)

* 两个操作数据的二进制表示,只有对应数位都是1时,结果数位才是1,否则为0

image.png

“位或” 运算(|)

  • 两个操作数据的二进制表示,只有对应数位都是0时,结果数位才是0,否则为1

image.png

“位异或” 运算(^)

  • 两个操作数据的二进制相同(同时为0或同时为1),结果为0,否则为1

image.png

“位取反” 运算(~)

  • 操作数中对应的二进制数1修改为0,0修改为1

image.png

“左位移” 运算(<<)

  • 将一个二进制数向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充
  • 左移位运算相当于乘以2的N次幂

“右位移” 运算(>>)

  • 将一个二进制数向右移动指定的位数,右边(低位端)溢出的位被丢弃,左边(高位端)的空位端,如果最高位是0(正数)左侧空位填0,如果最高位是1(负数),左侧空位填1
  • 右移位运算相当于除以2的N次幂

image.png