Python相关知识
python的变量是不需要事先声明和定义类型的
Python 2.7 被确定为最后一个 Python 2.x 版本,它除了支持 Python 2.x 语法外,还支持部分 Python 3.1 语法
1、python没有i++自增自减,但是有--i,却也不是自增自减的意思,仅仅是作为判断运算符号,类似数学中的负负得正
可以用i+=1,i-=1
2、python的turtle海龟模块——画画
for i in range(0,4): t.forward(100) t.left(90)
3、模块和包
模块,是函数的集合
多个模块放在一个目录,就是包
包>模块
from PIL import image 从PIL包中导入image模块
import和from import的区别
两个import语义有差异
import datetime
print(datetime.datetime.now())
是引入整个datetime包
from datetime import datetime
print(datetime.now())
是只引入datetime包里的datetime类
所以import之后前者是datetime这个包可见 后者是datetime.datetime这个类可见
python导入自己写的模块,那个模块必须要在package里面,是python package的文件夹里面有个__init__.py,不是简单新建一个文件夹就行了
4、除和整除
python中,除是/,整除是//
整除,取余都对浮点数也适用
python乘方运算
**乘方运算
5、python中,None必须大写
None也是一个元素,
num2=[None]
print(len(num2))
会输出1
6、Scrapy框架
Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。
Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。7、scapy包
scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送、嗅探、解析和伪造网络数据包,常常被用到网络攻击和测试中。它可以代替hping,arpspoof.ARP SK,arping,p0f,甚至是部分nmap,Tcpdump和tshark。
8、python中if __name__ == '__main__'
模块是对象,并且所有的模块都有一个内置属性 __name__。
一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名(不带路径或者文件扩展名)。而如果像一个标准的程序样直接运行模块,那么 __name__ 的值就是"__main__"。
即:
在cmd 中直接运行.py文件,则__name__的值是'__main__';
而在import 一个.py文件后,__name__的值就不是'__main__'了;
从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件
由于python不像C/C++和Java一样有主函数,所以就用这个机制来区分主执行文件还是被调用的文件
9、python读入
读入是input
n=input()
读进来默认是字符串型的,用整形的话需要转一下
n=int(n)
在python3.x以后就没有raw_input了
10、python函数可以没有返回值,就是过程
也是def
12、range()是左闭右开
for i in range(1,5)
是输出1,2,3,4
13、 python全局变量 global
全局变量在使用之前就要声明,声明全局变量使用关键字 global,然后在使用该全局变量之前,再次声明
14、python输出不换行
print(a[i],end=" ")
16、python初始化一个定长的数组
b = [0]*10
18、python的字典dictionary的遍历不能用dict[0],dict[1]这样
它没有这种顺序
19、python字典&列表&元组
字典
dict = {}列表
list = []元组
tup = () //tuple是不可变的list, 其中的元素也可以是任意类型的Python对象
或
tup = 1,2,3,4,5元组中的元素是不能修改的,列表和字典可以
字典添加元素直接添加就可以,列表需要list.append()
20、python的数组就是列表
21、python查看矩阵/列表/字典/元组大小
24、python 查看对象的属性和方法
dir方法
print(dir(obj)) obj为对象名, 此命令打印对象所有属性和方法
29、python输出有省略号解决
import numpy as np np.set_printoptions(threshold=np.inf)
30、python图片转为矩阵
import numpy as np from PIL import Image im = Image.open('test.jpg') img = np.array(im)
31、2维矩阵就是一张表
就是ndim=2的
a[0]是输出其第0行
33、try…finally…
当执行一大串代码时,一旦程序代码中某一个部分出错,就会立即停止,同时剩下的其他代码也不会再继续执行了。这就会有一个问题,如果在剩下未执行的代码中有一些事是必须要执行的,比如释放之前分配的内存等等,而因为报错导致之后的代码无法执行,这就会带来内存泄漏等影响。
所以使用try...finally...,在try中的代码无论是否出错是否运行被终止,都不会影响finally部分代码的运行。即无论如何finally部分的代码都会执行,这样就可以将一些必须要做的事情放在finally中保证他们的执行
34、 a = b'some byte array'
字节串
35、python中 r'', b'', u'的含义
r/R:非转义的原始字符串
r'input\n'
# 非转义原生字符b:bytes
b'input\n'
# bytes字节符,打印以b开头。u/U:表示unicode字符串
u'input\n'
# unicode编码字符,python3默认字符串编码方式。36、python 使程序输出不是科学计数法
import numpy as np np.set_printoptions(suppress=True)
37、is not None
代码中经常会有变量是否为None的判断,有三种主要的写法:
第一种是`if x is None`;
第二种是 `if not x:`;
第三种是`if not x is None`(这句这样理解更清晰`if not (x is None)`) 。
这三种写法是有区别的
`if x is not None`是最好的写法,清晰,不会出现错误,以后坚持使用这种写法。