1、python基础

Python

一、Python的特点

aj5ehT.png

二、Python基础

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#############输出
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
print('','') #输出两个东西 默认空格分隔
print("%d/s"%变量名)
print('{0},{0},{1},{1}'.format(值0,值1))
print(f"我的变量是{变量名}") #python3新特性
##########输入
val = input('输入提示') #如果需要输入指定的数据类型需要强转int(intput())
#数据类型的转换:https://www.runoob.com/python3/python3-data-type.html
##########python的注释
# 和 三个双引号或单引号 作为多行注释使用
##########python的运算符
/ #浮点除 // #整除 ** #求幂
innot in #成员运算符,判断一个变量或值是否在某个容器中(字符串、列表元组)
a, b, c = 1, 2, 3 / a = b = c = 1 #python允许多个变量同时赋值
##########python进制表示与转换
0bXX bin()/0OXX oct()/XX int()/0xXX hex() #二进制 #八进制 #十进制 #十六进制
ord() #字符转ASCII码
chr() #接受一个单字节ASCII码整数值,返回一个字符
#########常见内建函数
"https://www.runoob.com/python3/python3-built-in-functions.html"
abs();tuple();list();pow();
divmod(a,b) #返回a除b所得的商和余数的元组类型
round(数,舍入的位数) #对浮点数进行四舍五入计算,遇5时奇进偶不进,银行家舍入。
reversed() #返回逆向的迭代器
sorted(iterable, key=None, reverse=False) #排序,key是比较的元素,reverse是否降序
enumerate(sequence, [start=0]) #将一个序列转为一个每一个元素都包括值和下标的序列,for循环直接遍历,或者使用list()、tuple()、dict(),进行强转获得一个新的每个元素都具有值和下表的数据类型
zip()/zip(*) #将多列表中的元素一一组合压缩为元组,或者解压,如果列表长度不一致,则只组合最短的长度。
str.center(width, fillchar) #字符串以width宽度居中,左右填充fillchar
str.strip([char]) #删除str头和尾的char字符,如果没指定char,默认是空格
str.upper()/lower() #转换字符串中的大小写转换
str.split(separator="", num=string.count(XX)) #以separator为分隔符截取num+1个字符串
str.replace(old, new [, max]) #将str中的old换成new,如果max指定替换不超过max次
max()/min()/sum() #从一个序列中找到最大值/最小值/得到和
##########格式化操作符
%s;%d;%e(科学计数法);%f
- #左对齐
+ #正负数前面打印政府符号
%.3f/%3s #浮点小数精度、宽度

三、Python的标准数据类型

Python3 中有六个标准的数据类型:

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

Python3 的六个标准数据类型中:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#############字符串
+ 连接字符串, * 复制字符串,[:]截取字符串,空为前所有或后所有,-1为尾,字符串前加r/R,表示转义符号无效;\ 也可作为续行符;f"{arg}"
split() #按分隔符取字符串
template = string.Template("hi ${name},I will see u ${day}") #string模块的template
template.substitute(name = 'bob', day = 'tomorrow') #string.template
###########列表
列表截取操作与字符串相同,多了第三个参数:步长 [::]
创建列表的快捷方式:[表达式 for 变量 in range()];[0 for _ in range(5)]
'分隔符'.join(序列) #将列表组合为字符串
del list[idx] / list.remove(val) / list.pop() #删除列表元素
list.count(obj) #统计列表中obj的数量
list.extend(seq) #追加一个序列到列表中
list.reverse() #逆序列表
list.insert(idx,obj) #插入元素到某一位置
list.index(x[, start[, end]]) #在列表中找到某个值第一个匹配项的位置
list1 = map(int, list1) #将list1中所有元素转为int类型
###########元组(Tuple))
(val,val,val) :元组和列表类似,但不能修改元素内容,截取方法和字符串类似。
tuple([val,val]) / (val) #第二种如果是一个值要加逗号,否则认为是一个字符串
###########集合(set)
{}:创建一个空集合必须用set(),因为{}表示创建一个空字典
集合运算:a-b->a和b的差集; a|b->a和b的并集; a&b->a和b的交集; a^b->a和b不同时存在的元素
###########字典Dictionary(java/c++ 中的map)
{key:value}
dict()可直接创建字典:dict([(key,value),(key,value)])

四、Python的循环语句

1
2
whilefor语句支持else,循环结束后执行。
range(起始,结束,步长)

五、文件操作

1
2
3
4
5
6
7
8
9
文件对象 = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

fileObject.read(size); #size为或负 空则全读
fileObject.close();
fileObject.readline(); #也可size
fileObject.readlines(); #把所有行读给列表
fileObject.writelines(); #把字符串列表写给文件
for eachLine in fobj: #逐行处理文件
data.encode(encoding='utf-8')
  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
  • opener:

mode 参数有(默认t):

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(Python 3 不支持)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
1
os.path.exists('') -> True/False    #判断文件是否存在

六、函数

1
2
3
4
5
6
import sys    #使用命令行传入的参数,需要导入sys模块,sys.argv
def 函数名(参数列表 = 默认值): #默认值如有需要;可变类型的实参会被函数内部对形参的改变而改变,不可变类型的实参在函数内部被改变时,实际上是在一块新内存中创建了对象,不会影响实参;
函数体
return 结果值 #如有需要

函数名 = lambda [arg1 [,arg2,.....argn]]:expression #lambda匿名函数

七、模块

1
__name__属性:当前模块内执行时,__name__='__main__',被其它模块导入加载时运行__name__='该模块名'

aj5kBn.jpg

八、keyword关键字

1
2
3
import keyword
keyword.iskeyword('') #查询某字符串是否是关键字
keyword.kwlist #输出所有关键字

九、代码风格

avkPFP.png

十、Python对象

1、特性:

  • 身份:每一个对象都有一个唯一的身份标识自己,也就是通过内建函数id()来得到的内存地址。
  • 类型:通过内建函数type()查看对象的类型
  • 值:对象表示的数据项

十一、使用Python密码爆破Linux系统

1
2
3
4
5
6
7
{用户名}:{加密后的口令密码}:{口令最后修改时间距原点(1970-1-1)的天数}:{口令最小修改间隔(防止修改口令,如果时限未到,将恢复至旧口令):{口令最大修改间隔}:{口令失效前的警告天数}:{账户不活动天数}:{账号失效天数}:{保留}
###
而所谓的密码域密文也是由三部分组成的,即:$id$salt$encrypted。
id为1时,采用md5进行加密;
id为5时,采用SHA256进行加密;
id为6时,采用SHA512进行加密。
### crypt.crypt(明文密码,salt) 此salt是id+salt

十二、Python模块的使用

1
python2 -m SimpleHTTPServer #默认8000端口开启简单的HTTP服务

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器