No.18总结
No.18
今日概要
- 回顾和补充
- 作业讲解
内容详细
1.Python入门
1.1环境的搭建
mac系统上搭建python环境。
环境变量的作用:方便在命令行执行可执行程序,将可执行程序所在的目录添加到环境变量,以后无需再输入全路径。
1.2变量命名
-
变量
name = 'alex' -
全局变量
NAME = 'oldboy' #在局部作用域中若想重新赋值全局变量要使用global关键字 global NAME NAME = 'alex' -
函数
def func_list(): pass -
常量
不允许修改的值 Python中没有常量只能进行约定,其它开发语言有常量。
1.3运算符
v = 1 or 2 → 1
v = 0 or 2 → 2
v = 1 and 2 → 2
v = 0 and 2 → 0
val = v if v else 666
#对于简单的三元运算可以简写
val = v or 666 #源码中会见到
is 和 == 的区别
1.4数据类型
-
int
- 整型
- 其它进制转换成十进制int('0b11011',base=2)
- py2/py3区别
- int / long
- 除法
-
bool
- 0 None 空
-
str(字符串类,一般用于内存中做数据操作)
v = 'alex' # unicode编码存储在内存 -
bytes(字节流类,一般用于数据存储和网络传输)
v = 'alex'.encode('utf-8') # 将字符串转换成字节(由unicode编码转换为uft-8编码) v = 'alex'.encode('gbk') # 将字符串转换成字节(由unicode编码转换为gbk编码) -
list
-
tuple
-
dict
-
set
-
None
1.5编码
- Python默认解释器编码
- Py2
- Py3
- 以什么编码存储就要以什么编码打开(建议Pycharm设置成UTF-8编码)。
- 常见的编码
- ascii
- unicod
- utf-8
- gbk
- gb2312
1.6深浅拷贝
针对可变类型,将其重新创建一份地址。
- 浅拷贝:第一层
- 深拷贝:所有层
import copy
v = [11,22,33,[1,2,3]]
v1 = copy.copy(v)
v2 = copy.deepcopy(v)
1.7Py2和Py3区别
-
字符串类型不同▲▲▲
- py2中unicode类 是 py3中的str类
- py2中str类 是 py3中的bytes类
-
默认解释器编码
-
输入输出
-
int
- int / long
- 除法
-
range / xrange
-
模块和包
__init__.py
-
字典
- keys
- py2:列表
- py3:迭代器,可以循环不可以索引取值。
- values
- py2:列表
- py3:迭代器
- items
- py2:列表
- py3:迭代器
- keys
-
map/filter
- py2:返回列表
- py3:返回迭代器,可以循环不可以索引取值。
2.函数
2.1内置函数
- 常用的内置函数:open / id / type / len / range ...
- is 和 == 的区别?通过id来进行检查
2.2自定义函数
-
函数式编程:增加代码可读性以及重用性。
-
函数的基本结构:
def func(name,age): ''' 函数是干什么的 ''' return None -
函数作参数
-
函数作变量
-
函数作返回值
- 闭包
- 装饰器
-
生成器
def func(): print(123) yield 1 yield 2 v = func() # v得到是一个生成器 # 循环v时或者执行__next__()方法时,函数内部代码才会执行。# yield from def func(): yield 1 yield 2 yield from base() yield 3 def base(): yield 88 yield 99 result = func() for item in result: print(item)生成器推导式
v1 = [ i for i in range(10)] #列表推导式,立即循环创建所有元素 v2 = ( i for i in range (10)) #生成器推导式,创建了一个生成器,内部循环未执行。 #def func(): # result = [] # for i in range(10): # result.append(i) # return result #v1 =func v1 = [ i for i in range(10)] print(v1) #def func(): # for i in range(10): # yield i #v2 = func() v2 = ( i for i in range (10)) print(v2)#示例1 def func(): result = [] for i in range(10): def f(): return i result.append(f) return result v1 = func() for item in v1: print(item) #示例2 def func(): for i in range(10): def f(): return i yield f v1 = func() for item in v1: print(item()) #示例3 v1 = [lambda :i for i in range(10)] v2 = (lambda :i for i in range(10)) for item in v2: print(item()) -
迭代器
3.模块
3.1内置模块
- 常见的内置模块:json / datetime / time / os / sys
3.2第三方模块
- requests
- xlrd
3.3自定义模块
- 文件
- 文件夹 / 包
3.4使用模块
-
导入
-
import 模块
-
from 模块.模块 import 模块
-
from 模块.模块.模块 import 函数
-
相对导入 [不推荐]
#根目录中的子目录文件相互导入 from . import xxx from .. import xxx
注意:文件和文件夹命名不能和导入的模块名称相同,否则就会直接在当前的目录中查找。
-
-
调用内部功能
- 函数()
- 模块.函数()
-
主文件(当前运行的文件)
import page if __name__ == '__main__': page.pager() #只要在当前文件写入并执行主文件代码,其它文件即使导入了page模块也无法使用pager函数。
4.其它
- 推导式
- 三元运算
- lambda表达式

浙公网安备 33010602011771号