认识Python
语法简洁、内置数据结构丰富、无需编译、一切都是对象、跨平台、丰富的生态和第三方库、可与C/C++/Java集成
python包索引(PyPI)提供了超过10万个代码库的包,它能够帮助python程序员
完成许多工作。1 type()用来指出你想要知道的东西的类型,比如查看数据类型布尔型、字符串、整数、浮点数
2 dir()python的内置函数等有很多,使用dir()就可以查看对象内所有属性及方法(python中所有东西都是对象,比如函数,模块,数据类型等,都有自己的属性和方法)
3 help()从名字就能看出来,help()是用来帮助的,比如查看字符串的帮助
Python二进制表示和位操作
byte_chinese = chinese.encode() //获取字节数组
l = [bin(int(i)) for i in byte_chinese] //获取一个二进制列表
print(" ".join(l)) //列表转成字符串并打印
变量
在高级语言中,变量是对内存及其地址的抽象。Python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是变量的值所在的内存地址,而不是这个变量的值本身。变量名只能包括字母,数字、下划线,可以字母下划线开头,但不能数字开头,变量名不能包括空格。
作用域
局部、全局、内置、嵌套4种作用域。需要注意的是:在if-elif-else、for-else、while、try-except\try-finally等关键字的语句块中并不会产成作用域。
搜索变量名的优先级:局部作用域 > 嵌套作用域 > 全局作用域 > 内置作用域。globalVar = 100 #G global
def test_scope():
enclosingVar = 200 #E enclosing 子函数中可见, 为实现闭包,而增加的。
def func():
localVar = 300 #L local
print(__name__) #B built-in
数据结构
元类型(数字、字符串) 容器类型(List、Tuple、Dictionary、Set、Frozenset)。字典(dict): 用 {} 包围; 集合(set) 是一个数学概念,用set()创建,输入一个列表。
列表(list),是序列对象,用[]包围。元组(tuple),用()包围,Tuple 和 List 非常类似,但tuple一旦创建完毕,就不能修改了。访问模式: direct sequential random mapping运算符:地板除 //
序列类型:字符串 列表 元组
序列功能函数:enumerate len reversed zip
控制语句
推导式comprehensions(又称解析式) :列表解析式、列表(list)推导式字典(dict)推导式集合(set)推导式
x if c else y
for 为迭代而生异常结构 :break return raise这些语句只会使程序跳出try/except/finally对应的block;
finally的block总是在整个try/except之后执行;return的结果可以被重写;函数的返回值在finally之后才''返回";
字符集
世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。
python2中默认使用ascii,python3中string默认使用的编码就是utf-8
Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储 。UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。
Python3 的utf-8格式是不带BOM的,某些软件,如notepad,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)Python,其解释器本身是能处理BOM的,所以能正常执行。
Python3 中文本字符和二进制分别使用 str 和 bytes 进行区分,也是使用 decode 和 encode 进行相互转换 :bytes-->str: decode过程 str-->bytes: encode过程
库函数:print(id(x)) 打印内存对象地址;type(c) 打印对象类型
深浅拷贝:对于数字和字符串而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。
高级特性
函数编程、迭代器、生成器、闭包、装饰器、元类