导图社区 Python思维导图
Python的一些学习笔记,日常查考使用,常用的基础知识都在里面了。
编辑于2020-09-17 11:12:43Python
语法
注释
#单行
'''多行
同时可用于打印多行
用户输入
input
username = input("username:")
格式化输出
name = input("姓名:") age = input("年龄:") info = ''' %s 的个人信息如下: 姓名:%s 年龄:%s ''' % (name,name,age) print(info)
判断
强制缩进
IndentationError:缩进错误
if else
冒号加在行尾
循环
类型
while
for
for i in range(0,10,3)
0开始,执行10次,步长为3
得0369
跳出循环
break
结束循环
continue
跳出本次循环,继续下次循环
库
标准库
lib
第三方库
lib/site-package
模块
sys
path
环境变量路径
argv
文件+参数,变成数组,可直接加[ ]取参数值
os
system
执行命令,不保存结果
popen
内存地址
要结果,加read,直接读地址上的内容
数据类型
数字
int
float
①两种类型运算,结果为float ②除法运算,结果为float ③除法运算要得到int,可以用//来表示除,但是会损失精度,向下取整
byte和string
decode
encode
list
[] 有序, 可以用索引访问 可以切片
查
arr[1:3]
取1号和2号;顾头不顾尾
arr[1]
取第二个值
arr[-1]
最后一个值
arr[-2:]
取最后3个值
arr[-3:-1]
取倒数第三和倒数第二
arr[-1::-1]
字符串反转
增
append
尾追加
insert
改
arr[x] = “目标”
删
remove
names.remove("hah")
del arr[x]
pop
pop()
删除最后一个
pop(x)
删除下标为x的对象
取下标
index
enumerate
计数
count
清空列表
clear
反转/倒序
revere
排序
sort
默认按照ASCII碼:符号>数字>大写>小写
扩展/并入
extend
复制
浅copy
仅对列表的每个元素的引用
3个实现方式
import copy person=["name",["a",100]] p1=copy.copy(person) p2=person[:] p3=list(person)
子列表数据修改,也会修改
子列表实际上一个内存地址
可能用途
比如联合账户
深copy
需导入copy
调用copy.deepcopy(x)
筛选输出
names2 = [1,2,3,4,5,6,7,8,9] print(names2[1:-1:2])#和效果print(names2[::2])一样
输出偶数
字符串
capitalize
首字母大写
count
count(“a”)
统计字符串中a的次数
center
center(50,“-”)
字符串居中,长度为50,不足的有-来代替
ljust
与center类似,是尾端补齐
rjust
与center类似,是头补齐
find
find(“a”)
返回字符串中第一个符合条件(a)的位置
rfind
返回最后一个符合条件的位置
join
将字符串加到列表里
name = ['wer','123','你好'] print('++'.join(name)) 输出:wer++123++你好
lower/upper
全大写/小写
strip
去除两边的空格和换行
lstrip去除左边
rstrip去除右边
split
指定分隔符分割字符串,形成列表
默认空格分隔
splitlines
通过换行符\n来分割
swapcase
字符串大小写互换
replace
替换
着色
"\033[32;1m包装内容\033[0m"
字典
{}:空字典 成对出现,key:value key不可重复 无序 不可切片
特点
无序
同key的话,value可能会被替换
查
dictionary[key]
dictionary.get
判断字典里是否有s4:'s4' in dict
true or false
改/增
dictionary[新key]=
删
del dictionary[“x”]
dictionary.pop("x")
嵌套
最里层用[],其他都用{}
key最好不要用中文
循环
dict = { 'key1':'v1', 'key2':'v11', 'keu3':'v111' } for i in dict: print(i,dict[i])
其他方法
value
除key以外的值
key
key
setdefault
先去字典取,取到就返回原字典中的内容
取不到就创建,值就为新赋的值
update
合并字段,有交叉的直接覆盖,没有的创建
items
转成列表,key作为列表第一个值
fromkeys
创建列表,并赋初始化的值
坑:类似浅copy,多层情况修改子列表中的值会全部修改
集合
不可重复 无序 不可切片 无法用索引访问
主要作用
去重
无需处理,默认去重
关系测试
交集 &
intersection
list1.intersection(list2)
差集 -
difference
name = [4,2,3] list1 = set(name) n2 = [1,2,3] list2 = set(n2) print(list1.difference(list2))
结果为{4}
并集 |
union
子集
issubset
父集
issuperset
对称差集
symmetric_difference
name = [4,2,3] list1 = set(name) n2 = [1,2,3] list2 = set(n2) print(list1.symmetric_difference(list2))
结果为{1, 4}
转换方法
set
也是无序的
增
增加一项
add
增加多项
update
删
remove
pop
任意删除一个
discard
list不能存进集合中
空集合
set()
文件操作
打开open
读r
读取全部read,读取部分内容,括号里输入数字,以字符计
读取一行readline
读取每行内容,存到列表,一行为一个元素readlines
写
覆盖写w
追加写a
读写r+
读取文件内容后,从内容最后追加写
写读w+
创建文件然后往里写
关闭close
循环读取内容,但是内存只保存一行
f = open('sun','r',encoding='utf8') count = 0 #逐行输出 for line in f: print(line) count += 1 #j计数 print(count)
其他方法
tell
读取句柄的当前光标位置,以字符计
seek
读取位置(即光标)回到文件内容开始的地方
括号里加数字,指定开始位置,以字符计
encoding
编码
fileno
系统中的句柄编号
flush
立即写到硬盘上
truncate
从文件内容开始往后截断,保留截断部分,以字符计
默认全部删除
with
主要用途:防止忘记关闭文件
语法:with open( ) as f:
可以同时打开多个文件
函数
优点
代码复用
保持一致性
可扩展
特性
功能性
封装性
复用性
构成
def
主逻辑
return
结果可以很多,会放到一个元组里
参数
实参和形参数量必须一致
类型
位置参数
默认按照顺序,传给函数
关键字参数
x=,y=
关键字参数不能写在位置参数前面
默认参数
非必填
直接在定义函数的时候写好
命名关键字参数
有时候我们需要限制关键字的参数就需要使用这个
定义的时候,需要加一个*,*后边的都是命名关键字参数
可变参数后边跟着的命名关键字就不需要加*了
可以有缺省值
参数组一定要往后放
局部变量
函数里的变量,只在函数里生效,这个函数就是这个变量的作用域
要改全局变量(字符串、整数),前面声明global——不要用
逻辑复杂后多处调用就会出问题
字典、列表、结合、类,可以在局部里改全局
递归
特性
要有明确的结束条件
每次进入深层递归时,问题规模相比上次递归都应有所减少
序列解包
a,b,c = 1,2,3 print(a,b,c) d = a,b,c print(d,type(d)) x,y,z = d print(x,y,z)
1 2 3 (1, 2, 3) <class 'tuple'> 1 2 3
链式赋值
a=b=c=1
内置函数
abs
绝对值
all
全非零即为真
any
任意非零即真
bin
转二进制
chr
返回对应数字的字符码
ord
返回字符码的数字
filter
过滤
filter(lampda n:n>5,range(10))
匿名函数
lambda
匿名函数,用完即删
格式
参数列表:返回值
三元表达式

函数式编程

装饰器
本质
函数,就是为其他函数添加附加功能
原则
不能修改被装饰函数的源代码
不能修改被装饰的函数的调用方式
组成
高阶函数(满足任一)
把一个函数名当作实参传给另一个函数(在不修改被装饰函数的源代码的情况下)
返回值中包含函数名(不修改函数的调用方式)
嵌套函数
def里再套一个def
例子
import time def timer(func): def deco(*arg,**kwargs): start_time = time.time() func(*arg,**kwargs) stop_time = time.time() print((stop_time - start_time)) return deco @timer def test(name): time.sleep(1) print("延时1秒钟,传入参数名字",name) test("名字")
延时1秒钟,传入参数名字:名字 1.0007591247558594
生成器generator
调用的时候才生成相应的数据
只保存当前的位置
只有一个__next__()方法
优点
省内存空间
不用一直等待函数结束
可以并行运算
关键字
yield
send可以给yield传值
列表推导式

集合、元组、字典都可以推导
元组返回内存地址
字典

迭代器Iterator
迭代对象Iterable
定义:可以直接作用于for循环的对象
一类是集合数据类型
如list、tuple、dict、str、set
通过iter()方法变成迭代器
一类是generator,包括生成器和带yield的generator function
定义:可以被nest函数调用并不断返回下一个值的对象称为迭代器
使用isinstance方法判断对象是不是迭代器对象
isinstance('abc',Iterable)
面向对象
类

定义:对一类具有相同属性的对象的抽象
命名
单词首字母大写,驼峰命名
类属性
(实例变量)静态属性,一般就叫属性
(方法、功能)动态属性
私有属性
变量前加“__”
要想访问就在类里定义一个查的方法
类变量
用途:大家公用的属性,节省开销
类方法
构造方法__init__
赋值需要self.xxx = yyy
该方法里的变量叫实例变量
实例化时做一些初始化的工作
开辟一块内存 存变量内容
析构方法__del__
在实例释放或销毁的时候执行的,通常用于做一些收尾工作;如关闭一些数据连接、临时文件
实例方法
至少有个self
私有方法
变量前加“__”
只能访问类变量
静态方法
与类无关,不能访问类里面的任何属性和方法
实例化
相当于创造对象,把一个类具体化成对象;即实例
特性
封装
继承
class AA(parent):
父类的的参数要全部抄写过来,不然会直接被覆盖
实例化时,调用一次父类的方法,再加自己的东西
修改方法内容
写法
Parent.__init__(self,name,age)
super(Son,self)__init__(name,age)
多继承
只走第一个:B继承A,C继承A,D继承BC,那么有冲突的时候,D走B
查询策略
广度优先(Python3是广度优先)
构造函数顺序DBCA
深度优先(Python2新式类是广度优先,经典类深度优先)
构造函数顺序DBAC
多态
实现接口的重用
socket网络编程
family address
AF.INET
ipv4
AF.INET6
ipv6
AF.UNIX
local
socket protocol type
sock.SOCK_STREAM
tcp/ip
sock.SOCK_DGRAM
udp
前端
html
标签分类
闭合性
自闭合
< ->
主动闭合
<x> </x >
行内外
块级标签
H系列
加大加粗
p
段落之间有间距
div
白板
内联标签(行内标签)
span
白板
标签特性
标签可以嵌套
存在的必要性
css操作,js操作
head标签
<meta ->
编码、跳转、刷新、关键字、描述、IE兼容
title
link
style
script
body便签
图标
空格
大于号>
小于号<
p标签
段落
br标签
换行
input系列
text
password
submit
button
radio
单选框
checkbox
复选框
css
javascript
DOM
查找
直接选择
document.getElementById 根据ID获取一个标签
document.getElementsByName 根据name属性获取标签集合
document.getElementsByClassName 根据class属性获取标签集合
document.getElementsByTagName 根据标签名获取标签集合
间接选择
parentNode // 父节点
childNodes // 所有子节点
firstChild // 第一个子节点
lastChild // 最后一个子节点
nextSibling // 下一个兄弟节点
previousSibling // 上一个兄弟节点
parentElement // 父节点标签元素
children // 所有子标签
firstElementChild // 第一个子标签元素
lastElementChild // 最后一个子标签元素
nextElementtSibling // 下一个兄弟标签元素
previousElementSibling // 上一个兄弟标签元素
操作
内容
例子
获取标签内的文本内容
标签.innerText
对文本内容重新赋值
标签.innerText= ‘’
innerText 文本
outerText
innerHTML HTML内容
innerHTML
value 值
属性
例子: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <input type="button" value="全选" onclick="CheckAll();"/> <input type="button" value="取消" onclick="CancelAll();"/> <input type="button" value="反选" onclick="ReverseCheck();"/> <table border="1" > <thead> </thead> <tbody id="tb"> <tr> <td><input type="checkbox" /></td> <td>111</td> <td>222</td> </tr> <tr> <td><input type="checkbox" /></td> <td>111</td> <td>222</td> </tr> <tr> <td><input type="checkbox" /></td> <td>111</td> <td>222</td> </tr> <tr> <td><input type="checkbox" /></td> <td>111</td> <td>222</td> </tr> </tbody> </table> <script> function CheckAll(ths){ var tb = document.getElementById('tb'); var trs = tb.childNodes; for(var i =0; i<trs.length; i++){ var current_tr = trs[i]; if(current_tr.nodeType==1){ var inp = current_tr.firstElementChild.getElementsByTagName('input')[0]; inp.checked = true; } } } function CancelAll(ths){ var tb = document.getElementById('tb'); var trs = tb.childNodes; for(var i =0; i<trs.length; i++){ var current_tr = trs[i]; if(current_tr.nodeType==1){ var inp = current_tr.firstElementChild.getElementsByTagName('input')[0]; inp.checked = false; } } } function ReverseCheck(ths){ var tb = document.getElementById('tb'); var trs = tb.childNodes; for(var i =0; i<trs.length; i++){ var current_tr = trs[i]; if(current_tr.nodeType==1){ var inp = current_tr.firstElementChild.getElementsByTagName('input')[0]; if(inp.checked){ inp.checked = false; }else{ inp.checked = true; } } } } </script> </body> </html> Demo
attributes // 获取所有标签属性
setAttribute(key,value) // 设置标签属性
getAttribute(key) // 获取指定标签属性
class操作
className // 获取所有类名
classList.remove(cls) // 删除指定类
classList.add(cls) // 添加类
标签操作
创建标签
方式一
var tag = document.createElement('a') tag.innerText = "wupeiqi" tag.className = "c1" tag.href = "http://www.cnblogs.com/wupeiqi"
方式二
var tag = "<a class='c1' href='http://www.cnblogs.com/wupeiqi'>wupeiqi</a>"
操作标签
方式一
var obj = "<input type='text' />"; xxx.insertAdjacentHTML("beforeEnd",obj); xxx.insertAdjacentElement('afterBegin',document.createElement('p')) //注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'
方式二
var tag = document.createElement('a') xxx.appendChild(tag) xxx.insertBefore(tag,xxx[1])
样式操作
例子: <input onfocus="Focus(this);" onblur="Blur(this);" id="search" value="请输入关键字" style="color: gray;" /> <script> function Focus(ths){ ths.style.color = "black"; if(ths.value == '请输入关键字' || ths.value.trim() == ""){ ths.value = ""; } } function Blur(ths){ if(ths.value.trim() == ""){ ths.value = '请输入关键字'; ths.style.color = 'gray'; }else{ ths.style.color = "black"; } } </script> Demo
var obj = document.getElementById('i1') obj.style.fontSize = "32px"; obj.style.backgroundColor = "red";
位置操作
提交表单
其他
舶来品
Python专栏
基础
输入输出
输出:print(输出内容),加引号,就是按照字符串格式输出,否则就是计算之后再输出,如果要格式化输出的话,用%隔开
输入:input(”提示信息“),raw_input都可以,读取的内容都是字符串形式,有些时候,就需要将读取的字符串转为整数,使用int()来转换
数据类型和变量
整数
浮点数
字符串
和C语言有所不同,单引号和双引号括起来的都是字符串
如果字符串中包含单引号或者双引号,此时应该转义
r' '表示引号内部的字符串不做转义
换行问题的处理:“...”
相关函数
chr():把给定编码转为对应的字符
ord():获取字符的整数表示
len():获取str中的字符个数
布尔值
True,False
可以使用and or not进行运算
空值None
不能理解为0,是Python里一个特殊的空值
list和tuple
list
所有的元素使用[]括起来
可以使用下标进行遍历(0~len-1),但是和C语言的数组有区别,list[-n](n为正数)表示list中的倒数第n个元素
相关操作:append()追加元素到list末尾;insert()插入元素到指定位置;pop()删除指定元素(没有指定则删除最后一个元素)
特点:查找和插入会随着元素的增多而变慢,但是占用内存较少
tuple
所有的元素使用()括起来,一旦初始化就不能改变
定义一个没有任何元素的tuple:(),如果要定义只有一个元素的元组,(1,)必须加逗号消除歧义
元组是不可改变的
只支持查,只有count和index两个方法
条件判断
if...elif...else
循环
for x in...和while ...两种表示循环
拓展函数
range(5)表示生成0到4的一个序列
list()将生成的序列转换成list
dict和set
dict
key-value形式存储,具有及快的查找速度,但是会占用较多的内存(也就是空间换取时间的一种处理办法)
使用{}将所有的元素括起来,直接通过key值索引到value
相应的函数
get()查看给定的key值是否存在于字典中,不存在则返回None,但是也可以自定义不存在时的返回值,当然key in dict 可以替代上述get函数
pop(key)删除key以及key对应的value
和list的区别
set
和list类似,但是只存储key不存储value,并且key不能重复
创建set对象:set(list)需要给定一个list
相关函数
add()
添加元素到set中,可以重复添加,但是不会有效果
remove()
删除给定的key
两个set可以做交集并集操作(& |)
函数
调用:和C语言C++中一样的调用方法
定义
def my_abs(x): if x >= 0: return x else: return -x
使用def定义,并且参数不需要类型
空函数:Python就像shell中那样,不允许出现空语句,Python中使用pass表示什么都不做的语句
返回多个值:return x,y
参数
位置参数
powe(x,n),含义是x的n次方,调用的时候两个参数的位置不可以改变,所以x和n都是位置参数
默认参数
类似于C++中的默认参数,默认参数只能出现在函数参数的后边
可变参数
允许传入0个或任意个参数,定义的时候,直接在参数名称前边加一个*,调用的时候,直接传入所有的参数即可,并且会自动组成一个tuple
关键字参数
定义的时候,在参数名前边加2个*,调用传入参数的时候,内部会组成一个dict,传入参数的时候,就必须写成a=b的形式
命名关键字参数
有时候我们需要限制关键字的参数就需要使用这个
定义的时候,需要加一个*,*后边的都是命名关键字参数
可变参数后边跟着的命名关键字就不需要加*了
可以有缺省值
参数组合
参数定义的顺序:必选,默认,可变,命名关键字,关键字
递归函数
高级特性
切片
取出list或者tuple中的部分元素
相关操作(L是list)
L[1:3]:取出L中下标为1,2的元素
L[0:5](0可以省略):取出L中下标为0到4的元素
L[0:10:2]:取出0到9的数,每2个取出一个
L[:]:表示复制一个同样的list
L[-5:0](0可以省略):表示取出后5个元素
装饰器
用途:有时候需要打印函数的日志但是又不需要修改函数的内容,此时可以选择装饰器
是一个返回函数的高阶函数
偏函数
functools.partial会帮助我们创建一个偏函数
作用:把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单
使用模块
import A:引入A库
from A import B:导入A库中的B模块
import A as B:导入A库并重命名为B
光环大数据
语言
机器语言
汇编语言
高级语言
编译执行
定义:将源文件编译成二进制文件
特性:一次编译多次执行
优点:速度快
缺点:不能跨平台
解释执行
通过解释器,逐行解释执行
特性:跨平台
缺点:速度相对慢一点
优点:可移植性好
Python特点与应用领域
特点
语法简洁
速度相对慢
应用领域
web开发
网络爬虫
数据分析和科学计算
人工智能
print方法调用说明
*args
可以同时输出多个值
sep‘ ’
默认值‘ ’:空格
指定分隔符
end
默认结尾
file
输出到指定文件
开发工具有环境
pycharm
快捷键
常用
Ctrl + Q 快速查看文档
Ctrl + F1 显示错误描述或警告信息
Ctrl + / 行注释(可选中多行)
Ctrl + Alt + L 代码格式化
Ctrl + Alt + O 自动导入
Ctrl + Alt + I 自动缩进
Tab / Shift + Tab 缩进、不缩进当前行(可选中多行)
Ctrl+C/Ctrl+Insert 复制当前行或选定的代码块到剪贴板
Ctrl + D 复制选定的区域
Ctrl + Y 删除当前行
Shift + Enter 换行
Ctrl +J 插入模版
Ctrl + Shift +/- 展开/折叠全部代码块
Ctrl + Numpad+ 全部展开
Ctrl + Numpad- 全部折叠
Ctrl + Delete 删除到字符结束
Ctrl + Backspace 删除到字符开始
Ctrl + Shift + F7 将当前单词在整个文件中高亮,F3移动到下一个,ESC取消高亮。
Alt + up/down 方法上移或下移动
Alt + Shift + up/down 当前行上移或下移动
Ctrl + B/鼠标左键 转到方法定义处
Ctrl + W 选中增加的代码块
Shift + F6 方法或变量重命名
Ctrl + E 最近访问的文件
Esc 从其他窗口回到编辑窗口
Shift + Esc 隐藏当前窗口,焦点到编辑窗口
F12 回到先前的工具窗口
全部
1.编辑
Ctrl + Space 基本的代码完成(类、方法、属性)
Ctrl + Alt + Space 快速导入任意类
Ctrl + Shift + Enter 语句完成
Ctrl + P 参数信息(在方法中调用参数)
Ctrl + Q 快速查看文档
Shift + F1 外部文档
Ctrl + 鼠标 简介
Ctrl + F1 显示错误描述或警告信息
Alt + Insert 自动生成代码
Ctrl + O 重新方法
Ctrl + Alt + T 选中
Ctrl + / 行注释
Ctrl + Shift + / 块注释
Ctrl + W 选中增加的代码块
Ctrl + Shift + W 回到之前状态
Ctrl + Shift + ]/[ 选定代码块结束、开始
Alt + Enter 快速修正
Ctrl + Alt + L 代码格式化
Ctrl + Alt + O 自动导入
Ctrl + Alt + I 自动缩进
Tab / Shift + Tab 缩进、不缩进当前行
Ctrl+X/Shift+Delete 剪切当前行或选定的代码块到剪贴板
Ctrl+C/Ctrl+Insert 复制当前行或选定的代码块到剪贴板
Ctrl+V/Shift+Insert 从剪贴板粘贴
Ctrl + Shift + V 从最近的缓冲区粘贴
Ctrl + D 复制选定的区域或行到后面或下一行
Ctrl + Y 删除当前行
Ctrl + Shift + J 添加智能线
Ctrl + Enter 智能线切割
Shift + Enter 下一行另起一行
Ctrl + Shift + U 在选定的区域或代码块间切换
Ctrl + Delete 删除到字符结束
Ctrl + Backspace 删除到字符开始
Ctrl + Numpad+/- 展开折叠代码块
Ctrl + Numpad+ 全部展开
Ctrl + Numpad- 全部折叠
Ctrl + F4 关闭运行的选项卡
2查找/替换
F3 下一个
Shift + F3 前一个
Ctrl + R 替换
Ctrl + Shift + F 全局查找
Ctrl + Shift + R 全局替换
3运行
Alt + Shift + F10 运行模式配置
Alt + Shift + F9 调试模式配置
Shift + F10 运行
Shift + F9 调试
Ctrl + Shift + F10 运行编辑器配置
Ctrl + Alt + R 运行manage.py任务
4调试
F8 跳过
F7 进入
Shift + F8 退出
Alt + F9 运行游标
Alt + F8 验证表达式
Ctrl + Alt + F8 快速验证表达式
F9 恢复程序
Ctrl + F8 断点开关
Ctrl + Shift + F8 查看断点
5导航
Ctrl + N 跳转到类
Ctrl + Shift + N 跳转到符号
Alt + Right/Left 跳转到下一个、前一个编辑的选项卡
F12 回到先前的工具窗口
Esc 从其他窗口回到编辑窗口
Shift + Esc 隐藏当前窗口,焦点到编辑窗口
Ctrl + Shift + F4 关闭主动运行的选项卡
Ctrl + G 查看当前行号、字符号
Ctrl + E 最近访问的文件
Ctrl+Alt+Left/Right 后退、前进
Ctrl+Shift+Backspace 导航到最近编辑区域
Alt + F1 查找当前文件或标识
Ctrl+B / Ctrl+Click 跳转到声明
Ctrl + Alt + B 跳转到实现
Ctrl + Shift + I 查看快速定义
Ctrl + Shift + B 跳转到类型声明
Ctrl + U 跳转到父方法、父类
Alt + Up/Down 跳转到上一个、下一个方法
Ctrl + ]/[ 跳转到代码块结束、开始
Ctrl + F12 弹出文件结构
Ctrl + H 类型层次结构
Ctrl + Shift + H 方法层次结构
Ctrl + Alt + H 调用层次结构
F2 / Shift + F2 下一条、前一条高亮的错误
F4 / Ctrl + Enter 编辑资源、查看资源
Alt + Home 显示导航条F11书签开关
Ctrl + Shift +F11 书签助记开关
Ctrl #[0-9] + 跳转到标识的书签
Shift + F11显示书签
6搜索
Alt + F7/Ctrl + F7 文件中查询用法
Ctrl + Shift + F7 文件中用法高亮显示
Ctrl + Alt + F7 显示用法
7重构
F5 复制
F6 剪切
Alt + Delete 安全删除
Shift + F6 方法或变量重命名
Ctrl + F6 更改签名
Ctrl + Alt + N 内联
Ctrl + Alt + M 提取方法
Ctrl + Alt + V 提取属性
Ctrl + Alt + F 提取字段
Ctrl + Alt + C 提取常量
Ctrl + Alt + P 提取参数
8控制
Ctrl + K 提交项目
Ctrl + T 更新项目
Alt + Shift + C 查看最近的变化
Alt + BackQuote(’)VCS 快速弹出
Ctrl + Alt + J 当前行使用模版
9模板
Ctrl + Alt + J 当前行使用模版
Ctrl +J 插入模版
10基本
Alt + #[0-9] 打开相应编号的工具窗口
Ctrl + Alt + Y 同步
Ctrl + Shift + F12 最大化编辑开关
Alt + Shift + F 添加到最喜欢
Alt + Shift + I 根据配置检查当前文件
Ctrl + BackQuote(’) 快速切换当前计划
Ctrl + Alt + S 打开设置页
Ctrl + Shift + A 查找编辑器里所有的动作
Ctrl + Tab 在窗口间进行切换
第三方库更换
打开设置,添加新仓库http://mirrors.aliyun.com/pypi/simple/
安装新库文件时,勾选option,内容:--trusted-host mirrors.aliyun.com
升级pip
python -m pip install --upgrade pip -i https://pypi.douban.com/simple
Python
解释器
jdk
爬虫
定义
按照一定规则 自动 抓取万维网信息 程序 脚本 Python模仿发送请求,接受服务器的返回值 然后自己解析,把解析后有用的信息留下,保存;然后重复动作
步骤
# 发送请求 # 接受响应,解析响应内容
from urllib import request url = 'http://www.baidu.com' response = request.urlopen(url) html = response.read().decode('utf-8')
# 解析源代码 # 下面用bs4做例子解析
from bs4 import BeautifulSoup #参数1 接收一个等待被解析的对象; # 参数2 接收一个解析器 # html.parser:这个是Python自带的一个解析器 soup = BeautifulSoup(html,'lxml') # 这个是查找方法,可以查找标签;返回值是个列表 title = soup.select('title')
文件内容保存本地
# 文件内容存到本地 f = open('baidu.html','w',encoding='utf-8') f.write(html) f.close()
爬取指定内容
class
class='text' 那么我们就可以直接写.text来过滤
id
# id='tag' 那我们可以用#tag来过滤
身份伪装
# 身份伪装 from urllib import request url = 'https://www.baidu.com/' header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'} req = request.Request(url,headers=header) response = request.urlopen(req) print(response.read().decode())
豆瓣的例子
注意
class有个属性,可以.a.b.c来匹配
匹配id选择器
#