环境搭建
-
pip的安装和使用
安装pip
在windows下安装pip: 在python安装目录\scirpts下运行
easy_install pip
进行安装刚安装完毕的pip可能需要先升级一下自身: 在Linux或masOS中:
pip install -U pip
在windows中:python -m pip install -U pip
基础使用
普通安装(使用pip前务必确认其python对应的解释器)
pip install pillow
指定版本(通过使用==,>=,<=,>,<来指定一个版本号)
pip install 'Markdown<2.0'
卸载已安装的库
pip uninstall pillow
列出已安装的库
pip list
将已安装的库列表保存到文本文件中(项目环境依赖文件)
pip freeze > requirements.txt
根据依赖文件批量安装库(使用上面的txt文件,批量安装第三方库)
pip install -r requirements.txt
使用wheel文件安装(将wheel格式文件,下载到本地,然后使用pip进行安装)
pip install pillow-4.2xxxxxxxx.whl
pip源的选择(选择国内的第三方源,推荐豆瓣)
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pillow
需要注意的是,除了最后的pillow用你所期望的库名替代外,前面的参数都是固定写法,包括参数顺序
-
virtualenv虚拟环境
安装virtualenv(为项目创建“独立隔离”的Python运行环境的工具)
pip install virtualenv where virtualenv --验证安装
建立虚拟环境
virtualenv –p c:\Python27\Python2.exe –-no-site-packages d:\Python_virtualenvs\for_django -p: 指定你要虚拟的Python版本,这里选择了本地的python2.7 –-no-site-packages:表示在建立虚拟环境时不将原版本中的第三方库拷贝过来,这样就能获得一个纯净的Python环境。 d:\Python_virtualenvs\for_django:表明在该目录下,建立一个叫做for_django的虚拟环境
使用虚拟环境
命令行下进入你要使用的虚拟环境的目录下的script文件夹,运行
activate
命令。或者使用绝对路径的方式调用该命令。注意命令提示符(for_django),它表示你当前在for_django这个虚拟环境内。现在,你可以当做一个正常的Python环境使用。
退出虚拟环境
要退出虚拟环境,只要运行script目录下的
deactivate
命令就可以了。要删除虚拟环境,直接删除虚拟环境所在的目录就可以了。删除虚拟环境后,所有以前使用该环境的工程都将受到影响。
-
代码编辑器
-
帮助文档
编译器与解释器
基础知识
-
基础语法
标识符(就是对变量、常量、函数、类等对象起的名字)
Python语言在任何场景都严格区分大小写!
- 第一个字符必须是字母表中的字母或下划线
- 标识符的其他的部分由字母、数字和下划线组成
- 标识符对大小写敏感
- 变量名全部小写,常量名全部大写
- 函数和方法名用小写加下划线
- 类名用大写驼峰
- 模块和包的名字用小写(不要和标准库以及著名的第三方库同名)
变量的命名不要用关键字和内置函数的名字!
保留字
import keyword keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
注释
-
单行注释(以“#”开始,从它往后到本行的末尾,都是注释内容)
#!/usr/bin/python3 # 下面这个方法的作用是 # 第一个注释 # 我是单行注释 # 这是一个空的函数,它什么都不干。本条注释也是句废话。 def main(): pass # pass表示占位,什么都不做。
-
多行注释(没有真正意义上的多行注释(块注释))
# 第一行注释 # 第二行注释 # 第三行注释 def func(): print("这是一个悲伤的故事!")
-
注释文档(三引号)
def func(a, b): """ 这个是函数的说明文档。 :param a: 加数 :param b: 加数 :return: 和 """ return a + b class Foo: """ 这个类初始化了一个age变量 """ def __init__(self, age): self.age = age
需要强调的是这类注释必须紧跟在定义体下面,不能在任意位置
代码头两行
代码头两行
语句与缩进
语句与缩进
pass语句
pass语句
空白字符与空白行
空白字符与空白行
字符串的表示形式
字符串的表示形式
如何阅读错误调用栈的信息
如何阅读错误调用栈的信息
-
变量与常量
-
运算符
-
输入输出
数据类型
- 数字类型
- 布尔类型
- 列表
- 元组
- 字符串
- 字典
- bytes
- 集合set
流程控制
- 顺序执行
- 条件判断
- 循环控制
函数
- 函数基础
- 参数类型
- 变量作用域
- range()函数
- 递归函数
- 匿名函数
- 推导式
- 迭代式
- 生成器
- 装饰器
内置函数
文件读写
面向对象编程
- 类和实例
- 封装、继承和多态
- 成员保护和访问限制
- @property装饰器
- 特殊成员和魔法方法
- reflect反射
异常处理
调试和测试
模块与包
常用标准库
- os
- sys
- subprocess
- random
- bisect
- hashlib
- queue
- fileinput
- shutil
- zipfile
- tarfile
- getpass
- json
- pickle
- shelve
- time
- logging
正则表达式
- 正则表达式语法
- re模块
网络编程
- socket编程
- socketserver编程
多线程与多进程
进程
进程是程序(软件,应用)的一个执行实例,每个运行中的程序,可以同时创建多个进程,但至少要有一个。每个进程都提供执行程序所需的所有资源,都有一个虚拟的地址空间、可执行的代码、操作系统的接口、安全的上下文(记录启动该进程的用户和权限等等)、唯一的进程ID、环境变量、优先级类、最小和最大的工作空间(内存空间)。进程可以包含线程,并且每个进程必须有至少一个线程。每个进程启动时都会最先产生一个线程,即主线程,然后主线程会再创建其他的子线程。
线程
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不独立拥有系统资源,但它可与同属一个进程的其它线程共享该进程所拥有的全部资源。每一个应用程序都至少有一个进程和一个线程。在单个程序中同时运行多个线程完成不同的被划分成一块一块的工作,称为多线程。
进程与线程区别:
- 同一个进程中的线程共享同一内存空间,但进程之间的内存空间是独立的。
- 同一个进程中的所有线程的数据是共享的,但进程之间的数据是独立的。
- 对主线程的修改可能会影响其他线程的行为,但是父进程的修改(除了删除以外)不会影响其他子进程。
- 线程是一个上下文的执行指令,而进程则是与运算相关的一簇资源。
- 同一个进程的线程之间可以直接通信,但是进程之间的交流需要借助中间代理来实现。
- 创建新的线程很容易,但是创建新的进程需要对父进程做一次复制。
- 一个线程可以操作同一进程的其他线程,但是进程只能操作其子进程。
- 线程启动速度快,进程启动速度慢(但是两者运行速度没有可比性)。
-
多线程threading
-
生产者消费者模式
-
线程池
-
多进程multiprocess
协程与异步IO
协程,又称微线程,英文名Coroutine,是运行在单线程中的“并发”,协程相比多线程的一大优势就是省去了多线程之间的切换开销,获得了更高的运行效率。Python中的异步IO模块asyncio就是基本的协程模块。
Scrapy安装
-
lxml
pip install lxml
-
zope.interface
pip install zope.interface
-
twisted
https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
pip install wheel pip install Twisted-19.2.0-cp37-cp37m-win_amd64.whl
-
pyOpenSSL
pip install pyOpenSSL
-
pywin32
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32
pip install pywin32-224-cp37-cp37m-win_amd64.whl
-
scrapy
pip install scrapy