Python学习笔记(一)

前言

为了更好的学习渗透测试,现在需要学习新的代码,Python当初被当做用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。

Python简介

Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。
现在主要应用以下领域:

  1. Web 和 Internet开发
  2. 科学计算和统计
  3. 人工智能
  4. 桌面界面开发
  5. 软件开发
  6. 后端开发
  7. 网络爬虫

对于渗透测试来说,网络爬虫工具无疑是非常重要的,关于其他领域的应用,恕我没有深入了解,无法评判。

Python的下载与安装

kali自带Python2.7和Python3.7
下载:访问Python官网,选择系统匹配下载
配置:安装完成后,需配置环境变量,在计算机path变量中添加Python的安装目录。
验证:这里只演示kali

Python的基本语法

以下所有实例皆基于Python2.7版本

编码

在默认情况下,Python3文件为UTF-8编码格式进行编码,字符串都为Unicode格式,也可以指定不同的编码方式。

#--*-- coding:utf-8--*-- 修改编码方式为utf-8

标识符

  1. 第一个字符必须为字母或下划线
  2. 标识符中的其他部分由字母、数字、下划线组成
  3. 标识符对大小写敏感

标识符相当于变量名

命名规则

  1. 小驼峰法:第一个单词首字母小写,第二个首字母大写——userName
  2. 大驼峰法:每个单词的首字母大写——UserName
  3. 下划线法:用下划线进行连接——user_name

行和缩进

Python和其他语言最大的区别就是代码块不用{}来进行区分控制,而是用缩进来写模块,分号也可以。
缩进的数量是可变的,但是相同的代码块必须具有相同的缩进数量

if true:
    print "123"
else:
    print "456"

一行写多个变量或者代码时,可以加;区分,用tab键缩进

注释

单行注释使用#
多行注释使用三个单引号'''或者三个双引号"""

输入输出

输出:print

输入:raw_input、input
raw_input()

x = raw_input('please input number:\n')
if x>='1':
    if x<='3':
        print x
    else:
        print 'error'
elif x=='0':
    print x
else:
    print 'hello world'

input()

 x = input('please input number:\n')
 if x==1:
     print x
 elif x==2:
     print x
 else:
     print 'hello world'

两个函数的区别是:
1、raw_input 接收的东西被转成字符输出(条件的值需要加单引号'括起来)
2、input 接收的东西被转成整数型和浮点数可以直接进行计算

字符串格式化

#!/usr/bin/python    指定解析器
print "my name is %s and my old is %d ." %('ronin',176)

设置执行哪种格式化%s、%d输出,%代表后面的是变量,多个变量将一一对应

数据结构和运算符

数据结构主要为虾米四种:元组、列表、字典、集合,在Python中比较重要的是列表和字典,列表按照顺序存储数据,字典就像数据库,能高效存储和检索数据。

列表(相当于PHP索引数组)

列表需要中括号[]把里面数据框起来,里面的数据叫做“元素”,元素之间英文逗号隔开。
实例:

list = [1,2,3,4,5,6]
list1 = ['zz','xx','yy']
list[0] => 1
list1[2] => yy

若要从列表获取单个元素,列表按照元素位置编号(偏移量)进行获取。

  1. 偏移量从0开始
  2. 列表名后面加偏移量的中括号

获取多个元素:

list1 = [1,2,3,4,5,6]
print (list1[:])
print (list1[3:])
print (list1[:3])
print (list1[1:3])
print (list1[3:5])

执行结果:

用冒号截取列表元素的方法叫:切片,把列表的某些片段进行获取,可以同时取出多个元素

切片口诀:
左右若为空,全部取值
写左边,左要取
写右边,右不取

列表操作——增加、删除元素

list2 = ['ming','qiang','guo','li']
list2.append('wang')
del list2[1]
print (list2)

#结果
['ming', 'guo', 'li', 'wang']

增加:list.append() 每次只能增加一个元素
删除:del list[0] 也可以一次性删除多个元素,利用切片方法

字典(相当于PHP关联数组)

字典是一种可变容器模型,切存储任意类型对象
格式:dict={key1:value1,key2:value2}

注意:

  1. 字典中的键独一无二,同一个字典中key不能有重复值
  2. 键是不可变的,字典键不能是列表、字典

字典中取元素(取的是key对应的value)

list = {'ming':70,'ting':80,'li':90}
print list
print list['li']

#结果
{'ting': 80, 'li': 90, 'ming': 70}
90

字典操作——增加、删除元素

list = {'ming':70,'ting':80,'li':90}
list['li']=100
list['wang']=110
del list['ming']
print list

#结果
{'ting': 80, 'li': 100, 'wang': 110}

增加:list[key] = value
删除:del list[key]

注意:

  1. 若字典中没有的元素,则会添加一个新的元素
  2. 若字典有对应的元素,则会更新元素的值

元组 (创建之后无法进行修改)

元组是一种不可变序列,创建之后无法进行任何修改。
格式:
cub=(元素1,元素2,元素3,...,元素n) #定义n个元素元组
cub=() #定义空元组

实例:

list=(1,'tom',23)
print list[:]

#结果
(1, 'tom', 23)

访问方法和列表一样使用切片法或者下标。

元组操作——删除

因为元组数据无法修改,所以也不能单独删除某个元素,但是可以删除整个元组。

删除:del list

list=(1,'tom',23)
print list[:]
del list
print list

#结果
(1, 'tom', 23)
<type 'list'>

集合(无序列表——用的很少)

集合时个无序列表,在Python3中使用一对{}作为界定符,元素之间用逗号分隔,同一个集合的元素都是唯一的,不能重复。

集合操作

**1、创建集合,格式:
se=set("adbcdadag")**

**2、添加集合元素,格式:
se.add(x)、se.update(x),其中的x可以是列表、元组、字典等。**

注意:

  1. list=set("abcde") //创建集合
  2. list.add(1) //添加集合,只能添加一个值
  3. list.update([2,3,4]) //添加集合[]内逗号隔开

集合运算

实例:

#python3版本

a = set('abcdefghijk')
b = set('acdpoyvb')
print (a)
print (b)

print (a-b)
print (a|b)
print (a&b)
print (a^b)

#结果
{'g', 'i', 'e', 'b', 'a', 'd', 'f', 'c', 'j', 'h', 'k'}
{'p', 'o', 'd', 'a', 'b', 'c', 'y', 'v'}
{'g', 'e', 'f', 'j', 'i', 'h', 'k'}
{'g', 'p', 'e', 'o', 'a', 'c', 'j', 'k', 'h', 'b', 'd', 'f', 'i', 'y', 'v'}
{'d', 'a', 'b', 'c'}
{'p', 'g', 'e', 'o', 'f', 'j', 'h', 'i', 'y', 'v', 'k'}

Python运算符

Python常用的原算法有有四种:

  1. 算术运算符:主要用于亮哥对象算术计算(加减乘除)
  2. 比较(关系)运算符:用于亮哥对象比较(判断是否相等,大于等运算)
  3. 赋值运算符:用于赋值,将右边的值赋给运算符左边
  4. 逻辑运算符:用于逻辑运算(与或非等)

条件控制

条件控制就是计算机沟通的逻辑,让计算机知道在什么条件下,应该去做什么。

单项判断

格式:

if xxx:#条件
    print (xxxx)

如果满足条件,就....

双向判断

格式:

if xxxx: #条件
    print (xxxx)  
else:#当if条件不满足时
    print (xxxx)

多向判断

格式:

if: #条件1
    print (xxxx)
elif xxxx: #条件2
    print (xxxx)
elif xxxx: #条件3
    print (xxxx)
else: #前面条件都不满足
    print (xxxx)

注意:
Python和PHP的区别为else if 变为elif

嵌套

格式:

if xxxx:
    if xxxx:
        ......
    else:
        ......
else:
    if xxxx:
        else:
            ......

实例:

x = raw_input('please input number:\n')
if x>='1':
    if x<='3':
        print x
    else:
        print 'error'
elif x=='0':
    print x
else:
    print 'hello world'

循环语句

程序按照顺序执行,编程语言提供控制结果,允许更复杂的路径,循环语句允许我们执行一个语句或语句组多次。

for...in...循环

格式:

for list in [6,7,8,9]:
    print (list)

#结果
6
7
8
9

注意:
[6,7,8,9] => 可以替换成 字符串、列表、字典等,依次取值,过程叫做遍历。

while循环

在一定的条件下,按照流程办事
格式:

a = 0
while a<6: #条件
    a+=1
    print a
    
#结果
1
2
3
4
5
6

for...in...和while循环的区别

相同点:冒号和内部代码缩进都是不可少的
不同点:
for...in 循环次数确定,直到把所有工作做完才结束。
while 循环次数不确定,只要满足条件就能一直运行,直到不满足条件就结束进程。

Tips

break //是打断当前的循环,后面的也无法执行
continue //跳过这一次的循环,后面正常执行

pass //Python独有 为了代码正确性,相当于占位符,为了防止报错正常运行

实例:

def getImgUrl(url):
    pass
......
Typecho赞赏功能

「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」

冷夜清风

(๑>ڡ<)☆谢谢老板们的投食~

使用微信扫描二维码完成支付


添加新评论

选择表情

  TimeLine

恢复正常更新,看心情吧。
--- updated on 2020-10-07 18:52:12 星期三

  About Me

我就是随便写写,您随便看看。
有事说事,没事烧纸,闲人勿扰,谢谢。
侧重方向:渗透测试,IT运维。

  Recent Comments

  •  小白: 无法解压怎么办?
  •  Liu先生的故事小屋: 网站改名字了原站点名字 小酱博客,现站点名字:Liu先生的故事小屋
  •  1231231: 测试
  •  122: 感谢
  •  御宅男: 码农路过,留下一个爪印!!!
  •  xue: 请问怎末给权限
  •  xue: 点了 run 一直闪退啥情况
  •  xue: 怎末解决的大佬
  •  小白兔: 感谢大佬,作为初学者能碰到这样的大佬是真的幸运
  •  wxyccc: 大佬真的太感谢你了 今天在网上找了无数资料都没能装好,出了太多问题, 有幸能看到你的文章 真的...

快乐地过是一天,不快乐地过也是一天,我为什么不快快乐乐地过每一天呢?

岂能尽随人愿,但求无愧我心。

在你内心深处,还有无穷的潜力,有一天当你回首看时,你就会知道这绝对是真的。

活在当下,别在怀念过去或者憧憬未来中浪费掉你现在的生活。

挫折时,要像大树一样,被砍了,还能再长;也要像杂草一样,虽让人践踏,但还能勇敢地活下去。