标准数据类型
包括:数字、字符串、元组(不可变数据)以及 集合、字典、列表(可变数据)
(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换行符或者字符序列中的字符