python基础举例

最近又重新开始学python,浅浅记录下学习到的东西(也方便自己回顾看)
缩进、空格对于python很重要,一定要注意!
以下代码是基于pycharm编写的。

01 输出

#注释
# 单行注释用# ,ctrl+/是单行注释的快捷键
# 多行注销,全部选中,按住ctrl+/
# 多行注释,在python是用'''或"""(但不是很推荐)
#输入输出 %占位符,后面跟的是变量的类型
# print 函数自带换行效果
name="张阳"
classinfo="新世纪中学一年三班"
age=17
print("我的名字是%s:来自%s,今年%d"%(name,classinfo,age ))  #%S表示字符型,%d表示整数型#基础输出语句
print("He said \"Let's go!\"") #\ means 转义符
print("He said \"Let\'s go!\"") #the same result as the 1st floor
print("Hello! \nHi!") #\n means 另起一行
print("hello!"+" hahaha")  #两个字符组合在一起输出
#对字符串求长度
s = "Hello world!"
print(len(s))#通过索引获取单个字符,数组是从0开始计数的
print(s[0])# 布尔类型
b1=True
b2=False
#空值类型
n=None
#type 函数  输出数据类型
print(type(s))
print(type(b1))
print(type(n))
# 举例
#BMI计算
user_weight =float(input("请输入您的体重(单位:kg):"))  #输入的是字符,所以需要转为float数
user_height =float(input("请输入您的身高(单位:m):"))
user_BMI=user_weight /(user_height ** 2)
print("您的BMI值为:"+str(user_BMI)) #需要转换成str字符类型,才可以输出

02 基础数值计算

import math
a=-1
b=-2
c=3
x1=(-b+math.sqrt( b**2 -4*a*c))/(2*a)
x2=(-b-math.sqrt( b**2 -4*a*c))/(2*a)
print(x1,x2)
#if-elif 的使用
#多分支,猜拳的小游戏
import random
person=int(input("请出拳:[0:石头,1:剪刀,2:布]"))
computer=random.randint(0,2)  #在0到2之间取随机整数
if person>2 or person <0 :print("请输入正确的数字!")
elif   (person==0 and computer ==1) or (person==1 and computer ==2) or (person==2 and computer ==0):win=1print("计算机输出为:%d" %computer )print("恭喜您,获胜!")
elif person==computer :win=0print("计算机输出为:%d" % computer)print("平局,再来一次吧!")
else :win=-1print("计算机输出为:%d" % computer)print("很遗憾,您输了!")
# 举例
#打印一个直角三角形
row=1
while row<=7:j=1while j<=row:print("*",end=" ") #这个end保证此print不换行,下面有个print()是为了有个换行j+=1print()row+=1#打印一个等腰三角形
height=int(input("请输入想要的等腰三角形的高:"))
standard=0
while standard< height:left=height-standardright=height+standardwhile left>=2:print(" ", end=" ")left-=1left = height - standardwhile left<=right :print("*",end=" ")left+=1print()standard+=1#for 循环,适合有限次的循环;适合遍历集合
tags="我是不是一个人"
for item in tags:  #从tags中取值,遍历进行输出   tags是字符串类型,本身就是一个字符类型的集合print(item)
#range 此函数可以用来生成一个数据集合列表
range(起始,结束,步长) 步长不可为0,默认步长为1
for data in range(1,101):  #起始数字,左边包含;结束数字,右边不包含print(data,end ="")if data % 10==0:print()

03 列表

# 在python, 序列就是一组按照顺序排列的值,即数据集合
# 有三种内置的序列类型:字符串、列表、元组
# 切片:可以根绝下标,获取序列对象的任意(部分)数据
name="peter"
print("姓名首字母变成大写%s"%name.capitalize() )  #首字母变大写# list: 列表,是一种有序的数据集合。
# 支持增删改查、数据项可以变化(内存地址不会改变)。
# 用[]表示列表,数据项之间用逗号来分割,数据项可以是任何类型的数据。支持索引和切片来进行操作shopping_list = []  #创建列表
shopping_list.append("键盘")  #添加字符串
shopping_list.append("键帽")
shopping_list.remove("键帽")  #移出
shopping_list.append("音响")
shopping_list.append("电竞椅")print(shopping_list)
print(len(shopping_list)) #输出长度
print(shopping_list[0]) #输出排在第一个位置的元素price =[799, 1024, 200, 800]
max_price = max(price)
min_price = min(price)
sorted_price = sorted(price)  #排序
print(max_price,min_price )
print(sorted_price)
li=[1,2,3,"您好",8,9,10]
print(type(li))
print(len(li))  #获取字符串的长度
print(li[0])   #输出第一个元素
print(li[1:])   #获取从第二个元素开始到最后的元素
print(li[: : -1])  #-1表示倒序输出(从右往左输出)
print(li *2)  #表示重复输出两次
li.append(["hello","goodbye"])   #末尾新加
li.insert(4,"这是我刚插入的数据")  #在第四个位置后,进行信息插入
print("追加之后1",li)
rsDate=list(range(10))   #强制转换成为list对象
li.extend(rsDate )  #扩展,批量增加
print("追加之后2",li)
li[0]="peter"  #对第一个元素进行修改
print("修改之后1",li)
del li[0]   #删除列表中的第一个元素
print("修改之后2",li)
del li[1:3]  #批量删除,删除第二到第三的所有数据
print("修改之后3",li)
li.remove(0)  #移出为0的指定项,只能移除找到的第一个指定元素
print("修改之后4",li)
li.pop(5)  #移出指定位置的香,比如这里移出第六个项
print("修改之后5",li)
print(li.index(8))  #查找8所在的位置

04 元组/字典简单使用

# 元组用(),不可变,添加删除不可使用
# 元组,是一种不可变的序列,在创建后不可做任何的修改。
# 用()来创建元组,数据项用逗号来分割,可以是任何的类型。
# 当元组中只有一个元素是,要加上逗号,不然解释器会当做整形来处理
tupleA =()  #创建空元组
tupleA =("abcd",89,2.22,"marry",[11,22,33,44])  #对空元组进行赋值
print (tupleA)
#元组的查询
for item in tupleA :   #依旧可以遍历print(item, end=" ")
print()
print(tupleA [2])  #可以通过索引获得单个元素
print(tupleA [:: -1])   #反转
print(tupleA [:: -2])   #隔两个,取一次反转
tupleA [4][0] =2223  #可以对元组中的列表元素进行修改,这里是对列表的第一个元素进行修改,但是元组中非列表的其他元素就不可以修改
print(tupleA )#一个字典,k可以进行查询
# 字典,由键值对组成的集合,通常使用键来访问数据,支持对数据的添加、修改、删除
# 不是序列类型,没有下标的概念,是一个无需的键值组合。用{}来表示字典对象,每个键值对用逗号分离
# 键,必须是不可以变的类型。值可以是任意的类型。每个键是唯一的,如果出现重复的键,后者会覆盖前面的
slang_dict = {"巨星年代":"来了吗","卷王时代":"啥时候过去?"}  #创建了长度为2的词典
slang_dict["双减"] ="书本简单了,考试依旧难"
slang_dict["破防"] = "破了你的防御"
query=input("请输入你想要查询的流行语:")
if query in slang_dict : #判断查的词是否在字典中print("您查询的"+ query +"含义如下:")print(slang_dict [query])
else:print("当前本词典收录词条数为:"+ str(len(slang_dict ))+ "条。")# 字典再举例
dictA={}  #创建一个空字典
dictA ["name"]="扬不养"  #添加字典数据。key:name。value:扬不养
print(dictA )
dictA ["age"]=103
print(dictA )
dictB={"pro":"艺术","school":"家里蹲大学"}  #也可以在新建字典的时候,之间添加字典数据
print(dictB )
print(len(dictB ))   #以逗号分割为一项,故上面的dictB只有两项
print(dictA ["name"])  #取键值
dictA["name"]="王不枉"  #修改键对应的值
print(dictA )
print(dictA .keys())  #打印 所有的键
print(dictA .values())  #打印所有的值

05 函数使用

#定义函数
def calculate_sector_1(central_angle, radius):#接下来是一些定义函数的代码sector_area =central_angle /360 *3.14* radius **2print(f"此扇形面积为:{sector_area}")calculate_sector_1(160,30)def calculate_bmi (weight, height):bmi=float(weight)/float(height) **2if bmi<=18.5:label="偏瘦"elif bmi <=25 :label = "正常"elif bmi<=30:label = "偏胖"else:label = "肥胖"print("您的BMI分类为:"+ label)print("您的BMI为:"+ str(bmi))return bmicalculate_bmi(70,1.8)
#函数使用练习2
#定义一个学生类
#能够设置学生某科目的成绩
#能够打印出该学生的所有科目成绩class Student:def __init__(self, name, student_id):  #init这是固定格式self.name = nameself.student_id = student_idself.grades = {"语文": 0, "数学": 0, "英文": 0}def set_grade(self, course,grade):  #self是固定,必须有的if course in self.grades:self.grades[course]=gradedef print_grades(self):print(f"学生{self.name}(学号: {self.student_id})的成绩为:")for course in self.grades:print(f"{course}: {self.grades[course]}分")chen = Student("小陈","100663")
zeng = Student ("小曾","100633")
print(chen.name)
zeng.set_grade("数学",95)
zeng.set_grade("语文",94)
zeng.set_grade("英文",93)
print(zeng.grades )
zeng.print_grades()
# 函数使用练习3:可变函数
# 可变参数:当参数个数不确定时使用,比较灵活
# 计算累加和
# 可变参数*接收的是元组类型,**接收的是字典类型
def getComputer(* args) :print(args)result=0length=int(len(args))while length>0 :result=result+args[length-1]length-=1"""另一种求和方式for item in args:result+=item"""print(result)getComputer(1,2,3,4,5)# 关键字可变参数,用**来定义
# 在函数体内,参数关键字是一个字典类型,key是一个字符串
def keyFunc(**kwargs) :print(kwargs )
dictC={"name":"Pipi","age":32}
# keyFunc(dictC)   #这样是不可以的
keyFunc( **dictC)  #这样是可以的
keyFunc(name="peter",age=22)  # 这样是可以的,是以键值对的方式进行传递
# 函数练习使用4
# 写函数,接收n个数字,求这些参数数字的和;
def adder(*number):sum=0for item in number :sum+=itemreturn sum
print(adder(1,2,3,4,5,8))
# 写函数,找出传入列表或元组的奇数位对应的元素,并返回一个新的列表;
def process(con):listNew=[]index=1for i in con :if index %2 ==1:  #判断奇数位listNew.append(i)index+=1return listNew
print(process([1,2,3,4,4,5,6,7,8,9,10,11]) )
# 写函数,检查传入字典的每一个value的长度,如果大于2,那么保留前两个长度的内容,并将新内容返回给调用者。PS:字典中的value只能是字符串或列表
def dictD (dictparms):result={}for key, value in dictparms .items():  #返回的是字典的数据项if int(len(value)) >2:result[key]=value[:2]  #向字典去添加数据else:result[key]=valuereturn result
dictDD={"name":"bibi","age":"22","hobby":"baseball","saygoodbye":["no","hay","bye",5,6]}
# 注意上面的22需要加",因为不加就是int型,int不可以用len
print(dictD(dictDD ) )# 匿名函数,没有名字的函数,后面自带的表达式只有一个,只能实现简单的功能
# 语法结构: lambda 参数1、参数2、参数3:表达式
M=lambda x,y:x+y  #通过变量去调用匿名函数
print(M(22,26))

06 类的使用

# 面向对象编程 OOP (object oriented programming)
# 面向过程,是按照解决问题的步骤开始写的
# 类:是一组具有相同或相似属性、特征、行为的一系列对象的集合
# 对象:类的实例化、具象化
#
class Person:name="小明"  #类属性,表示直接归属于类的属性age=18def __init__(self,id):   #实例属性,可理解为默认的初始值self.id="A111111"def eat(self):    #实例方法,在类的内部,使用def关键字来定义,第一个参数默认是selfprint("大口大口吃饭")def run(self):print("一点也跑不动,不喜欢长跑")xm=Person (333)  #创建一个对象,333指的是id
xm.eat()  #调用函数
xm.run()
print("{}的年龄是:{}".format(xm.name,xm.age))class People:def eat(self):print("需要吃一日三餐")sam=People ()
sam.eat()
sam.age=22  #添加的是实例属性
sam.sex="male"#  self和对象指向同一个内存地址,可以认为self就是对象的引用
class Human:def eat(self):  #实例方法print(self)
xw=Human()
xw.eat()# 析构方法 相当于所有程序用一遍后,最后使用del()自动删除,释放内存空间
class Animal:def __init__(self,name ):self.name=nameprint("这是析构方法的初始化")def __del__(self):  #主要的应用就是操作对象的释放,一旦释放完毕,对象便不能再使用print("这是析构方法")cat=Animal ("狸花")
# python中展现面向对象的三大特征:封装、继承、多态
# 封装:指的是把内容封装到某个地方,便于后面的使用。
# 继承:子可以继承父的内容。
class Animal2:def eat(self):print("can eat")def drink(self):print(" can drink")
class Dog(Animal2 ):   #继承animal2的内容def sound(self):print("汪汪")
class Cat(Animal2 ):def sound(self):print("喵喵")
D1=Dog()
D1.drink()
C1=Cat()# 多继承,一个子类可以从多个父类进行继承
class monster(Dog, Cat):pass
m1=monster()
m1.sound()# 多态。多态必须发生在父类和子类之间,子类重写多态的方法
class Animal3:  #父类def say_who(self):print("I am an animal.")
class Duck(Animal3 ):def say_who(self):  #子类和父类这个名字相同时,才算是重写print("I am a duck.")pass
duck1=Duck()
duck1.say_who()
#类继承练习:人力系统
#员工分为两类,有相同属性,有不同属性
#子类优先调用自己的,自己没有时,才向父类调用class Employee:def __init__(self, name, id):self.name = nameself.id = iddef print_info(self):print(f"员工名字: {self.name}, 工号:{self.id}")class FullTimeEmployee(Employee):def  __init__(self, name, id, monthly_salary):super().__init__(name, id) #用super表示的父类self.monthly_salary = monthly_salarydef calculate_monthly_pay(self):return self.monthly_salaryclass PartTimeEmployee(Employee):def  __init__(self, name, id, daily_salary, work_days):super().__init__(name, id) #用super表示的父类self.daily_salary = daily_salaryself.work_days = work_daysdef calculate_monthly_pay(self):return self.daily_salary * self.work_dayszhangsan = FullTimeEmployee("张三","1111",8000)
lisi=PartTimeEmployee ("李四","1110",300,15)
zhangsan.print_info()
lisi.print_info()
print(zhangsan.calculate_monthly_pay())
print(lisi.calculate_monthly_pay() )

07 文件路径学习

#读文件
f=open("./read.txt","r",encoding= "utf-8")  #./表示相对路径(常用于在同一路径下时),r表示只读,encoding表示编码方式
content=f.read()
print(content)
f.close()  #关掉对文件的操作
#写文件
with open("./poem.txt","w",encoding="utf-8") as f1:f1.write("我欲乘风归去,\n")  #没有换行符,这里就是不换行接着写f1.write("又恐琼楼玉宇,\n")f1.write("高处不胜寒。\n")
#在前面内容的基础上继续加话,但是如果还是用w模式则会将前面内容清空,所以采用a模式,即添加
with open("./poem.txt","a",encoding="utf-8") as f1:f1.write("起舞弄清影,\n")f1.write("何似在人间,")

08 异常捕捉

#try-except 是从上往下运行,如果前面的except已经捕捉到了错误,下面的就不会再执行了,类比if-else
try:user_weight =float(input("请输入您的体重(单位:kg):"))  #输入的是字符,所以需要转为float数user_height =float(input("请输入您的身高(单位:m):"))user_BMI=user_weight /(user_height ** 2)
except ValueError:  #如果输入一个非数字的字符,程序就会报错,也就是ValueErrorprint("输入不为合理数字,请重新运行程序,并输入正确的数字。")
except ZeroDivisionError :  #即除零错误print("身高不能为零,请重新运行程序,并输入正确的数字。")
except:  #可以捕捉发生的任意错误(常考虑于错误情况考虑不全时)print("发生了未知的错误,请重新运行程序")
else:  #没有错误时,会运行print("您的BMI值为:" + str(user_BMI))  # 需要转换成str字符类型,才可以输出
finally:  #无论错误与否,都会被执行print("程序结束运行。")

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

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

相关文章

开疆智能ModbusTCP转Canopen网关连接汇川PLC配置案例

本案例是通过开疆智能研发的ModbusTCP转Canopen网关将汇川PLC与陀螺仪连接进行组网通讯。 准备阶段 软件&#xff1a;InoProShop(V1.7.3)&#xff0c;CANopen Configuration Studio PLC&#xff1a;汇川AC801-0221-R0R0 网关&#xff1a;开疆智能ModbusTCP转Canopen网关 陀…

Tess4J:基于 Java 的 OCR 解决方案

在现代软件开发中&#xff0c;图像识别与文本提取已成为许多应用场景中的关键环节。OCR&#xff08;Optical Character Recognition&#xff09; 技术使得从图像中提取文字成为可能。Tess4J 是一个基于 Java 的 OCR 开发库&#xff0c;它封装了 Google Tesseract OCR 引擎的本地…

Vue3 + JavaScript 父组件点击按钮触发子组件事件方法

在 Vue 3 中&#xff0c;父组件点击按钮触发子组件事件有以下三种常用方式&#xff1a; 方法 1&#xff1a;使用 ref 直接调用子组件方法&#xff08;推荐&#xff09; vue 复制 下载 <!-- 父组件 --> <template><button click"callChildMethod"…

超强人工智能解决方案套件InfiniSynapse:精准的业务理解、对各种数据源进行全模态联合智能分析--部署安装@Ubuntu22.04 @Docker

InfiniSynapse 通过自研的第二代LLM-Native RAG实现了企业业务的理解&#xff0c;精准的Schema召回保证数据的准确性。提供专门为大模型优化的InfiniSQL语言&#xff0c;从而可以更加准确的生成查询语句&#xff0c;通过 InfiniSQL 引擎让人类第一次对存储在各种数据源的全模态…

解决国内无法加载谷歌验证码(reCAPTCHA):URL 重定向配置指南

解决国内无法加载谷歌验证码&#xff08;reCAPTCHA&#xff09;&#xff1a;URL 重定向配置指南 在搭建网站或使用某些应用时&#xff0c;经常会遇到需要调用谷歌验证&#xff08;reCAPTCHA&#xff09;API 的情况。然而&#xff0c;由于网络环境的特殊性&#xff0c;国内多数…

【Qt】如何使用QtInstallerFramework打包Qt程序

使用 Qt Installer Framework 可以将你的 Qt 程序打包成一个带有安装向导的安装包&#xff0c;适用于 Windows、Linux 和 macOS 平台。以下是完整的打包流程&#xff0c;以你当前开发的 ecgexport 应用为例。 &#x1f9f0; 一、准备工作 1. 安装 Qt Installer Framework 下载…

如何编写高效的Prompt:从入门到精通

在人工智能时代&#xff0c;特别是随着大型语言模型(LLM)如ChatGPT、Claude等的普及&#xff0c;编写高质量的Prompt(提示词)已成为一项关键技能。一个好的Prompt可以显著提高AI输出的质量和相关性&#xff0c;而一个糟糕的Prompt可能导致无用甚至误导性的结果。本文将带你深入…

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…

【机械视觉】Halcon—【十三、实例找各个区域面积和中心点】

找区域面积和中心点 *获取图像 read_image (Image, fabrik) *关闭窗口 dev_close_window () *打开窗口 dev_open_window (0, 0, 512, 512, black, WindowID) *设置输出字体&#xff0c;14号字&#xff0c;Courier字体&#xff0c;粗体 set_display_font (WindowID, 14, mono, …

MongoDB 基础

一、MongoDB 基础概念 1. 什么是 MongoDB MongoDB 是一个文档型数据库&#xff0c;数据以类似 JSON 的文档形式存储&#xff0c;使用 BSON 格式。设计理念是应对大数据量1、高性能和灵活性需求。数据组织方式&#xff1a;数据库→2集合→文档&#xff0c;其中集合类似于关系型…

RNN:从记忆困境到序列建模革命

在自然语言处理的战场上&#xff0c;一个句子中的每个单词都承载着前文的记忆。当传统神经网络面对这种时序依赖束手无策时&#xff0c;循环神经网络&#xff08;RNN&#xff09; 以独特的循环结构开启了序列建模的新纪元。它像人类阅读般记忆上下文&#xff0c;却也因记忆衰减…

阳台光伏配套电表ADL200N-CT/D16-Wf-1

安科瑞 华楠 18706163979 引言 在“双碳”目标推动下&#xff0c;绿色能源正逐步走进日常生活。阳台光伏作为一种新型分布式发电方式&#xff0c;凭借灵活安装、高效节能的特点&#xff0c;成为城市家庭和工商业用户的新选择。安科瑞推出的ADL200N-CT/D16-Wf-1阳光光伏电表&a…

功能测试—软件的生命周期

市场需求调研 可行性研究 从企业的人力储备、技术储备、资金储备等方面出发&#xff0c;论证经济效益或者社会效益能否达到预期 项目立项 需求开发 输出&#xff1a;需求规格说明书需求评审&#xff08;需求测试&#xff09;&#xff1a;测试&#xff08;测试负责人、资深测…

PostgreSQL 日常维护

目录 前言 基本使用 1. 登录数据库 2. 数据库操作 2.1 列出库 2.2 创建库 2.3 删除库 2.4 切换库 2.5 查看库大小 3. 数据表操作 3.1 列出表 3.2 创建表 3.3 复制表 3.4 删除表 3.5 查看表结构 4. 模式操作命令 4.1 创建模式 4.2 默认模式 4.3 删除模式 4.4…

STM32F4通用定时器TIM9-TIM14讲解及PWM呼吸灯实例解读

STM32F4通用定时器TIM9-TIM14讲解及PWM呼吸灯实例解读 前言小贴士 通用定时器原理定时器的内部时钟源通用定时器TIM9-TIM14的对比共同点区别 TIM9-TIM14功能说明时基单元计数模式时钟选择 定时器框图理解和分析TIM10/TIM11/TIM13/TIM14输入捕获输出比较 TIM9和TIM12独立通道输入…

whttpserver:一个命令极速搭建文件上传与下载服务器

whttpserver 是一个简单的HTTP服务器&#xff0c;类似于python -m http.server&#xff0c;但增加了文件上传和编辑的功能。 1. 安装 whttpserver 模块 # 临时设置环境变量 PYTHONUTF81&#xff0c;强制 Python 使用 UTF-8 编码 set PYTHONUTF81 pip install whttpserver 2.…

【0.2 漫画操作系统原理】

🖥️ 漫画操作系统原理 🎯 学习目标:深入理解操作系统核心原理,为Java并发编程和性能优化打下坚实基础 🎪 第一章:操作系统初识篇 🤔 什么是操作系统? 想象一下,你是一个大型图书馆的馆长… 📚 没有操作系统 vs 有操作系统没有操作系统: 读者1 → 直接找书架…

第1章 C# 和 .NET 框架 笔记

第1章 C# 和 .NET 框架 1.1 在 .NET 之前 C#为在.NET框架上开发程序而设计的编程语言。 MFC&#xff08;Microsoft Foundation Class&#xff0c;微软基础类库&#xff09; 微软公司提供的一个类库&#xff0c;以 C 类的形式封装了 Windows 的 API&#xff0c;并包含一个应…

Django全栈开发实战与架构思考

一、框架选型与开发范式 作为Python生态最成熟的Web框架&#xff0c;Django的"电池全包"理念在2.3版本后得到更彻底的贯彻。项目初期通过django-admin startproject生成的脚手架已包含&#xff1a; 自动化ORM迁移系统 内置Admin后台管理界面 基于WSGI的中间件管道…

微服务--Gateway网关

1. Gateway简介 Gateway网关是微服务架构中不可或缺的组件&#xff0c;是微服务架构中的统一入口&#xff0c;它作为所有客户端请求的第一道防线&#xff0c;负责请求的路由、过滤和聚合。 Gateway核心功能 路由(Routing) 根据请求路径、Header、参数等将请求路由到不同微服…