Python武器库开发-基础篇(一)

news2025/1/22 15:51:11

前言

以Python编程为主,围绕渗透测试展开的一门专栏。专栏内容包括: Python基础编程(Python基础、语法、对象、文件操作,错误和异常),Python高级编程(正则表达式、网络编程、WEB编程),以及Python安全编程(个人博客开发,Python爬虫的编写,漏洞exp的编写,红队-漏洞扫描器开发,蓝队-自动化工具等等),通过本专栏的学习,能把Python编程应用到实际的渗透当中,可以提高效率,同时拥有新的思路,同时也能打造属于自己的武器库工具

基础篇(一)

Hello World程序

长期以来,编程界都认为刚接触一门新语言时,如果首先使用它来编写一个在屏幕上显示消息“Hello world!”的程序,将给你带来好运。

要使用Python来编写这种Hello World程序,只需一行代码:

print("Hello world!")

这种程序虽然简单,却有其用途:如果它能够在你的系统上正确地运行,你编写的任何Python程序都将如此。

在这里插入图片描述

变量

下面来尝试在程序中使用一个变量。在这个文件开头添加一行代码,并对第2行代码进行修改,如下所示:

message = "Hello Python world!"
print(message)

我们添加了一个名为message 的变量 。每个变量都存储了一个值 ——与变量相关联的信息。在这里,存储的值为文本“Hello Python world!”。

这样程序会输出“Hello Python world!”

在这里插入图片描述

数据类型

字符串

大多数程序都定义并收集某种数据,然后使用它们来做些有意义的事情。鉴于此,对数据进行分类大有裨益。我们将介绍的第一种数据类型是字符串。字符串虽然看似简单,但能够以很多不同的方式使用它们。

字符串 就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号,如下所示:

"This is a string."
'This is also a string.'

这种灵活性让你能够在字符串中包含引号和撇号:

'I told my friend, "Python is my favorite language!"'
"The language 'Python' is named after Monty Python, not the snake."
"One of Python's strengths is its diverse and supportive community."

数字

在编程中,经常使用数字来记录游戏得分、表示可视化数据、存储Web应用信息等。Python根据数字的用法以不同的方式处理它们。鉴于整数使用起来最简单,下面就先来看看Python是如何管理它们的。

在Python中,可对整数执行加(+ )减(- )乘(* )除(/ )运算

2 + 3
3 - 2
2 * 3
3 / 2

程序运行的结果如下:

在这里插入图片描述

在Python中使用两个乘号表示乘方运算:

3 ** 2
3 ** 3
10 ** 6

程序运行的结果如下:

在这里插入图片描述

浮点数

Python将带小数点的数字都称为浮点数 。大多数编程语言都使用了这个术语,它指出了这样一个事实:小数点可出现在数字的任何位置。每种编程语言都须细心设计,以妥善地处理浮点数,确保不管小数点出现在什么位置,数字的行为都是正常的。

从很大程度上说,使用浮点数时都无需考虑其行为。你只需输入要使用的数字,Python通常都会按你期望的方式处理它们:

0.1 + 0.1
0.2 + 0.2
2 * 0.1
2 * 0.2

程序运行的结果如下:

在这里插入图片描述

但需要注意的是,结果包含的小数位数可能是不确定的:

0.2 + 0.1
3 * 0.1

程序运行的结果如下:

在这里插入图片描述

注释

在大多数编程语言中,注释都是一项很有用的功能。本书前面编写的程序中都只包含Python代码,但随着程序越来越大、越来越复杂,就应在其中添加说明,对你解决问题的方法进行大致的阐述。注释 让你能够使用自然语言在程序中添加说明。

在Python中,注释用井号(# )标识。井号后面的内容都会被Python解释器忽略,如下所示:

# 向大家问好
print("Hello Python people!")

程序运行的结果如下,Python解释器将忽略第1行,只执行第2行:

在这里插入图片描述

列表

列表 由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters 、digits 或names )是个不错的主意。

在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素。下面是一个简单的列表示例,这个列表包含几种自行车:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)

如果你让Python将列表打印出来,Python将打印列表的内部表示,包括方括号,程序运行的结果如下:

在这里插入图片描述

访问列表元素

列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。

例如,下面的代码从列表bicycles 中提取第一款自行车:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])

当你请求获取列表元素时,Python只返回该元素,而不包括方括号和引号,在Python中索引是从0开始的,而不是从1开始的:

在这里插入图片描述

如果我们要访问该列表中的第三个元素,那我们便可以写出如下程序

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[2])

程序运行的结果如下

在这里插入图片描述

Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1 ,可让Python返回最后一个列表元素:

bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[-1])

程序运行的结果如下

在这里插入图片描述

切片

要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range() 一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0 、1 和2 的元素。

下面的示例处理的是一个运动队成员列表:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])

代码打印该列表的一个切片,其中只包含三名队员。输出也是一个列表,其中包含前三名队员,程序运行的结果如下:

在这里插入图片描述

你可以生成列表的任何子集,例如,如果你要提取列表的第2~4个元素,可将起始索引指定为1 ,并将终止索引指定为4 :

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[1:4])

这一次,切片始于’marita’ ,终于’florence’ ,程序运行的结果如下:

在这里插入图片描述

如果你没有指定第一个索引,Python将自动从列表开头开始:

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4])

由于没有指定起始索引,Python从列表开头开始提取,程序运行的结果如下:

在这里插入图片描述

无论列表多长,这种语法都能够让你输出从特定位置到列表末尾的所有元素。负数索引返回离列表末尾相应距离的元素,因此你可以输出列表末尾的任何切片。例如,如果你要输出名单上的最后三名队员,可使用切片players[-3:] :

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[-3:])

上述代码打印最后三名队员的名字,即便队员名单的长度发生变化,也依然如此,程序运行的结果如下:

在这里插入图片描述

元组

列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,这对处理网站的用户列表或游戏中的角色列表至关重要。然而,有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。Python将不能修改的值称为不可变的 ,而不可变的列表被称为元组 。

定义元组

元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。

例如,如果有一个大小不应改变的矩形,可将其长度和宽度存储在一个元组中,从而确保它们是不能修改的:

dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])

我们首先定义了元组dimensions ,为此我们使用了圆括号而不是方括号。接下来,我们分别打印该元组的各个元素,使用的语法与访问列表元素时使用的语法相同:

在这里插入图片描述

空行、缩进与多行代码

空行

要将程序的不同部分分开,可使用空行。你应该使用空行来组织程序文件,但也不能滥用;只要按本书的示例展示的那样做,就能掌握其中的平衡。例如,如果你有5行创建列表的代码,还有3行处理该列表的代码,那么用一个空行将这两部分隔开是合适的。然而,你不应使用三四个空行将它们隔开。

空行不会影响代码的运行,但会影响代码的可读性。Python解释器根据水平缩进情况来解读代码,但不关心垂直间距。

缩进

建议每级缩进都使用四个空格,这既可提高可读性,又留下了足够的多级缩进空间。

在字处理文档中,大家常常使用制表符而不是空格来缩进。对于字处理文档来说,这样做的效果很好,但混合使用制表符和空格会让Python解释器感到迷惑。每款文本编辑器都提供了一种设置,可将输入的制表符转换为指定数量的空格。你在编写代码时应该使用制表符键,但一定要对编辑器进行设置,使其在文档中插入空格而不是制表符。

在程序中混合使用制表符和空格可能导致极难解决的问题。如果你混合使用了制表符和空格,可将文件中所有的制表符转换为空格,大多数编辑器都提供了这样的功能。

多行代码

很多Python程序员都建议每行不超过80字符。最初制定这样的指南时,在大多数计算机中,终端窗口每行只能容纳79字符;当前,计算机屏幕每行可容纳的字符数多得多,为何还要使用79字符的标准行长呢?这里有别的原因。专业程序员通常会在同一个屏幕上打开多个文件,使用标准行长可以让他们在屏幕上并排打开两三个文件时能同时看到各个文件的完整行。PEP 8还建议注释的行长都不超过72字符,因为有些工具为大型项目自动生成文档时,会在每行注释开头添加格式化字符。

有关行长的指南并非不可逾越的红线,有些小组将最大行长设置为99字符。在大多数编辑器中,都可设置一个视觉标志——通常是一条竖线,让你知道不能越过的界线在什么地方。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1102201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何选择国产压力测试工具?

随着互联网的飞速发展,软件应用的性能和稳定性变得愈发重要。无论是在线购物网站、社交媒体平台还是移动应用程序,用户都期望能够快速、流畅地访问和使用它们。为了确保应用程序在高负载下仍能够正常运行,压力测试工具变得至关重要。在国内&a…

13.56M刷卡芯片522/523智能门锁超低功耗读卡方案

传统的机械锁具已走过了近百年历史,其功能及性能几乎已诠释到了极致。但仍不能满足现代人们对锁具有高可靠性、高安全性、信息化、智能化的要求,自50年代末,半导体技术问世后,人们便将该技术应用于锁具上,衍生出了形形…

华为云云耀云服务器L实例评测|在云耀云服务器L实例上无人直播,增加睡后收入

购买云耀云服务器 L 实例 华为云耀云服务器 L 实例是一款轻量级云服务器,开通选择实例即可立刻使用,不需要用户再对服务器进行基础配置。新用户还有专享优惠,2 核心 2G 内存 3M 带宽的服务器只要 89 元/年,可以点击华为云云耀云服…

常见的数据结构及应用

文章目录 前言数据结构介绍数组链表队列和栈树堆 总结 前言 数据结构是计算机存储、组织数据的方式。在工作中,我们通常会直接使用已经封装好的集合API,这样可以更高效地完成任务。但是作为一名程序员,掌握数据结构是非常重要的,…

【EI会议征稿】2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)

2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024) 2024 4th International Conference on Artificial Intelligence, Automation and High Performance Computing 2024第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)将于202…

搭建伪分布式Hadoop

文章目录 一、Hadoop部署模式(一)独立模式(二)伪分布式模式(三)完全分布式模式 二、搭建伪分布式Hadoop(一)登录虚拟机(二)上传安装包(三&#xf…

通过 Splashtop Enterprise 实现更高的效率

远程工作的出现不仅重塑了我们的传统工作模式,而且还使远程访问和支持解决方案在确保运营连续性和效率方面的关键作用浮出水面。 Splashtop Enterprise 已帮助企业实现远程工作和 IT 远程支持的无缝远程访问,并已被证明是许多组织不可或缺的工具。 在本…

综合电商商城小程序的作用是什么

综合电商顾名思义就是什么商品都卖,涵盖的品牌、种类、数量非常庞大,线下门店规模也相当可以,在同城场景中有较高的需求度。 然而在实际经营中,综合商品经营商家还是会面临一些痛点。 通过【雨科】平台搭建综合电商商城小程序全面…

NProgress进度条的使用

1 下载nprogress npm install --save nprogress 2.然后在 router/index.js里写上以下几行代码 import NProgress from "nprogress"; // 导入 nprogress模块import "nprogress/nprogress.css"; // 导入样式,否则看不到效果NProgress.configure(…

如何规避企业内文件流转泄密风险?

由于企业内部业务流程复杂,研发、生产、销售等跨部门的不同人员有时需要交互数据,而不同的文件涉密程度不同,需要由不同涉密等级的人员进行处理。 为保障核心资料的安全,文件阅读权限管控系统为用户提供了灵活的内部文件流转功能&…

CleanMyMac X4.14.3中文版:时尚元素与高效清理的完美结合!

嗨!小仙女们~🌸今天小编给大家介绍一款超级时尚的Mac清理神器——CleanMyMac X4.14.3中文版! 想要让你的电脑焕然一新,提升操作速度,还能拥有时尚元素的体验,那就赶紧来看看吧! CleanMyMac X 2…

重生奇迹mu获取宠物的方法

现在很多游戏都有宠物,因为宠物的加入让游戏更加有趣,玩家可以带着宠物玩游戏,宠物还可以做出呆萌的鬼脸,让玩家感受到游戏的魅力,重生奇迹MU游戏也是有各种宠物。 在重生奇迹MU之中有各种宠物,这些宠物非…

CatBoost算法模型实现贷款违约预测

前言 此篇文章为整个Boost(提升方法)集成算法模型的终章,前几篇文章依次结合详细项目案例讲解了AdaBoost、GBDT、XGBoost、LighGBM共四个常用的集成算法模型,每一篇文章都包含实战项目以及可运行代码。仅通过看一遍文章不去实践是很难掌握集成算法模型的…

Com 信号值的超时替换

目录 1. 功能简介2. 如何配置 1. 功能简介 Com 模块提供了针对信号的超时替换处理,如下图所示。提供两种方式 REPLACESUBSTITUTE REPLACE: 信号值由ComSigInitValue 进行替换 SUBSTITUE: 信号值由ComTimeoutSubstitutionValue 进行替换。 2. 如何配置 点击 Vie…

企业做一个VR全景,拍摄制作的费用有哪些?

自互联网时代以来,抖音、快手、微信、微博、小红书等渠道成为了客户新的沟通方式,越来越多的企业客户在网上沟通、在网上了解产品、在网上考察公司情况,为了让客户在网上看得清、看得懂,VR赋能企业线上沉浸式营销,VR全…

基于springboot实现大学生社团活动平台项目【项目源码+论文说明】计算机毕业设计

摘要​​​​​​​ 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,网络管理工作的重要性已逐渐被人们所认识,科学化的管理&a…

vscode配置c++和opencv环境

因为想要用c刷题,但是之前的vs被重装的时候删除了,DEVc实在是不好看的界面,于是就想起了之前写html的vscode,没想到配置环境花了一整天,还总是报错,也许是电脑配置不一样,所以就出了问题吧&…

Knowledge and Process .xls

Knowledge and Process .xls 10知识领域 5项目管理过程组

滚珠丝杆的工作原理是什么?

滚珠螺杆的工作原理是利用滚珠在螺杆与螺母之间做运动,将传统螺杆的滑动接触转换为滚动接触,再将螺帽内的滚珠回转运动转为直线运动。它主要由①丝杆②螺母③滚珠 三个主要部分组成。 丝杆和螺母的表面存在螺旋线,当丝杆旋转时,螺…

【C#】【winform】Microsoft Visual Studio Installer Project 打包应用程序全部过程

提示:只针对扩展包来完成打包的工作过程。 文章目录 前言一、Microsoft Visual Studio Installer Project 是什么?二、安装1.安装Microsoft Visual Studio Installer Project 三、安开始打包1.添加setup1.在解决方案上面右键,添加-新建项目2.…