标准数据类型

包括:数字、字符串、元组(不可变数据)以及 集合、字典、列表(可变数据)

(1. 使用type()查看数据类型,使用isinstance(a, int) 判断数据类型

(2. isinstance 和 type 的区别在于:

(3. type()不会认为子类是一种父类类型。

(4. isinstance()会认为子类是一种父类类型。

is 是判断两个标识符是不是引用自一个对象

: x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False。

is 与 == 区别:is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

字符串

(1. 使用单引号,双引号完全相同。

(2. 多行 ‘’’ “”" 自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

(3. \表示转义

(4. 使用r可以让语句中的转义取消

(5. +表示连接, *表示重复

(6. 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string

(7. Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。

(8. Python中的字符串不能改变。

(9. Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。

(10. 字符串的截取的语法格式如下:变量[头下标:尾下标:步长],左闭右开。

:

print(str[2:5]) # 输出从第三个开始到第五个的字符

print(str[0:-1])# 输出第一个到倒数第二个的所有字符

Python字符串格式化%=格式化字符串的函数 str.format()

在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

:

print(“我叫 %s 今年 %d 岁!” % (‘小明’, 10))

=print(“我叫{}今年{}岁!”.format(‘小明’, 10))

元组的构建

(1. 逗号分隔序列值

tup = 4,5,6,(7,8) #(4,5,6,(7,8))

(2. tuple函数

(3. 构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

tup1 = () # 空元组

tup2 = (20,) # 一个元素,需要在元素后添加逗号

(4. 元组不可变,元组存在可变对象是可以改变可变对象的。

(5. +可以增加元组的长度

元组的拆包

tup = (4,5,6)

a, b, c = tup #得到b = 5

a, b = b, a #可以直接进行交换

a, *resto or *_ = tup #*resto or *_可以获取剩下的参数

列表

创建:[] or list()

增,删:append()、insert()、pop()、remove()

连接列表:+ or extend()

列表、集合和字典的推导式

(1. [expr for val in collection if condition] # 先for再condition最后expr

(2. {key-expr : value-expr for val in collection if condition}

(3. {expr for val in collection if condition}

嵌套列表推导式

[ [expr for val in collection for val in collection if condition]

#for表达式的顺序应该与嵌套列表推导式里的for循环顺序一致。先第一个for再第二个for再condtion最后expr

列表推导式中的列表推导式

[ [expr for val in collection if condition] for val in collection if condition]

#先后面的for再前面的for

参数

包括位置参数和关键字参数

位置参数必须再关键字参数的前面,任意顺序指定关键字参数,也可用关键字参数向位置参数传参

python函数可以返回多个值

柯里化:部分参数的应用

add_five = lambda y:add_numbers(5, y) #只使用add_nnumbers()中的y

生成器和迭代器

迭代器协议:一种令对象可遍历的通用方法

迭代器:

一种

用于上下文中(for循环)向python解释器

生成对象的对象

生成器:包含了yield关键字的

函数

,它也是一种迭代器,只是它可以返回一个多结果的序列(有多个元素,都会返回出来),每一个元素产生之后会暂停

生成器表达式与推导式类似,只是中括号替换为小括号,它可以作为函数的参数。

try/expect/else/finally

else,try成功之后执行

finally,无论报不报错都要执行

Sys.argv[ ]

其实就是一个列表,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数。

详细说明:

使用with打开文件再with结束以后就会自动关闭文件

with通过__enter__方法初始化,然后在__exit__中做善后以及处理异常。

紧跟with后面的语句会被求值,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as关键字后面的变量,当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。

详细说明:

文件字节数读和二进制模式读字数是不一样的,f.tell()告诉句柄的位置其实是以1开始数的,f.seek(3)改变位置到3其实到了4的位置上,之后直接读出4的数。

enumerate(),返回(索引,值)

zip(),将列表、元组或者其他序列的元素配对,新建一个元组构成的列表

zip(*pitchers),把给定的配对拆分

reversed(), 倒叙,是个生成器

sort() 的参数key,可以表示用什么来当作排序的依据

hash(),用于检测一个对象是否可以成为字典的键

map(函数,序列)后面的序列按照前面的函数来执行

strip(),移除字符串开头or结尾的字符,默认为空格or换行符或者字符序列中的字符