1、Python概述
1.1、为什么要学Python
Python是一门编程语言经常用它来写脚本。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求时,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这时就需要具备一定的编程能力。
1.2、Python是什么
Python(英国发音:/ˈpaɪθən/;美国发音:/ˈpaɪθɑːn/),是一种广泛使用的解释型、高级和通用的编程语言。Python支持多种编程范型,包括结构化、过程式、反射式、面向对象和函数式编程。它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个巨大而广泛的标准库。它的语言结构以及面向对象的方法,旨在帮助程序员为小型的和大型的项目编写逻辑清晰的代码。
1.3、环境说明
目前Python有两个版本:2.x和3.x,两者代码编写上是有一定区别,建议使用3.x版本。使用时需要先安装Python,如果没有自己电脑上没有安装过网络搜索下安装,比较简单。编辑器可以使用PyCharm Community Edition,直接官网下载即可,我不是专业用Python开发,对我来说够用了。
2、Python变量
- 允许采用大写字母、小写字母、数字、下划线(_)和汉字等字符及其组合给变量命名
- 名字的首字符不能是数字,中间不能出现空格,长度没有限制
- 标识符对大小写敏感,python和Python是两个不同的名字
- 保留字,也称为关键字,指被编程语言内部定义并保留使用的标识符。程序员编写程序不能定义与保留字相同的标识符。
每种程序设计语言都有一套保留字,保留字一般用来构成程序整体框架、表达关键值和具有结构性的复杂语义等。
2.1、赋值
Python是动态语言,不需要预先声明变量的类型。变量的类型和值在赋值时被初始化,在Python中使用等号(=)为变量赋值可以把任意数据类型赋值给变量,不论是整数、字符串还是浮点数,同一个变量可以被反复赋值
Python语言中,= 表示“赋值”,即将等号右侧的值计算后将结果值赋给左侧变量,包含等号(=)的语句称为“赋值语句
语法:<变量> = <表达式>
同步赋值语句:同时给多个变量赋值
<变量1>, …, <变量N> = <表达式1>, …, <表达式N>
测试代码
if __name__ == '__main__':
a = 1
b = 3.88
c = 'hello world'
print(a)
print(b)
print(c)
a = 'wangan'
print(a)
运行结果:
1
3.88
hello world
wangan
3、Python注释
3.1、单行注释
Python 使用井号 # 作为单行注释的符号,
从井号 # 开始,直到这行结束为止的所有内容都是注释。Python 解释器遇到 # 时,会忽略它后面的整行内容。
语法格式为:
# 注释内容
3.2、多行注释
多行注释指的是一次性注释程序中多行的内容(包含一行)。Python 使用三个连续的单引号'''或者三个连续的双引号"""注释多行内容,多行注释通常用来为 Python 文件、模块、类或者函数等添加版权或者功能描述信息。
语法格式为:
'''使用 3 个单引号分别作为注释的开头和结尾可以一次性注释多行内容这里面的内容全部是注释内容'''
"""使用 3 个双引号分别作为注释的开头和结尾可以一次性注释多行内容这里面的内容全部是注释内容"""
3.3、注意事项
Python 多行注释不支持嵌套,所以下面的写法是错误的:
'''外层注释
''' 内层注释 '''
'''
不管是多行注释还是单行注释,当注释符作为字符串的一部分出现时,就不再作为注释标记,而是正常代码的一部分,例如:
print('''Hello,World!''')
print("""http://c.biancheng.net/cplus/""")
print("#是单行注释的开始")
运行结果:
Hello,World!
http://c.biancheng.net/cplus/
#是单行注释的开始
4、Python数据类型
4.1、数值
包含4种类型,分别为整型、浮点型、布尔类型、复数 complex
# 举例说明
>>> a = 5 ## 整形
>>> b = 5.3 ## 浮点型 float
>>> c = False ## 布尔类型
>>> d = 4+3j ## 复数 complex
4.2、字符串
字符串是以单引号'或者是双引号"括起来的任意文本 ,如果单引号或双引号是文本内容,可用反斜杠\转义。
4.3、列表
列表是任意对象 的有序集合,可通过索引访问指定元素,索引从0开始,依次递增,-1表示最后一个元素。列表中的元素类型可不同,可同时包含数字、字符串等数据类型。列表用方括号[]表示,可被索引和截取,元素可以更改。加号(+)是列表的连接符,星号(*)表示重复操作。
4.4、元组
元组使用小括号 () 表示,各元素使用逗号分隔,与列表类似,能够进行索引和截取操作,区别在于元组中的元素不能更改。
4.5、字典
字典是由一对一对的键(key):值(value)组成的无序集合,是一种映射类型,使用{}表示。 键必须是不可变类型,要求唯一,可以使用数字、字符串或者元组充当 。字典中的元素通过键(key)来存取,可以更改。
4.6、集合
集合是一个无序、不重复元素的集合,无法通过数字编号进行索引。创建方法是使用大括号({})或者set()函数,注意:创建一个空的集合必须使用set()函
数而不能使用{},因为{}表示创建一个空的字典。
5、小试牛刀
5.1、数值类型四则运算
示例代码
if __name__ == '__main__':
print('数值类型可以做四则运算')
# 整数四则运算
x = 10
y = 3
# 加法
add = x + y
# 减法
sub = x - y
# 乘法
multi = x * y
# 除法
division = x / y
print("整数加法:", add)
print("整数加法:", sub)
print("整数乘法:", multi)
print("整数除法-转换前:", division)
print("整数除法-转换后:", int(division))
# 浮点数四则运算
a = 3.5
b = 1.2
# 加法
add_float = a + b
# 减法
sub_float = a - b
# 乘法
multi_float = a * b
# 除法
division_float = a / b
print("浮点数加法:", add_float)
print("浮点数加法:", sub_float)
print("浮点数乘法:", multi_float)
print("浮点数除法:", division_float)
运行结果:
数值类型可以做四则运算
整数加法: 14
整数加法: 8
整数乘法: 33
整数除法-转换前: 3.6666666666666665
整数除法-转换后: 3
浮点数加法: 4.7
浮点数加法: 2.3
浮点数乘法: 4.2
浮点数除法: 2.916666666666667
5.2、列表、元组索引访问
示例代码
if __name__ == '__main__':
print('列表、元组索引访问,元组不可以修改元素')
# 定义列表list1
list1 = ['python', 123, 22.5]
# 打印列表list1
print('打印列表list1: ', list1)
# 打印列表list1的第一个元素
print('打印列表list1的第一个元素: ', list1[0])
# 打印列表list1的最后一个元素
print('打印列表list1的最后一个元素: ', list1[-1])
# 将列表list1的第一个元素修改为'new'
list1[0] = 'new'
# 循环打印列表list1的所有元素
print('循环打印列表list1的所有元素: ')
for i in range(len(list1)):
print(list1[i])
# 定义元组tup1
tup1 = ('python', 123, 22.5)
# 打印元组tup1
print('打印元组tup1: ', tup1)
# 打印元组tup1的第一个元素
print('打印元组tup1的第一个元素: ', tup1[0])
# 打印元组tup1的最后一个元素
print('打印元组tup1的最后一个元素: ', tup1[-1])
# 循环打印元组tup1的所有元素
print('循环打印元组tup1的所有元素: ')
for i in range(len(tup1)):
print(tup1[i])
运行结果:
列表、元组索引访问,元组不可以修改元素
打印列表list1: ['python', 123, 22.5]
打印列表list1的第一个元素: python
打印列表list1的最后一个元素: 22.5
循环打印列表list1的所有元素:
new
123
22.5
打印元组tup1: ('python', 123, 22.5)
打印元组tup1的第一个元素: python
打印元组tup1的最后一个元素: 22.5
循环打印元组tup1的所有元素:
python
123
22.5
5.3、字典元素key访问
示例代码
if __name__ == '__main__':
print('字典元素key访问')
# 定义字典dict1
dict1 = {'name': 'messi', 'weight': 60, 'age': 30}
# 打印字典dict1中所有的键
print('打印字典dict1中所有的键: ', dict1.keys())
# 打印字典dict1中所有的值
print('打印字典dict1中所有的值: ', dict1.values())
# 循环根据key获取对应的值
for key in dict1.keys():
print(f'key是{key}, 对应值: ', dict1[key])
# 修改字典dict1中键weight对应的值
dict1['weight'] = 65
# 循环打印字典
print("循环打印字典key : value")
for key, value in dict1.items():
print(f'{key} :{value}')
运行结果:
字典元素key访问
打印字典dict1中所有的键: dict_keys(['name', 'weight', 'age'])
打印字典dict1中所有的值: dict_values(['messi', 60, 30])
key是name, 对应值: messi
key是weight, 对应值: 60
key是age, 对应值: 30
循环打印字典key : value
name :messi
weight :65
age :30