1. 基本数据类型及其运算符

数据:整数、布尔值;操作符;变量、赋值;表达式
函数、子程序、参数、返回值、调用
流程控制、分支、循环
算法、优化
程序:语句、注释、语句块
输入、处理、输出
编译器

1.1 常量变量&类型系统

常量与变量

  • 常量:一旦赋值,就不能改变他的值。注意:在python中没有常量,只有变量。
  • 变量:是一个名字,在赋值符号的左边,这个名字可以指代赋值符号右边的内容

python一切皆对象,赋值即定义,python是一门动态语言,变量的类型可以修改和赋值。

1.2 基本数据类型

基本类型分为以下几种:

  • int
  • float
  • bool
  • None

内置数据结构:built-in structure

  • list
  • tuple
  • string
  • set
  • dict
  • bytes
  • bytearray

2.1 基本的数据类型

整型和浮点型
对于整型int来说,没有溢出。但是对于float来说会溢出,会损失精度,也就是我们经常说的精度失效。

那么为什么会存在精度失效呢?因为计算机是用二进制表示的,也就是0和1,那么0和1之间的小数就没法表示了,所以就存在精度失效问题。

None

在判断语句中,None 为False,但是None并不等于False。

None == False # 返回flase

运算符

算数运算符

+,-,*,/(除,自然除,也就是该得多少就是多少),//(取整除),%取模,也就是余数

8//5 #等于1
8%5 #等于 3

比较运算符

所有比较运算符的返回值都是bool值。
操作符和操作数

logical operators:

| operations |  examples | True or False  |
|:----😐:----😐:----😐:----😐:----😐:----😐
| < | 1 < 2 | True  |
| > | 1 > 2 | False  |
| <= | 1 <= 2 | True |
| >= | 1>= 2 | False |
| == | 1 == 2 | False |
| != | 1 ! = 2 | True |
| in | 'P' in 'Python' | True |
| is  | | |
| is not | | |

逻辑运算符

bool 布尔值:True 和 False

针对布尔值进行运算的操作符:and,or,not(与或非)

and True False
True True False
False False False
or True False
True True True
False True False
not True False
False True

各种操作符汇总:

数字 +,-, *, /, //(商), %(余数), **(幂)

赋值符号与各种操作符其实都可以连用,如下所示:

x = x + 1 等同于 x + = 1
#python
x = 10
x %= 3
print(x)

成员运算符

in 和 not in 就是成员运算符。和集合类型相关。

身份运算符

  • is
  • is not

身份运算符作用在对象上,用于判读是否指向同一个对象,也可以用id()来进行判断。
经常在面试中会问到 == 和 is 之间的区别是什么? == 是指值相等,而is 则是指两个对象是否一样。

a = 123
b = 123 
a == b # true
a is b # true 因为这两个都指向同一个对象

在python中已经有了 -5~256之间数字范围的内存地址了,而超过这个就会重新生成一个。

位运算符

  • <<
  • &
  • |
  • ^

赋值运算符

所有的赋值运算符都可以和算数运算符一起使用。

i += 3
i *= 3

小结

下面这张图是运算符优先级表。对于这些运算符,如果记不住的话,那就用括号括上,肯定没问题。

语句块


在 Python 语言中,行首空白(Leading whitespace,由空格 ' ' 或者 Tab ⇥ 构成)有着特殊的含义。

如果有行首空白存在,那么,Python 将认为这一行与其他邻近有着相同行首空白的语句同属于一个语句块 —— 而一个语句块必然由一个行末带有**冒号 : **的语句起始。同属于一个语句块中的语句,行首空白数量应该相等。

如下面的语句当中,总共有两个语句块,每个语句块以冒号开始。

for i in range(10):
    if i <= 5:
        print(i)

值的类型

  • 布尔值:Boolean values (True、False)
  • 数值(numbers):整数(int),浮点数(float),复数(complex numbers)
  • 字符串类型(strings)

值有常量(literals)和变量(variables):

a = 1 + 2 + 3 #1,2,3为常量,a为变量
a += 1
b = a

一般情况下,只有相同类型的数据才可以进行相互的运算,如果类型不同则需要进行类型转换(type casting)

将数值转换为字符串:str()
将字符串转换为数据类型:int(),float()

函数type()可以用来查看该值属于什么数据类型。

type(3) #int
type(2.0) #float
type(2+1j) #complex numbers
type([1,2,3]) #list
type((1,2,3)) #tuple
type({1,2,3}) #set
type({'a':1,'b':2,'c':3}) #dict
type('xingxing') #str

完整的操作符优先级见官方文档所示:https://docs.python.org/3/reference/expressions.html#operator-precedence

逻辑操作符的优先级,高于布尔值的操作符,低于数值计算的操作符。

字符串的操作符

字符串的拼接:+ 或者 ' '
字符串的复制: *
in , not in以及< ,<= , > , >= ,==, !=

'Awesome' + 'Python'
'Awesome' 'Python'
'A' in 'Python'
'A' not in 'Python'

结果如下:

'AwesomePython'
'AwesomePython'
False
True

列表的操作符

列表是有序容器,操作符和字符串的操作符一样。

拼接:+ 或者 ' '
复制: *
in , not in以及< ,<= , > , >= ,==, !=

a_list = [1,2,3,4]
b_list = [2,5,9,8]
c = a_list + b_list
c*3

对于一些复杂的数学运算,内建函数难以计算,这时就需要调用标准库(standard library)里的模块(modules)。

比如需要计算一个sin的值。就需要调用 math 模块。

import math 
math.sin(10)

这里的 **. **代表从 math 模块调用sin函数。

关于布尔值的补充

每一个常量或者变量,除了他们本身的值之外,都对应着一个布尔值。

总结

除了以上介绍的数字,字符串,布尔值数据类型,还有元祖(tuple),字典(dict),列表(list),集合(set),以及日期(Date Type)等数据类型。

不同的数据类型有不同的操作符,如果要进行相互的运算,则需要进行数据类型的转换。

针对每一种数据类型,都有相应的操作方式。

操作符

值的运算
逻辑运算

函数

内建函数
其他模块里的函数
本身所属类的函数

备注:

以后需要不断参考的链接,需要多反复看的链接。

关于表达式:https://docs.python.org/3/reference/expressions.html
关于所有操作的优先级:https://docs.python.org/3/reference/expressions.html#operator-precedence
BNF 格式:https://en.wikipedia.org/wiki/Backus-Naur_form
Python 的内建函数:https://docs.python.org/3/library/functions.html
Python 的标准数据类型:https://docs.python.org/3/library/stdtypes.html

posted @ 2020-04-05 10:59  佐助不认输  阅读(54)  评论(0)    收藏  举报