网络安全的学习,需要耐得住,坐得住,这里有关python语言的基础语法不再赘述,有c和javase编程基础的,不到一个星期,即可掌握。如果想要编写POC,只依靠BP这样的工具是远远不够的,通过本次学习,掌握常用的手法,自行编写代码实现渗透。
列表的数据项不需要具有相同的类型,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可
与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推,通过索引列表可以进行截取、组合等操作。
索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
如下所示:
列表比较需要引入 operator 模块的 eq 方法
# 导入 operator 模块 import operator a = [1, 2] b = [2, 3] c = [2, 3] print("operator.eq(a,b): ", operator.eq(a,b)) #fasle print("operator.eq(c,b): ", operator.eq(c,b)) #true
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用:
>>> tup1 = (50) >>> type(tup1) # 不加逗号,类型为整型 <class int> >>> tup1 = (50,) >>> type(tup1) # 加上逗号,类型为元组 <class tuple>
tup1 = (Google, Runoob, 1997, 2000) tup2 = (1, 2, 3, 4, 5, 6, 7 ) print ("tup1[0]: ", tup1[0]) print ("tup2[1:5]: ", tup2[1:5])
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
tup1 = (12, 34.56) tup2 = (abc, xyz) # 以下修改元组元素操作是非法的。 # tup1[0] = 100 # 创建一个新的元组 tup3 = tup1 + tup2 print (tup3)
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例
tup = (Google, Runoob, 1997, 2000) print (tup) del tup print ("删除后的元组 tup : ") print (tup)
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组,不再赘述。
len,max.min不再赘述,声明一下tuple(iterable) 将可迭代系列转换为元组
>>> list1= [Google, Taobao, Runoob, Baidu] >>> tuple1=tuple(list1) >>> tuple1 (Google, Taobao, Runoob, Baidu)
字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
emptyDict = dict() # 打印字典 print(emptyDict)
把相应的键放入到方括号中,如下实例:
tinydict = {Name: Runoob, Age: 7, Class: First} print ("tinydict[Name]: ", tinydict[Name])
字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
tinydict = {Name: Runoob, Age: 7, Class: First} tinydict[Age] = 8 # 更新 Age tinydict[School] = "金友鑫" # 添加信息 print ("tinydict[Age]: ", tinydict[Age]) print ("tinydict[School]: ", tinydict[School])
能删单一的元素也能清空字典,清空只需一项操作。
显式删除一个字典用del命令,如下实例:
tinydict = {Name: Runoob, Age: 7, Class: First} del tinydict[Name] # 删除键 Name tinydict.clear() # 清空字典 del tinydict # 删除字典
有关内置函数和方法不再赘述。
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
>>> basket = {apple, orange, apple, pear, orange, banana} >>> print(basket) # 这里演示的是去重功能 {orange, banana, pear, apple} >>> orange in basket # 快速判断元素是否在集合内 True >>> crabgrass in basket False >>> # 下面展示两个集合间的运算. ... >>> a = set(abracadabra) >>> b = set(alacazam) >>> a {a, r, b, c, d} >>> a - b # 集合a中包含而集合b中不包含的元素 {r, d, b} >>> a | b # 集合a或b中包含的所有元素 {a, c, r, d, b, m, z, l} >>> a & b # 集合a和b中都包含了的元素 {a, c} >>> a ^ b # 不同时包含于a和b的元素 {r, d, b, m, z, l}
>>> thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.add("Facebook") >>> print(thisset) {Taobao, Facebook, Google, Runoob}
x 可以有多个,用逗号分开。
>>> thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.update({1,3}) >>> print(thisset) {1, 3, Google, Taobao, Runoob} >>> thisset.update([1,4],[5,6]) >>> print(thisset) {1, 3, 4, 5, 6, Google, Taobao, Runoob} >>>
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
>>> thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.remove("Taobao") >>> print(thisset) {Google, Runoob} >>> thisset.remove("Facebook") # 不存在会发生错误 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: Facebook >>>
如果元素不存在,不会发生错误。
>>> thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.discard("Facebook") # 不存在不会发生错误 >>> print(thisset) {Taobao, Google, Runoob}
随机删除集合中的一个元素
thisset = set(("Google", "Runoob", "Taobao", "Facebook")) x = thisset.pop() print(x)
每一次删除的内容都不同,主要原因是set集合是无序的。
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none
re.match(pattern, string, flags=0)
参数说明:
参数 描述 pattern 匹配的正则表达式 string 要匹配的字符串。 flags 标志位,用于控制正则表达式的匹配方式,如图一下文继续。