目录

2023-07-13-Python入门基础知识总结赶紧收藏

Python入门基础知识总结(赶紧收藏)

一:简介:

Python 是一种 解释型面向对象 的语言

Python的语法和动态类型,以及解释性语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言

二:Python基础语法

2.1.字面量

字面量: 在代码中, 被写下来 的的 固定的值 ,称之为字面量

Python中有6种常用的值(数据)的类型

https://i-blog.csdnimg.cn/blog_migrate/fb4569b24547f974019d6ec9d714c54f.png

**注意:type()**语句可以查看变量存储的数据类型

2.2.注释

单行注释 :以 #开头 ,#右边 的所有文字当作说明,而不是真正要执行的程序,起辅助说明作用

https://i-blog.csdnimg.cn/blog_migrate/b54c7e3fc65fa0a004f9d9db8a2de6f4.png

注意: #号和注释内容一般建议以一个空格隔开

多行注释:一对三个双引号 引起来

https://i-blog.csdnimg.cn/blog_migrate/a436603561d03627d53b00323757a913.png

2.3.数据类型转换

语句(函数)说明
int(x)将x转换为一个整数
float(x)将x转换为一个浮点数
str(x)将对象 x 转换为字符串

2.4.标识符

标识符: 是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名

标识符命名 中,只允许出现: 英文 中文 数字 下划线(_) 这四类元素。

注意:不推荐 使用中文, 数字不可以开头 ,且不可使用关键字

2.5.运算符

算术(数学)运算符:

运算符描述实例
+两个对象相加 a + b 输出结果 30
-得到负数或是一个数减去另一个数 a - b 输出结果 -10
*两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/b / a 输出结果 2
//取整除返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
%取余返回除法的余数 b % a 输出结果 0
**指数a**b 为10的20次方, 输出结果 100000000000000000000

复合赋值运算符:

运算符描述实例
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a

2.6.字符串

2.6.1.字符串的三种定义方式

单引号 定义法: 双引号 定义法: 三引号 定义法:

https://i-blog.csdnimg.cn/blog_migrate/5a76ac12aec41f7c59dbea95e6a548e8.png

其中,单引号定义法,可以内含双引号; 双引号定义法,可以内含单引号 ;并且可以使用**转义字符(\)**来将引号解除效用,变成普通字符串

2.6.2.字符串拼接

https://i-blog.csdnimg.cn/blog_migrate/cb644763793b16edb796647118cb3e84.png

**注意:**字符串无法和非字符串变量进行拼接

https://i-blog.csdnimg.cn/blog_migrate/aa57ee44fb567d36d36288aab6de05ab.png

默认print语句输出内容会自动换行,在print语句中, 加上 end=‘’ 即可输出不换行了

2.6.3.字符串格式化

我们可以通过如下语法,完成 字符串和变量的快速拼接

格式符号转化
%s将内容转换成字符串,放入占位位置
%d将内容转换成整数,放入占位位置
%f将内容转换成浮点型,放入占位位置

如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位

https://i-blog.csdnimg.cn/blog_migrate/d71d4a7a530b2a276dda0a1f85e849d7.png

其中, % 表示占位符, 且在无需使用变量进行数据存储的时候,可以直接 格式化表达式(变量的位置放入表达式) ,简化代码

2.6.4.格式化的精度控制

我们可以使用辅助符号" m.n “来控制数据的 宽度和精度

m,控制宽度,要求是数字,如果设置的宽度小于数字自身,则不生效

.n,控制小数点精度,要求是数字,会进行 小数的四舍五入

示例: %5d:表示将整数的宽度控制在5位,如数字11,就会变成:[空格][空格][空格]11,用三个空格补足宽度。

%5.2f:表示将宽度控制为5,将小数点精度设置为2 。 小数点和小数部分也算入宽度计算 。如,对11.345设置了%7.2f 后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为 .35

%.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35

2.6.5.字符串快速格式化

通过语法:**f"内容{变量}”**的格式来快速格式化

https://i-blog.csdnimg.cn/blog_migrate/4e6dc1b298aaa34972b016dd8e454454.png

注意:这种写法 不做精度控制, 不理会类型

2.7.数据输入

使用**input()**语句可以从键盘获取输入

https://i-blog.csdnimg.cn/blog_migrate/874c625cf042daaa2e295fff5d09d633.png

注意: 无论键盘输入什么类型的数据,获取到的数据永远都是 字符串类型

三:python判断语句

3.1.if语句的基本格式

https://i-blog.csdnimg.cn/blog_migrate/dceae3bba3627217753b44529ce2fb6b.png

归属于if判断的代码语句块,需 在前方填充4个空格缩进

Python通过缩进判断代码块的归属关系。

3.2.if elif else语句

https://i-blog.csdnimg.cn/blog_migrate/7531f13c0ff6adde359839d09e9b3e60.png

四:python循环语句

4.1.while循环

https://i-blog.csdnimg.cn/blog_migrate/d2a5e2373488c9fabb0219803ddd7da9.png

4.2.for循环

https://i-blog.csdnimg.cn/blog_migrate/88caeb2c9ff68c26ecf7864effd0e0e8.png

4.3.range语句

用于获得一个数字序列

语法1:range(num)

                    从0开始,到num结束(不含num本身)

语法2:range(num1, num2)

                    从0开始,到num结束(不含num本身)

语法3:range(num1, num2, step)

                    从0开始,到num结束(不含num本身)

https://i-blog.csdnimg.cn/blog_migrate/599717c406649e5c73994d50c3bc6bf2.png

五:Python函数

函数:是组织好的,可重复使用的,用来实现特定功能的代码段

函数的定义:

https://i-blog.csdnimg.cn/blog_migrate/39eba33cdce89f29d4b82a17a0a5567f.png

注意: 如果函数没有使用return语句返回数据,会返回None这个字面量;在if判断中, None等同于False ;定义变量,但暂时不需要变量有具体值,可以用None来代替

使用 global关键字 可以 在函数内部声明变量为全局变量

https://i-blog.csdnimg.cn/blog_migrate/f238d5aa380774740656754044a4ac41.png

六:Python数据容器

一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素。 每一个元素,可以是任意类型的数据

6.1.list(列表)

基本语法:

https://i-blog.csdnimg.cn/blog_migrate/cd2caadde91c29ed5b7318be8b08c32c.png

列表的方法:

编号使用方式作用
1列表.append(元素)向列表的尾部追加一个元素
2列表.extend(容器)将数据容器的内容(无结构)依次取出,追加到列表尾部
3列表.insert(下标, 元素)在指定下标处,插入指定的元素
4del 列表[下标]删除列表指定下标元素
5列表.pop(下标)删除列表指定下标元素(能得到返回值)
6列表.remove(元素)从前向后,删除此元素第一个匹配项
7列表.clear()清空列表
8列表.count(元素)统计此元素在列表中出现的次数
9列表.index(元素)查找指定元素在列表的下标 找不到报错ValueError
10len(列表)统计容器内有多少元素

列表特点:

https://i-blog.csdnimg.cn/blog_migrate/4e93217f58e0a482f9698c6d5c7cf598.png

6.2.tuple(元组)

基本语法:

https://i-blog.csdnimg.cn/blog_migrate/d40e71c03f69ef457c957d6fd0a52e06.png

https://i-blog.csdnimg.cn/blog_migrate/52c30223d55fdc59b43a2d547c003f64.png

注意: 元组只有一个数据,这个数据后面要添加逗号

元组的方法:

编号方法作用
1index()查找某个数据,如果数据存在返回对应的下标,否则报错
2count()统计某个数据在当前元组出现的次数
3len(元组)统计元组内的元素个数

元组特点:

https://i-blog.csdnimg.cn/blog_migrate/1f06448d5a93132bfe81811edeb5d3ea.png

6.3.str(字符串)

字符串的方法:

编号操作说明
1字符串[下标]根据下标索引取出特定位置字符
2字符串.index(字符串)查找给定字符的第一个匹配项的下标
3字符串.replace(字符串1, 字符串2)将字符串内的全部字符串1,替换为字符串2 不会修改原字符串,而是得到一个新的
4字符串.split(字符串)按照给定字符串,对字符串进行分隔 不会修改原字符串,而是得到一个新的列表
5字符串.strip() 字符串.strip(字符串)移除首尾的空格和换行符 或指定字符串
6字符串.count(字符串)统计字符串内某字符串的出现次数
7len(字符串)统计字符串的字符个数

字符串特点:

字符串容器可以容纳的类型是单一的,只能是字符串类型。

字符串不可以修改,如果必须要修改,只能得到一个新的字符串,旧的字符串是无法修改

6.4.序列的切片

序列 是指: 内容连续、有序,可使用下标索引 的一类数据容器

列表、元组、字符串 ,均可以可以视为序列

**语法:**序列[起始下标:结束下标:步长]

表示从序列中,从指定位置开始,依次取出元素,到指定位置结束, 得到一个新序列

  • 起始下标 表示从何处开始,可以留空,留空视作从头开始
  • 结束下标 (不含)表示何处结束,可以留空,留空视作截取到结尾
  • 步长 表示,依次取元素的间隔
  • 步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)

https://i-blog.csdnimg.cn/blog_migrate/725e05c6c1328400ba9330cd3e4134a8.png

6.5.set(集合)

基本语法:

https://i-blog.csdnimg.cn/blog_migrate/b87c1d70e52f26568786a9ab1150869a.png

集合的方法:

编号操作说明
1集合.add(元素)集合内添加一个元素
2集合.remove(元素)移除集合内指定的元素
3集合.pop()从集合中随机删除一个元素并返回
4集合.clear()将集合清空
5集合1.difference(集合2)得到一个新集合,内含2个集合的差集 原有的2个集合内容不变
6集合1.difference_update(集合2)在集合1中,删除集合2中存在的元素 集合1被修改,集合2不变
7集合1.union(集合2)得到1个新集合,内含2个集合的全部元素 原有的2个集合内容不变
8len(集合)得到一个整数,记录了集合的元素数量

集合特点:

相较于列表、元组、字符串来说, 不支持元素的重复(自带去重功能)、并且内容无序

6.6.dict(字典)

字典定义

https://i-blog.csdnimg.cn/blog_migrate/7d51e66942935904a299184904111592.png

字典的常用操作:

编号操作说明
1字典[Key]获取指定Key对应的Value值
2字典[Key] = Value添加或更新键值对
3字典.pop(Key)取出Key对应的Value并在字典内删除此Key的键值对
4字典.clear()清空字典
5字典.keys()获取字典的全部Key,可用于for循环遍历字典
6len(字典)计算字典内的元素数量

字典特点:

  • 键值对的Key和Value可以是任意类型(Key不可为字典)
  • 字典内Key不允许重复,重复添加等同于覆盖原有数据
  • 字典不可用下标索引,而是通过Key检索Value

6.7.数据容器的通用操作

数据容器特点对比:

列表元组字符串集合字典
元素数量支持多个支持多个支持多个支持多个支持多个
元素类型任意任意仅字符任意Key:Value Key:除字典外任意类型 Value:任意类型
下标索引支持支持支持不支持不支持
重复元素支持支持支持不支持不支持
可修改性支持不支持不支持支持支持
数据有序
使用场景可修改、可重复的一批数据记录场景不可修改、可重复的一批数据记录场景一串字符的记录场景不可重复的数据记录场景以Key检索Value的数据记录场景

容器通用功能:

功能描述
通用for循环遍历容器(字典是遍历key)
max容器内最大元素
min()容器内最小元素
len()容器元素个数
list()转换为列表
tuple()转换为元组
str()转换为字符串
set()转换为集合
sorted(序列, [reverse=True])排序,reverse=True表示降序 得到一个排好序的列表

七:Python函数进阶

7.1.函数多返回值

https://i-blog.csdnimg.cn/blog_migrate/d6582ad4714aec74f1c1083ad838f9dd.png

按照返回值的顺序,写对应顺序的多个变量接收即可 变量之间用逗号隔开

7.2.函数多种传参方式

7.2.1.位置参数

调用函数时根据函数定义的 参数位置来传递参

https://i-blog.csdnimg.cn/blog_migrate/21d2fbc6a80201264c0ced30415aabd9.png

传递的参数和定义的参数的 顺序及个数 必须一致

7.2.2.关键字参数

函数调用时通过 “键=值” 形式传递参数

https://i-blog.csdnimg.cn/blog_migrate/778e76d93cca12683999c3b422578b97.png

7.2.3.缺省参数

缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)

https://i-blog.csdnimg.cn/blog_migrate/e0befd7a579ac5a4abce813001e282ae.png

函数调用时,如果为缺省参数传值则修改默认参数值, 否则使用这个默认值

7.2.4.不定长参数

不定长参数也叫可变参数. 用于不确定调用的时候会传递多少个参数(不传参也可以)的场景.

不定长参数的类型: ①位置传递 ②关键字传递

1.位置传递

https://i-blog.csdnimg.cn/blog_migrate/503c5192593a49f518754f792d0f9005.png

传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递

2.关键字传递

https://i-blog.csdnimg.cn/blog_migrate/61f2682c58d06221a837e8c197eacc13.png

参数是“键=值”形式的形式的情况下, 所有的“键=值”都会被kwargs接受, 同时会根据“键=值”组成字典.

7.2.5.函数作为参数传递

https://i-blog.csdnimg.cn/blog_migrate/e842683628419e6569e77c089b665c90.png

7.3.匿名函数

函数的定义中

  • def 关键字,可以定义带有名称的函数
  • lambda 关键字,可以定义匿名函数(无名称)

有名称的函数,可以基于名称重复使用。 无名称的匿名函数,只可临时使用一次

匿名函数定义语法:

https://i-blog.csdnimg.cn/blog_migrate/762ab5ea6466830d11c2def0efeb07b3.png

  • lambda 是关键字,表示定义匿名函数
  • 传入参数表示匿名函数的形式参数,如:x, y 表示接收2个形式参数
  • 函数体,就是函数的执行逻辑,要注意:只能写一行,无法写多行代码

https://i-blog.csdnimg.cn/blog_migrate/8608c4b5563736e42f2f4162783f6308.png

八:Python文件操作

8.1.文件的读取

mode 常用的三种基础访问模式:

模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。 如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。 如果该文件不存在,创建新文件进行写入。
操作功能
文件对象 = open(file, mode, encoding)打开文件获得文件对象
文件对象.read(num)读取指定长度字节 不指定num读取文件全部
文件对象.readline()读取一行
文件对象.readlines()读取全部行,得到列表
for line in 文件对象for循环文件行,一次循环得到一行数据
文件对象.close()关闭文件对象
with open() as f通过with open语法打开文件,可以自动关闭

8.2.文件的写入

https://i-blog.csdnimg.cn/blog_migrate/780d90a151abaf65d98bc89fb515e864.png

  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
  • 当调用flush的时候,内容会真正写入文件
  • 这样做会频繁的操作硬盘,导致效率下降

九:Python异常、模块与包

9.1.异常的捕获

在可能发生异常的地方,进行捕获。当异常出现的时候,提供解决方式,而不是任由其导致程序无法运行。

https://i-blog.csdnimg.cn/blog_migrate/c93cf81b5cdc969ecf0f0e5cec8d07ff.png

异常的种类多种多样,如果想要不管什么类型的异常都能捕获到,那么使用: except Exception as e:

9.2.Python模块

模块(Module),是一个 Python 文件,以 .py 结尾. 模块能定义函数,类和变量,模块里也能包含可执行的代码

模块的导入方式:

https://i-blog.csdnimg.cn/blog_migrate/6904acbd0c6fc6bc718ee5c0c173fca9.png

常用的组合形式如:

  • import 模块名
  • from 模块名 import 类、变量、方法等
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名

自定义模块:

每个Python文件都可以作为一个模块, 模块的名字就是文件的名字

在实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果, 这个开发人员会自行在py文件中添加一些测试信息,但是在模块导入的时候都会自动执行test函数的调用

解决方案:

https://i-blog.csdnimg.cn/blog_migrate/b393765787bbfe609c17ec434dc37639.png

如果一个模块文件中有**_ _all_ _**变量,当使用from xxx import *导入时,只能导入这个列表中的元素

https://i-blog.csdnimg.cn/blog_migrate/819cbf084f7cd002b032748f33aa7d88.png

9.3.Python包

从物理上看,包就是一个文件夹,在该文件夹下自动创建了一个 _ init _.py 文件,该文件夹可用于包含多个模块文件 从逻辑上看,包的本质依然是模块

https://i-blog.csdnimg.cn/blog_migrate/ba44af1fe3a5853496d6f4c8bc2dc511.png

当我们的模块文件越来越多时,包可以帮助我们管理这些模块, 包的作用就是包含多个模块,但包的本质依然是模块

导入包:

1. import 包名.模块名 调用: 包名.模块名.目标

2. from 包名 import * 必须在__init__.py文件中添加__all__ = [],控制允许导入的模块列表

十:面向对象

10.1.成员方法

https://i-blog.csdnimg.cn/blog_migrate/a0a078de8f2a1b6ea4b4ecd5d92f96f1.png

在Python中,如果 将函数定义为class(类)的成员 ,那么函数会称之为: 方法

https://i-blog.csdnimg.cn/blog_migrate/c21b086aa4ef80cfe282cd2b8708f2b2.png

方法和函数功能一样, 有传入参数,有返回值,只是方法的使用格式不同:

https://i-blog.csdnimg.cn/blog_migrate/6a41fbe7e691a729727d25020f25321f.png

在类中定义成员方法和定义函数基本一致,但仍有细微区别:

https://i-blog.csdnimg.cn/blog_migrate/bfc051aef3bfb0f973ea24c561b8cf09.png

可以看到,在方法定义的参数列表中,有一个: self关键字 ,它是成员方法定义的时候,必须填写的, 但是传参的时候可以忽略它

  • 它用来表示类对象自身的意思
  • 当我们使用类对象调用方法的是,self会自动被python传入
  • 在方法内部,想要访问类的成员变量,必须使用self

10.2.构造方法

基于类创建对象的语法:

https://i-blog.csdnimg.cn/blog_migrate/eba22e421d1a5328fe879568b8bc47b4.png

Python类可以使用: _ init _() 方法,称之为构造方法

在创建类对象(构造类)的时候,会自动执行,并将传入参数自动传递给__init__方法使用

https://i-blog.csdnimg.cn/blog_migrate/681be819ac2dc65a817e4ba17bf52b1c.png

10.3.封装

面向对象编程,是基于模板(类)去创建实体(对象),使用对象完成功能开发

面向对象包含3大主要特性:封装 继承 多态

将现实世界事物在类中描述为属性和方法,即为 封装

https://i-blog.csdnimg.cn/blog_migrate/9f9b553599478648e31e60d3aaee44f1.png

现实事物有部分属性和行为是不公开对使用者开放的。同样在类中描述属性和方法的时候也需要达到这个要求,就需要定义 私有成员

成员变量和成员方法的命名均以 _ _ 作为开头即可

https://i-blog.csdnimg.cn/blog_migrate/f6a7fc36749f89ce307efcc15879266c.png

私有成员无法被类对象使用,但是可以被其它的成员使用。

https://i-blog.csdnimg.cn/blog_migrate/5e9e905cf9ada6babbf9aa41d49aae86.png

10.4.继承

继承:将从父类那里继承(复制)来成员变量和成员方法(不含私有)

单继承:

https://i-blog.csdnimg.cn/blog_migrate/7c97aaaf46c2b5b48452ae6cbc35e54b.png

多继承:

https://i-blog.csdnimg.cn/blog_migrate/bf6e0470411457600a72ccf5ae6b628e.png

多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级

pass是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思

复写:

子类继承父类的成员属性和成员方法后,如果对其“不满意”,那么可以进行复写。即在子类中重新定义同名的属性或方法即可

https://i-blog.csdnimg.cn/blog_migrate/725e50262d969c9f22b72191d8019dd6.png

一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员 如果需要使用被复写的父类的成员,需要特殊的调用方式:

https://i-blog.csdnimg.cn/blog_migrate/2f458f15455802e7bea49b8713aac8cf.png https://i-blog.csdnimg.cn/blog_migrate/e0856d696353aee41ddac25226e398e3.png

注意: 只能在子类内调用父类的同名成员,子类的类对象直接调用会调用子类复写的成员

10.5.多态

多态:指的是完成某个行为时,使用不同的对象会得到不同的状态,多态常作用在继承关系上

https://i-blog.csdnimg.cn/blog_migrate/207beeae955d8d68a06e279ec8baa93d.png

抽象类(接口): 含有抽象方法的类称之为抽象类

抽象方法:方法体是空实现的(pass)称之为抽象方法

抽象类多用于做顶层设计(设计标准),以便子类做具体实现,要求子类必须复写(实现)父类的一些方法

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要 全套《 网络安全入门+进阶学习资源包 》 ,需要 点击下方链接 即可前往获取

读者福利 | (安全链接,放心点击)

https://img-blog.csdnimg.cn/img_convert/968eb8cf7131d9022410c04079f21a25.png

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要 先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

https://i-blog.csdnimg.cn/direct/73381587b71a4fcca460e6f3249da272.webp

https://i-blog.csdnimg.cn/direct/c6e4885811d84247a93d6bcf240fd2c0.webp

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢 晦涩的文字 ,我也为大家准备了视频教程,其中一共有 21个章节 ,每个章节都是 当前板块的精华浓缩。

(全套教程文末领取哈)

https://i-blog.csdnimg.cn/direct/356c31e97b9448ac9a030276befeb8ce.webp

https://i-blog.csdnimg.cn/direct/f86928c4051649c380cab368ad9f54df.webp

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的 SRC技术文籍&黑客技术 也有收录

SRC技术文籍:

https://i-blog.csdnimg.cn/direct/24339152d1874ccfb395f44bdecc2d83.webp

黑客资料由于是敏感资源,这里不能直接展示哦!

(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于 HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

https://i-blog.csdnimg.cn/direct/9124e6befe844cf39ade6c832e5cea63.webp

👉5.黑客必读书单👈

https://i-blog.csdnimg.cn/direct/c8c8c5c516344f2d8177b503d2433c94.webp

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始 思考找工作 的事情了,而工作绕不开的就是 真题和面试题。

https://i-blog.csdnimg.cn/direct/0c951f8196954fff816621fdb7557dd8.webp

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

读者福利 | (安全链接,放心点击)

https://img-blog.csdnimg.cn/img_convert/968eb8cf7131d9022410c04079f21a25.png

68747470733a2f2f626c6f67:2e6373646e2e6e65742f507974686f6e38343331303336362f:61727469636c652f64657461696c732f313331373034323532