python3:基础语法、及6种基本数据类型、找到字典的下标 index、获取list中指定元素的位置索引

news2024/12/24 3:17:01

基础语法

源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串

Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的

标识符

第一个字符必须是字母表中字母或下划线 _

标识符的其他的部分字母、数字和下划线组成。

标识符对大小写敏感

注释

# 第一个注释
# 第二个注释

'''
第三注释
第四注释
'''


"""
第五注释
第六注释
"""
print("Hello, Python!")

行与缩进

缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数

如下:最后一行语句缩进数的空格数不一致,会导致运行错误:,如果使用编译器应该会提示的

if True:
    print("Answer")
    print("True")
else:
    print("Answer")
 print("False")  # 缩进不一致,会导致运行错误

空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

print 输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""

end="xxx",表名以xxx代替换行符

# 换行输出
print(x)
print(y)

print('---------')
# 不换行输出
print(x, end=" ")
print(y, end=" ")
print("xxx")

输出

a
b
---------
a b xxx

其还支持参数格式化,与 C 语言的 printf 类似,如下

str = "the length of (%s) is %d" % ('?ABC!', len('?ABC!'))
print(str)

pi = 3.141592653
print('%10.3f' % pi)  # 字段宽10,精度3
print("pi = %.*f" % (3, pi))  # 用*从后面的元组中读取字段宽度或精度
print('%010.3f' % pi)  # 用0填充空白
print('%-10.3f' % pi)  # 左对齐
print('%+f' % pi)  # 显示正负号

输出

the length of (?ABC!) is 5
     3.142
pi = 3.142
000003.142
3.142     
+3.141593

python字符串格式化符号:
在这里插入图片描述

input输入

input() 函数的参数只能为单个字符串input() 返回一个字符串,对字符串使用 split(" ") 可对其按空格切分。
如下代码所示

#输入三角形的三边长
a,b,c = (input("请输入三角形三边的长:").split())
a= int(a)
b= int(b)
c= int(c)

#计算三角形的半周长p
p=(a+b+c)/2

#计算三角形的面积s
s=(p*(p-a)*(p-b)*(p-c))**0.5

#输出三角形的面积
print("三角形面积为:",format(s,'.2f'))

import 与 from…import

** 用 import 或者 from…import 来导入相应的模块**

  • 整个模块(somemodule)导入,格式为: import somemodule
  • 从某个模块中导入某个函数,格式为: from somemodule import somefunction
  • 某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
  • 某个模块中的全部函数导入,格式为: from somemodule import *

python3的6种基本数据类型

为变量赋值

Python允许同时为多个变量赋值,如下

a = b = c = 1
print("=========")
print(a)
print(b)
print(c)
print("=========")

a, b, c = 1, 2, "runoob"
print(a)
print(b)
print(c)

输出

=========
1
1
1
=========
1
2
runoob

不可变数据(3 个)

1、Number(数字):int、float、bool、complex(复数)

只有一种整数类型 int,表示为长整型

Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True

print(issubclass(bool, int))
print(True == 1)
print(False == 0)
print(True + 1)
print(False + 1)
print(int(True))
print(int(False))

输出

True
True
True
2
1
1
0

2、String(字符串)

字符串用单引号 ’ 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符,注意:

  1. 反斜杠可以用来转义,使用r可以让反斜杠不发生转义
  2. 字符串可以用+运算符连接在一起,用*运算符重复
  3. Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始
  4. Python中的字符串不能改变

字符串的截取的语法格式

变量[头下标:尾下标]

索引值以 0 为开始值,-1 为从末尾的开始位置

str = '123456'
print (str)          # 输出字符串
print (str[0:-1])    # 输出第一个到倒数第二个的所有字符
print (str[0])       # 输出字符串第一个字符
print (str[2:5])     # 输出从第三个开始到第五个的字符
print (str[2:])      # 输出从第三个开始的后的所有字符
print (str * 2)      # 输出字符串两次,也可以写成 print (2 * str)
print (str + "TEST") # 连接字符串
print('123\n456')   # 换行
print(r'123\n456')  # 不换行

输出

123456
12345
1
345
3456
123456123456
123456TEST
123
456
123\n456

3、Tuple(元组)

Python 的元组与列表类似,不同之处在于元组的元素不能修改

元组使用小括号 ( ),列表使用方括号 [ ]

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

tup = (1, 2, "xxx", 4, 5)
print(type(tup))
# 创建空元组
tup1 = ()

输出

<class 'tuple'>

元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用

tup1 = (50)
print(type(tup1))

tup2 = (50,)
print(type(tup2))

输出

<class 'int'>
<class 'tuple'>

元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等

在这里插入图片描述

访问修改删除元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

tup1 = ('abc', '?!', 1997, 2000)
# 访问
print("tup1[0]: ", tup1[0])
# 修改:元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
'''
# 以下修改元组元素操作是非法的。
tup1[0] = "?abc!"
'''
# 正确修改
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2
print(tup3)
del tup3
print("删除后的元组 tup3 : ")
# 现在打印会抛出异常
print(tup3)

输出

tup1[0]:  abc
('abc', '?!', 1997, 2000, 'abc', 'xyz')
删除后的元组 tup3 : 
Traceback (most recent call last):
  File "D:\testCode\pythonCodeTest\test\testGrammar.py", line 21, in <module>
    print(tup3)
          ^^^^
NameError: name 'tup3' is not defined. Did you mean: 'tup1'?

可变数据(3 个)

4、List(列表)

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可,如下

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']

与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。
在这里插入图片描述

索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。
在这里插入图片描述

通过索引列表可以进行截取、组合等操作

使用下标索引来访问列表中的值,同样你也可以使用方括号 [] 的形式截取字符,如下所示:
在这里插入图片描述

访问更新删除列表

访问
list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print(list[0])
print(list[-2])
print(list[0:4])
print(list[1:-2])

输出

red
white
['red', 'green', 'blue', 'yellow']
['green', 'blue', 'yellow']
更新
list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
list[0] = 1
print(list)
list.append(7)
print(list)

输出

[1, 'green', 'blue', 'yellow', 'white', 'black']
[1, 'green', 'blue', 'yellow', 'white', 'black', 7]
删除
list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
del list[0]
print(list)

输出

['green', 'blue', 'yellow', 'white', 'black']
比较

列表比较需要引入 operator 模块的 eq 方法

import operator

a = [1, 2]
b = [2, 3]
c = [2, 3]
print("operator.eq(a,b): ", operator.eq(a, b))
print("operator.eq(c,b): ", operator.eq(c, b))

输出

operator.eq(a,b):  False
operator.eq(c,b):  True
其他

在这里插入图片描述

5、Set(集合)

集合(set)是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合

创建格式

parame = {value01,value02,...}
# 或者
set(value)
>>> 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'}

添加元素

add

将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。

s.add( x )

使用

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
update

可以添加元素,且参数可以是列表,元组,字典等,语法格式如下,x 可以有多个,用逗号分开。

s.update( 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'}

移除元素

remove

将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。

s.remove( x )

使用

>>> 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'
discard

如果元素不存在,不会发生错误。格式如下所示:

s.discard( x )

使用

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook")  # 不存在不会发生错误
>>> print(thisset)
{'Taobao', 'Google', 'Runoob'}
pop:随机删除

设置随机删除集合中的一个元素,语法格式如下:

s.pop() 

使用

thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()
print(x)
'''
Runoob
'''

多次执行测试结果都不一样。

set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

计算集合元素个数

语法格式如下:计算集合 s 元素个数

len(s)

使用

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> len(thisset)
3

清空集合

语法格式如下:清空集合 s。

s.clear()

使用

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()

判断元素是否在集合中存在

语法格式如下:判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False

x in s

使用

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> "Runoob" in thisset
True
>>> "Facebook" in thisset
False

其他方法

在这里插入图片描述

6、Dictionary(字典)

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。

d = {key1 : value1, key2 : value2, key3 : value3 }

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字

# 使用大括号 {} 来创建空字典
emptyDict = {}
'''
使用内建函数 dict() 创建字典:
emptyDict = dict()
''' 
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:", len(emptyDict))
# 查看类型
print(type(emptyDict))

输出结果:

{}
Length: 0
<class 'dict'>

访问字典里的值

tinydict = {'Name': '?abc!', 'Age': 7, 'Class': 'First'}
 
print ("tinydict['Name']: ", tinydict['Name'])
print ("tinydict['Age']: ", tinydict['Age'])

实例输出结果

tinydict['Name']:  ?abc!
tinydict['Age']:  7

如果用字典里没有的键访问数据,会输出错误如下

tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
print ("tinydict['Alice']: ", tinydict['Alice'])
'''
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    print ("tinydict['Alice']: ", tinydict['Alice'])
KeyError: 'Alice'
'''

修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对

tinydict = {'Name': 'abc', 'Age': 7, 'Class': 'First'}
 
tinydict['Age'] = 8               # 更新 Age
tinydict['School'] = "?abc!"  # 添加信息
 
 
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])

实例输出结果

tinydict['Age']:  8
tinydict['School']:  ?abc!

删除字典元素

能删单一的元素也能清空字典,清空只需一项操作。

显式删除一个字典用del命令,如下实例:

tinydict = {'Name': 'abc', 'Age': 7, 'Class': 'First'}
 
del tinydict['Name'] # 删除键 'Name'
tinydict.clear()     # 清空字典
del tinydict         # 删除字典
 
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])

实例输出结果:出现异常是因为:用执行 del 操作后字典不再存在

Traceback (most recent call last):
  File "/runoob-test/test.py", line 9, in <module>
    print ("tinydict['Age']: ", tinydict['Age'])
NameError: name 'tinydict' is not defined

获取字典内容(get)

dictget("key", 0)方法不要添加default=
正确的使用

d = {'2023-01-20 00:00:00': 123}
print(d.get('2023-01-2 00:00:00', 12))

如果像下面这样使用,便会报错

d = {'2023-01-20 00:00:00': 123}
print(d.get('2023-01-2 00:00:00', default=12))

报错结果

Traceback (most recent call last):
  File "xxx.py", line 69, in <module>
    print(d.get('2023-01-2 00:00:00', default=12))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: dict.get() takes no keyword arguments

特点

  1. 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
  2. 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行

内置函数

在这里插入图片描述

内置方法

在这里插入图片描述

type()函数和isinstance

二者都是:查询变量所指对象类型

type()

a, b, c, d = 20, 5.5, True, 4+3j
print(type(a), type(b), type(c), type(d))

输出

<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

isinstance

a = 111
print(isinstance(a, int))

输出

True

区别

type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。

class A:
    pass

class B(A):
    pass

print(isinstance(A(), A))
print(type(A()) == A)
print(isinstance(B(), A))
print(type(B()) == A)

输出

True
True
True
False

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

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

相关文章

Java---微服务---微服务保护Sentinel

微服务保护Sentinel1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题1.1.2.超时处理1.1.3.仓壁模式1.1.4.断路器1.1.5.限流1.1.6.总结1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel1.4.微服务整合Sentinel2.流量控制2.1.簇点链路2.1.快…

【自然语言处理】基于sklearn-crfsuite进行命名实体识别

基于sklearn-crfsuite进行命名实体识别0. 条件随机场1. 训练数据2. 特征提取3. 训练一个CRF模型4. 评估5. 超参数优化6. 检查参数空间7. 检查在测试数据上的最优估计器8.检查分类器学到了什么东西9.检查模型权重10. 定制化11.在控制台中进行格式化参考资料本文中&#xff0c;针…

一种前端无源码定制化开发能力专利解读

背景 目前市面上一些web前端工程在打包发布之前都会进行代码混淆加密。代码混淆(Obfuscated code)是将计算机程序的代码&#xff0c;转换成一种功能上等价&#xff0c;但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码&#xff0c;也可以用于程序编译而成的中间代…

Leetcode刷题Day38-------------------动态规划

Leetcode刷题Day38-------------------动态规划 1. 理论基础 文章链接&#xff1a;https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html视频链接&#xff1a;https://www.bilibili.com/video/BV13Q4y197Wg题目链接&a…

GBASE荣获“2022证券基金行业信息技术应用创新联盟年度优秀成员奖

日前&#xff0c;证券基金行业信息技术应用创新联盟2022年度峰会于上海成功举办&#xff0c;在会上&#xff0c;GBASE南大通用作为联盟成员单位&#xff0c;积极相应联盟号召&#xff0c;有力支撑证券信创建设&#xff0c;荣获“2022证券基金行业信息技术应用创新联盟年度优秀成…

第一章 Arm 架构概述(2023新)

第一章 启发式 Arm 架构解读 第二章 CPU微架构 第三章 系统微架构 第四章 总线微架构 第五章 监控微架构 第六章 安全微架构 第七章 虚拟化微架构 第八章 Armv9-A 架构 第九章 Armv8-M 架构 第十章 Armv8-R 架构 第十一章 Cortex-A715 解读 第十二章 Cortex-X3 解读…

图片怎么转成PDF格式?介绍三种转换思路

PDF文件作为一类办公常见格式&#xff0c;很多场合都会使用到。有时我们需要将图片转成PDF格式以方便归纳整理。图片资料怎么转成PDF呢&#xff1f;给大家介绍几个手机和电脑都可以用的方式。希望对你有帮助。方法一、用文件自带的转换功能将图片转成PDF随意打开一个PDF文件后&…

Github每日精选(第94期):免费网页在线情况监控

Upptime Upptime 是开源的正常运行时间监控和状态页面&#xff0c;完全由 GitHub Actions、Issues 和 Pages 提供支持。 Upptime 是 [GitHub Actions] 的一个非常巧妙的用法。您基本上可以根据需要获得免费的可配置正常运行时间监视器。 github 地址在这里。 特点 利用 G…

CTPN的Python实现笔记一

文章目录一、疑难代码讲解1. 文本框左上角标注置信度(1) s str(round(i[-1] * 100, 2)) %(2) cv2.putText() 函数(3) cv2.line()函数2. 文本框进行扩展操作3. 文本框进行NMS操作(1) 非极大值抑制函数def nms(dets, thresh):a. order scores.argsort()[::-1]b. xx1 np.maxim…

[oeasy]python0068_控制序列_清屏_控制输出位置_2J

光标位置 回忆上次内容 上次了解了键盘演化的过程 ESC 从 组合键到 独立按键 ESC 的目的 是进入控制序列配置控制信息 控制信息 \033[y;xH 设置光标位置\033[2J 清屏 这到底怎么控制来着&#xff1f;&#xff1f;&#xff1f;&#x1f914;现在 系统里 这些行为 是谁来实现的…

【机器学习 - 6】:梯度下降法(第一篇)

文章目录梯度下降法的理解图解极值点和最值点梯度下降法的求导运算公式推导梯度下降法的实现梯度下降法的理解 梯度下降法不是一个机器学习算法&#xff0c;既不是在做监督学习&#xff0c;也不是在做非监督学习&#xff0c;是一种基于搜索的最优化方法。 作用&#xff1a;最小…

【2319. 判断矩阵是否是一个 X 矩阵】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 如果一个正方形矩阵满足下述 全部 条件&#xff0c;则称之为一个 X 矩阵 &#xff1a; 矩阵对角线上的所有元素都 不是 0 矩阵中所有其他元素都是 0 给你一个大小为 n x n 的二维整数数组 grid &a…

JVM虚拟机知识总结

什么是虚拟机&#xff1f;从字面意思上来看&#xff0c;顾名思义即使一台虚拟的计算机&#xff0c;用来执行虚拟的计算机指令&#xff0c;从大体上来看&#xff0c;虚拟机一般分为两种。一种是系统虚拟机&#xff0c;另外一种是程序虚拟机。系统虚拟机&#xff1a;代表为VMware…

微信小程序 java中医知识库百科科普

中管理员的主要功能有&#xff1a; 1.管理员输入账户登陆后台 2.个人中心&#xff1a;管理员修改密码和账户信息 3.用户管理&#xff1a;对注册的用户信息进行删除&#xff0c;查询&#xff0c;添加&#xff0c;修改 4.中医知识管理&#xff1a;对中医的知识信息进行添加&#…

什么是地址解析协议 (ARP)?

最近不想更文章了&#xff0c;药吃完了&#xff0c; 本文目录地址解析协议 &#xff08;ARP&#xff09; 含义ARP 是做什么的&#xff0c;它是如何工作的&#xff1f;地址解析协议与 DHCP 和 DNS 的关系是什么&#xff1f;它们有何不同&#xff1f;ARP 有哪些类型&#xff1f;1…

应急救护培训报名-因疫情原因,暂停开班?

应急救护培训报名背景和急救证书区别2023年一定要被培训项目报名渠道状态上海市红十字应急救护培训上海市医疗急救中心公众课程专业课程背景和急救证书区别 关于背景和急救证书区别&#xff0c;请参考&#xff0c;程序员的生命与急救 文章 2023年一定要被培训项目 由于疫情原…

Springboot+vue冷冻仓储进销存管理系统 java

端技术&#xff1a;nodejsvueelementui 前端&#xff1a;HTML5,CSS3、JavaScript、VUE 系统分为不同的层次&#xff1a;视图层&#xff08;vue页面&#xff09;&#xff0c;表现层&#xff08;控制器类&#xff09;&#xff0c;业务层&#xff08;接口类&#xff09;和持久层&a…

php宝塔搭建部署实战易优游戏竞技公司网站源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的易优游戏竞技公司网站源码&#xff0c;感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#xff…

SpringBoot或SpringCloud集成Nacos

一、创建一个项目首先创建一个空项目&#xff0c;然后引入Nacos的依赖&#xff0c;并选择正确的SpringBoot和Nacos版本&#xff0c;如果版本选择不对的话可能会启动失败&#xff0c;带来很大的问题<!--SpringBoot的版本--><parent><groupId>org.springframew…

详解axios(快速入门)

axios这一篇就够啦~axios1、axios的理解和使用1.1 axios概述1.2 axios特点1.3 axios常用语法1.4 难点语法的理解和使用2、axios源码分析2.1 源码目录结构2.2 源码分析axios 1、axios的理解和使用 1.1 axios概述 前端最流行的ajax请求库 react/vue官方都推荐使用axios 发ajax…