一、python基础

news2024/10/23 19:00:03

python基础

  • 认识Python
    • 1. Python介绍
      • 1.1 为什么学习Python
      • 1.2 Python发展历史
    • 2. 语言分类简介
      • 2.1 编译型
      • 2.2 解释型
  • Python环境搭建
    • 1. Python 解释器
      • 1.1 Python解释器下载
      • 1.2 Python解释器安装
    • 2. 解释器运行Python脚本
      • 2.1 演练步骤
  • PyCharm
    • 1. PyCharm介绍
    • 2. PyCharm安装
    • 3. PyCharm基本使用
      • 3.1 新建项目
      • 3.2 新建文件
      • 3.3 编写代码运行
      • 3.4 查看运行结果
    • 4. PyCharm常用配置
  • 注释
    • 1. 注释的作用
    • 2. 注释分类
    • 3. 注释扩展
  • 变量
    • 1. 变量作用
    • 2. 变量定义
      • 2.1 语法
      • 2.2 标识符规则
      • 2.3 命名习惯
    • 3. 变量的使用
  • 变量的类型
    • 1. 数据为什么需要类型
    • 2. 常见数据类型分类
    • 3. 数据类型检测
    • 4. 数据类型转换
  • 程序的输入和输出
    • 1. 程序的输出
      • 1.1 基本输出
      • 1.2 格式化输出
      • 1.3 转义字符
    • 2. 程序的输入
      • 2.1 输入的语法
      • 2.2 输入的特点
  • 运算符
    • 1. Python运算符介绍
      • 1.1 运算符作用
      • 1.2 运算符分类
      • 1.3 运算符使用
    • 2. 算术运算符
    • 3. 比较运算符
    • 4. 逻辑运算符
    • 5. 赋值运算符
    • 6. 运算符优先级
      • 6.1 分类别单独比较
      • 6.2 按类型整体比较【由高至低】

认识Python

1. Python介绍

由吉多·范罗苏姆(Guido van Rossum) 于1989年创造

1.1 为什么学习Python

  • 简单, 易学, 免费, 开源, 适用人群广泛
    • 零基础学习
    • 跨行业转型
    • 运维人员
    • Web全栈开发
    • 测试人员
  • 应用领域广泛
    • 自动化测试
    • 网络爬虫
    • Web 开发
    • 自动化运维
    • 数据分析
    • 人工智能
    • 机器学习

1.2 Python发展历史

  • Python2.X
  • Python3.X (主讲版本)
    • Python3.5
    • Python3.6
    • Python3.7
  • 详细了解:参考

2. 语言分类简介

2.1 编译型

  • 把程序源代码都编译成机器语言(二进制),保存为二进制文件
  • 计算机可以直接运行,执行速度快
  • C, C++, GO, Swift, Object-C …

2.2 解释型

  • 在程序执行的时候才会一行一行的处理成机器语言
  • 执行速度慢
  • JavaScript, Python, Ruby, PHP…

本质:计算机本身只能识别机器语言(二进制)

Python环境搭建

1. Python 解释器

Python 是一门解释型语言,通过解释器来运行 .py 文

1.1 Python解释器下载

  1. 下载对应的解释器安装包,官方解释器:https://www.python.org/downloads/release
  2. 选择对应的版本: 建议使用3.5之后版本
  3. 点击目标版本,进入指定下载界面
  4. 下拉最后,选择对应平台适配版本
    在这里插入图片描述

1.2 Python解释器安装

  1. 双击安装,执行下一步安装
  2. 选择自定义安装
    在这里插入图片描述
  3. 等待 完成安装
  4. 验证是否成功:cmd进入命令行,输入python 查看信息
    在这里插入图片描述

注意:
1.默认安装路径可以使用,但是不方便将来查找第三方包存放目录
2.自定义目录建议直接放置于某个盘符根下,类似:C:/Python36 或 D:/python37…
3.强烈建议勾选将路径添加至 Path

2. 解释器运行Python脚本

前置条件:Python 解释器安装完毕

2.1 演练步骤

  1. 在桌面新建测试目录 demo
  2. 在 demo 目录下新建 demo.py 文件
  3. 使用 Notepad++ 工具打开 demo.py , 输入 print(“第一个python程序”)
    在这里插入图片描述
  4. 在 demo 目录下进入到 cmd 命令模式
    在这里插入图片描述
  5. 使用 python demo.py 运行程序

注意:
1.在 windows 上新建的文件,有些操作系统默认编码是 gbk
2.建议直接使用 notepad++ 新建文件,保存为demo.py

PyCharm

1. PyCharm介绍

  • Pycharm 是一种 Python IDE (集成开发环境), 内置功能丰富提高开发效率
  • Pycharm 分为专业版(professional) 和 社区版(community), 这里使用社区版

2. PyCharm安装

  1. 下载安装包,下载地址:http://www.jetbrains.com/pycharm/download
    在这里插入图片描述
  2. 执行安装程序
    在这里插入图片描述

3. PyCharm基本使用

3.1 新建项目

  1. 打开 Pycharm
  2. 选择 [Create New Project ]
  3. 指定本地的 Python 解释器
  4. 点击 create 创建完成
    在这里插入图片描述

3.2 新建文件

  1. 进入 Pycharm 项目
  2. 选中对应项目名,鼠标右击
  3. 点击 New 选择 Python file
  4. 自定义文件名然后选择创建
    在这里插入图片描述

3.3 编写代码运行

  • 按语法书写 python 脚本
  • 书写 print(“第一个python脚本”)
  • 在工具栏或直接运行 py 脚本
    在这里插入图片描述

3.4 查看运行结果

  • 方式一:在当前 py 文件编辑区直接鼠标右击 选择Run
  • 方式二:打开对应文件,在工具栏中选择 Run(绿色三角播放图标)

4. PyCharm常用配置

修改主题配置:

  1. 点击菜单 File(文件), 选择 Settings(设置) 选项
  2. 选择 Editor(编辑),点击 Color Scheme(配色方案)
  3. 在右侧选择对应的主题配置

自定义字体设置:
4. 点击菜单 File(文件), 选择 Settings(设置) 选项
5. 选择 Editor(编辑)
6. 选择 Font(字体)
7. 右侧设置具体的字体名称、大小、行高

注释

1. 注释的作用

  • 使用开发者自已熟悉的语言在程序代码中添加标注或说明
  • 通过注释增强程序代码可读性
  • 注释的内容不会被解释器执行

未添加注释代码:

import allure
import pytest
import Base
import Handle


class TestLogin:
	def setup(self):
		self.driver = Base.get_driver()
		self.handle = Handle.TotalHandle(self.driver)
		self.handle.init_home.tap_me()
		if not self.handle.init_me.assert_goon_exist():
			self.handle.init_me.tap_set()
			self.handle.init_set.tap_quit()
			self.handle.init_set.tap_confirm()
			self.handle.init_home.tap_me()
		self.handle.init_me.tap_logon()
	@pytest.mark.parametrize("info", Base.get_data("login", "login_miss_num"))
	def test_login_miss_num(self, info):
		self.handle.init_login.input_num(info["num"])
		self.handle.init_login.input_pwd(info["pwd"])
		self.handle.init_login.tap_login()
		assert self.handle.init_login.assert_toast("此用户不存在")

已添加注释代码:

import allure
import pytest
import Base
import Handle


# 登录功能点测试脚本
class TestLogin:

	# 前置步骤
	def setup(self):
		self.driver = Base.get_driver()
		self.handle = Handle.TotalHandle(self.driver)
		# 执行点击 “我”动作
		self.handle.init_home.tap_me()
		# 执行是否登录的判断
		if not self.handle.init_me.assert_goon_exist():
			# 步骤1:点击设置
			self.handle.init_me.tap_set()
			# 步骤2:滑屏找到退出,点击
			self.handle.init_set.tap_quit()
			# 步骤3:点击确认
			self.handle.init_set.tap_confirm()
			# 步骤4:点击我
			self.handle.init_home.tap_me()
		# 执行点击 去登录 动作
		self.handle.init_me.tap_logon()

	# 账号不存在测试场景
	# 使用参数化实现数据驱动文件读取
	@pytest.mark.parametrize("info", Base.get_data("login", "login_miss_num"))
	def test_login_miss_num(self, info):
		# 步骤1:输入账号
		self.handle.init_login.input_num(info["num"])
		# 步骤2:输入密码
		self.handle.init_login.input_pwd(info["pwd"])
		# 步骤3:点击登录
		self.handle.init_login.tap_login()
		#步骤4: 断言
		assert self.handle.init_login.assert_toast("此用户不存在")

2. 注释分类

注释分为 : 单行注释 + 多行注释(块注释)

  • 单行注释
# 一次只注释一行内容
  • 多行注释
    1. 使用六个双引号,之间部分为注释内容 """ 被注释内容 """
    2. 使用六个单引号,之间部分为注释内容 '''被注释内容'''
  • 注释快捷键
    ctrl + /
    1. 在需要被注释的单行代码所在行任意处执行即可
    2. 选中需要被注释的整段内容 执行即可
    3. 添加注释和去除注释规则是一样的

3. 注释扩展

  • 何时进添加注释
    • 注释并非越多越好,一目了然的代码无需注释
    • 逻辑复杂的代码, 应当先写注释再编码
    • 不应用中文去翻译 python 代码的含义
  • 代码规范
    • Python 官方提供了一套 PEP( Python Enhancement Proposals ) 文档
    • 其中第8篇文档专门针对 Python 的代码格式给出了建议,俗称 PEP8
    • 官方地址:https://www.python.org/dev/peps/pep-0008/

变量

1. 变量作用

场景举例:

超市购物时会将随身物品存放于储物柜中,然后得到一个"编号"。购物结束后,通过此编号就可以找到我们的物品

场景分析:

  • 超市购物就是一个真实环境下的业务需求
  • 随身物品就是完成整个业务需要用到的 ”数据“
  • 我们最终需要获取的是 随身物品 ,找到物品使用了编号
  • 可以认为是编号帮我们存储了 随身物品

变量作用:

  1. 程序执行的过程都是发生在内存当中的
  2. 内存中的数据都是临时存储的
  3. 为了快速定位目标数据,我们将数据在内存空间占据的空间分配一个名称,即变量

总结:变量将运算的中间结果暂存到内存,便于程序后续调用

2. 变量定义

2.1 语法

变量名 = 数据值
  • 变量名自定义, 要满足 标识符 命名规则
  • 数据值为要存储的数据,可以为不同的数据类型
  • 单等号用于 赋值,不具备比较功能

2.2 标识符规则

标识符命名规则是Python中定义各种变量名或其他名字的时候的统一规范, 具体如下:

  • 由数字, 字母, 下划线组成
  • 不能使用数字开头
  • 不能使用Python内置关键字
  • 严格区分大小写
  • 不能使用中文定义变量名

Python中的关键字:

False None True and as assert break class
continue def del elif else except finally for
from global if import in is lambda nonlocal
not or pass raise return try while with
yield

2.3 命名习惯

  1. 见名知义
  2. 使用驼峰体
    • 大驼峰:每个单词首字母大写, 例如: MyName
    • 小驼峰:第二个单词开始首字母大写, 例如: myName
  3. 使用下划线:每个单词之间使用下划线连接, 例如: my_nam

3. 变量的使用

使用步骤:

  1. 按标识符规则定义变量
  2. 使用单等号给变量赋值
  3. 在程序中使用变量名指代具体数据值

实例代码:

name = syy
age = 18
print(name)
print(age)

变量的类型

1. 数据为什么需要类型

  1. 人类可以肉眼观察轻松的区分不同类型数据,但是计算机做不到。
  2. 计算机工作的过程就是完成不同的类型的计算,例如做数学运算,做文件存储,做逻辑判断
  3. 为了让计算机完成不同的运算过程,在Python中就定义了数据类型的概念
  4. 数据类型可以对不同数据进行分类管理和标识

2. 常见数据类型分类

  • 数字型
    • 整型
    • 浮点型
    • 布尔型
    • 复数型(了解)
  • 非数字型
    • 字符串型
    • 列表
    • 元组
    • 字典

注意:

  1. 这里只讨论 3.X之后Python版本常用类型
  2. 布尔型中非0即为真

3. 数据类型检测

使用 type() 函数可以查看一个变量的类型

age = 20
print(type(age))

a = 1
print(type(a)) # <class 'int'> -- 整型
b = 1.1
print(type(b)) # <class 'float'> -- 浮点型
c = True
print(type(c)) # <class 'bool'> -- 布尔型
d = '12345'
print(type(d)) # <class 'str'> -- 字符串
e = [10, 20, 30]
print(type(e)) # <class 'list'> -- 列表
f = (10, 20, 30)
print(type(f)) # <class 'tuple'> -- 元组
h = {10, 20, 30}
print(type(h)) # <class 'set'> -- 集合
g = {'name': 'TOM', 'age': 20}
print(type(g)) # <class 'dict'> -- 字典

4. 数据类型转换

作用: 将一个中数据类型转换为另一种数据类型

函数说明
int(x)将x转换为一个整数
float(x)将x转换为一个浮点数
str(x)将 x 转换为字符串
tuple(s)将序列 s 转换为一个元组
list(s)将序列 s 转换为一个列表

注意:

  • int(x), x是字符串时,必须是数字类型的字符串
  • float(x), x是字符串时,必须是浮点数类型的字符串
  • str(x), 对于任意数据类型x都可以转为字符串类型

程序的输入和输出

1. 程序的输出

1.1 基本输出

输出的作用: 将程序运行结果输出打印到屏幕或终端

print("hello Python")
age = 18
print(age)
name = "小明"
print("姓名是: %s" % name)

1.2 格式化输出

所谓格式化输出就是按照一定的格式输出内容

name = "小明"
print("姓名是: %s" % name)

常见的格式化符号
在这里插入图片描述

技巧

  • %06d, 表示输出的整数显示位数, 不足位以0补全, 超出当前位数则原样输出
  • %.2f, 表示小数点后显示的小数位数, 此为保留2位小数

格式化字符串:格式化字符串除了%s, 还可以写为 f'{表达式}'

age = 18
name = 'TOM'
weight = 75.5
student_id = 1
present = 95
# 我的名字是TOM
print('我的名字是%s' % name)
# 我的学号是0001
print('我的学号是%4d' % student_id)
# 我的体重是75.50公斤
print('我的体重是%.2f公斤' % weight)
# 合格率是95%
print('合格率是%d%%' % present)
# 我的名字是TOM,今年18岁了
print('我的名字是%s,今年%d岁了' % (name, age))
# 我的名字是TOM,明年19岁了
print('我的名字是%s,明年%d岁了' % (name, age + 1))
# 我的名字是TOM,明年19岁了
print(f'我的名字是{name}, 明年{age + 1}岁了')

f-格式化字符串是Python3.6中新增的格式化方法,该方法更简单易读

1.3 转义字符

  • \n : 换行
  • \t : tab键

思考:为什么两个print()会换行输出呢?

在Python中,print()函数默认自带 end=“\n” 这个换行结束符,所以导致每两个 print 直接会换行展示,用户可以按
需求更改结束符
print("输出的内容", end="\n")

2. 程序的输入

在Python中, 程序用来接收用户输入的数据的功能即是输入。

2.1 输入的语法

input("提示信息")

2.2 输入的特点

  • 当程序执行到input , 等待用户输入, 输入完成之后程序才继续向下执行
  • 在Python中, input 接收用户输入信息后, 一般保存到到变量中, 方便使用
  • 在Python中, input 会把用户输入的任意数据都当做字符串处理
password = input('请输入您的密码:')
print(f'您输入的密码是{password}')
print(type(password)) # <class 'str'>

运算符

1. Python运算符介绍

1.1 运算符作用

  1. 计算机可以完成的运算分为很多种,不仅仅限于 加减乘除
  2. 不同类型的运算需要依赖不同的符号
  3. 运算符可以让计算机认识并处理对应的计算逻辑

1.2 运算符分类

  1. 算数运算符:完全常规数字运算
  2. 比较运算符:完成二个值的大小比较运算
  3. 逻辑运算符:常用业务之间的逻辑判断
  4. 赋值运算符:将运算符右侧的值,赋值给左侧容器

1.3 运算符使用

  1. 准备运算过程中需要的数据
  2. 选择对应的运算符规则
  3. 执行程序代码完成最终运算
a = 1
b = 2
print( a+b ) # 通过加法运算符完成运算

2. 算术运算符

场景构建:假设有x y 二个变量,x=10, y=20

在这里插入图片描述
在这里插入图片描述

注:
python 算数运算符中的 *可以用于字符串计算
输入:print(“中”*10)
输出:中中中中中中中中中中

3. 比较运算符

场景构建:假设有a b 二个变量,a=10, b=20

在这里插入图片描述

4. 逻辑运算符

场景构建:假设有a b 二个变量,a=True, b=True

在这里插入图片描述

5. 赋值运算符

场景构建:假设有a, b二个变量, a=10, b=20

在这里插入图片描述
在这里插入图片描述

注意:

  1. = , 单等号在程序语言中不表示比较,用于赋值
  2. 复合赋值运算符之间没有空格,连接在一起

6. 运算符优先级

有计算就会运算符,不同的运算符默认具备不同的优先级

6.1 分类别单独比较

  • 算术运算符【由高至低】
    • ()小括号分组最优先
    • ** 幂等
    • * / // % 按书写顺序
    • + -
  • 逻辑运算符【由高至低】
    • () 小括号分组,优先级最高
    • not
    • and
    • or

6.2 按类型整体比较【由高至低】

在这里插入图片描述

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

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

相关文章

15分钟学Go 第6天:变量与常量

第6天&#xff1a;变量与常量 在Go语言中&#xff0c;变量和常量是编程的基础概念。理解如何定义和使用它们不仅能帮助我们管理数据&#xff0c;还能增强代码的可读性和可维护性。在本章中&#xff0c;我们将详细探讨Go语言中的变量和常量&#xff0c;涵盖它们的定义、使用、作…

机器学习建模分析

机器学习 5.1 机器学习概述5.1.1 机器学习与人工智能5.1.2 python机器学习方法库 5.2 回归分析5.2.1 回归分析原理5.2.2 回归分析实现 5.3 分类分析5.3.1 分类学习原理5.3.2 决策树5.5.3 支持向量机 5.4 聚类分析5.4.1 聚类任务5.4.2 K-means算法 5.5 神经网络和深度学习5.5.1神…

python配合yolov11开发分类训练软件

上一篇文件写了用yolo分类模型开发分类软件&#xff0c;这边文章在上个分类软件的基础上加入训练功能环境配置:pycharm&#xff0c;PySide6 6.6.1 &#xff0c;PySide6-Addons 6.6.1&#xff0c;PySide6-Essentials 6.6.1&#xff0c;torch 2.3.1cu121&#xff0c;torchaudio 2…

dynadot设置域名动态DNS(DDNS)

需求&#xff1a;本地测试代理&#xff0c;代理需要绑定IP或者域名&#xff0c;本地IP是动态变化的&#xff0c;解决办法就是给域名设置动态DNS 1.dynadot设置 开启动态DNS选项会显示动态DNS密码&#xff0c;该密码后续将会用在DDNS-GO工具上 2.DDNS-GO设置 GitHub介绍页面&a…

WIFI、NBIOT、4G模块调试AT指令连接华为云物联网服务器(MQTT协议)

一、前言 随着物联网&#xff08;IoT&#xff09;技术的飞速发展&#xff0c;越来越多的设备开始连接到互联网&#xff0c;形成了一个万物互联的世界。在这个背景下&#xff0c;设备与云端之间的通讯变得尤为重要。 本文将探讨几种常见的无线通信模块——EC20-4G、Air724ug-4…

每天花2分钟学数字化转型,第四讲:数字化转型

一文看懂&#xff1a;数字化转型是什么&#xff1f;以及数字化转型的根本任务与核心路径。 定义&#xff1a;数字化是人类社会的进化&#xff0c;绝不仅仅是一个企业的问题&#xff0c;也不是某一项技术的问题&#xff0c;而是时代的变迁。数字化转型指的是从当前信息化环境下…

RabbitMQ系列学习笔记(三)--工作队列模式

文章目录 一、工作队列模式原理二、工作队列模式实战1、抽取工具类2、消费者代码3、生产者代码4、查看运行结果 本文参考 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq RabbitMQ 详解 Centos7环境安装Erlang、RabbitMQ详细过程(配图) 一、工作队列模式原理 与简单模式相…

企业级 接口自动化测试框架:Pytest+Allure+Excel

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具&#xff0c;它不仅以 Web 的方式展示了简介的测试结果&#xff0c;而且允许参与开发过程的每个人可以从日常执行的测试中&#xff0c;最大限度地提取有用信息。 Allure 是由 Java 语言开发…

MySQL 【日期】函数大全(七)

目录 1、UNIX_TIMESTAMP() 将指定的日期/日期时间转为 UNIX 时间戳值。 2、WEEK() 返回给定日期位于当年的第几周。 3、WEEKDAY() 返回给定日期的工作日编号。 4、WEEKOFYEAR() 返回给定日期位于当年的第几周 5、YEAR() 提取日期的年份部分并作为数字返回。 6、YEARWEEK()…

Jmeter 实战 JDBC配置

​ JDBC JDBC&#xff08;Java Database Connectivity&#xff09;是一种用于执行SQL语句的Java API。通过这个API&#xff0c;可以直接连接并执行SQL脚本&#xff0c;与数据库进行交互。 使用JMeter压力测试时&#xff0c;操作数据库的场景 在使用JMeter进行接口压力测试时…

Gin 协程mysql客户端

一、Gin框架 mysql配置 这里选择yaml文件配置 二、配置读取 viper 读取yaml文件中对应配置 三、mysql 的协程客户端 文件位置 package databaseimport ("database/sql""fmt""github.com/spf13/viper""log""net/http"&quo…

JavaWeb 25.Vite

目录 一、Vite的介绍 二、Vite创建Vue3工程化项目 ViteVue3项目的创建、启动、停止 创建 启动 停止 干净感来源于对自我的驯服 —— 24.10.23 一、Vite的介绍 在浏览器支持 ES 模块之前&#xff0c;JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。这也正是我们…

Missing classes detected while running R8报错解决方案

Android 打包release版本时报错如下&#xff1a; > Task :printlib:minifyReleaseWithR8 FAILED AGPBI: {"kind":"error","text":"Missing classes detected while running R8. Please add the missing classes or apply additional ke…

canvas-editor首行缩进

canvas-editor中渲染部分的源码都在Draw.ts里&#xff0c;能找到computeRowList方法中并没有实现首行缩进相关的逻辑&#xff0c;但是实现了element.type ElementType.TAB的缩进&#xff0c;如图&#xff1a; 因此我们可以基于tab进行首行缩进的逻辑编写&#xff0c;在main.ts…

通过DevTools逃离Chrome沙盒(CVE-2024-6778和CVE-2024-5836)

介绍 这篇博文详细介绍了如何发现CVE-2024-6778和CVE-2024-5836的&#xff0c;这是Chromium web浏览器中的漏洞&#xff0c;允许从浏览器扩展&#xff08;带有一点点用户交互&#xff09;中进行沙盒逃逸。 简而言之&#xff0c;这些漏洞允许恶意的Chrome扩展在你的电脑上运行…

2015年-2017年 计算机技术专业 程序设计题(算法题)实战_c语言程序设计数据结构程序设计分析

文章目录 20151.C语言算法设计部分2.数据结构算法设计部分 20161.C语言算法设计部分2.数据结构算法设计部分 2017年1. C语言算法设计部分2.数据结构算法设计部分 2015 1.C语言算法设计部分 int total(int n) {if(n1) return 1;return total(n-1)n1; } //主函数测试代码已省略…

Android 15 推出新安全功能以保护敏感数据

Android 15 带来了增强的安全功能&#xff0c;可保护您的敏感健康、财务和个人数据免遭盗窃和欺诈。 它还为大屏幕设备带来了生产力改进&#xff0c;并对相机、消息和密钥等应用进行了更新。 Android 防盗保护 Google 开发并严格测试了一套全面的功能&#xff0c;以在盗窃之…

Ubuntu22.04 制作系统ISO镜像

第一步&#xff1a;安装软件-Systemback 1.如果已经添加过ppa&#xff0c;可以删除重新添加或者跳过此步 sudo add-apt-repository --remove ppa:nemh/systemback 2.添加ppa 我是ubuntu20&#xff0c;但这个软件最后支持的是 ubuntu16.04版本&#xff0c;所以加一个16版本…

【Docker】Harbor 私有仓库和管理

目录 一、搭建本地私有仓库 二、harbor简介&#xff08;特性、构成、架构的数据流向&#xff09; 2.1 什么是Harbor 2.2 Harbor的特性 2.3 Harbor的构成 2.4 Harbor的工作原理&#xff08;运行流程&#xff09; 三、harbor部署以及配置文件 1. 部署 Docker-Compose 服…

2010年国赛高教杯数学建模B题上海世博会影响力的定量评估解题全过程文档及程序

2010年国赛高教杯数学建模 B题 上海世博会影响力的定量评估 2010年上海世博会是首次在中国举办的世界博览会。从1851年伦敦的“万国工业博览会”开始&#xff0c;世博会正日益成为各国人民交流历史文化、展示科技成果、体现合作精神、展望未来发展等的重要舞台。请你们选择感兴…