python学习笔记(二)IF、FOR、WHILE、break、continue、函数定义与调用、面向对象

news2024/9/21 12:33:35

笔记二

  • 流程控制
    • if条件语句
    • for循环语句
    • while循环语句
    • break 和continue
  • python 函数定义与调用
  • 函数与调用函数的脚本分离
  • 脚本模板
    • 函数参数
    • 匿名参数
    • 变量作用域
    • 全局变量与局部变量
  • python面向对象
    • 类的创建
    • 实例的创建
    • 属性、方法的访问
    • 属性的添加、删除和修改
    • 属性的访问
    • python内置类属性

流程控制

if条件语句

if 条件1
	语句1
elif 条件2
	语句2
else:
	语句3

注意:
1.所有程序体用了缩进的方式。
2.python对于缩进十分严格
3.elif关键字、else后会跟一个冒号 :

# region 条件判断
print("条件判断:")
age = 5
if age >= 18:
    print('Your age is: ', age)# 缩进尽量采用 tap缩进
    print('adult')
elif age >= 6:
    print('Your age is: ', age)
    print('teenager')
else:# 别忘记有一个:
    print('Your age is: ', age)
    print('kid')

s = input('Birth year: ')#此时,S是一个字符串
birth_year = int(s)#这里涉及了强制类型转换
if birth_year < 2000:
    print("00前")
else:
    print("00后")
#endregion

for循环语句

与while比较起来,特点是知道循环多少次。当然了while我们也有办法知道,只不过需要再设置变量罢了。

for 循环变量 in 循环对象 : #注意这里有一个冒号
	语句1 # 注意缩进
	else#一般情况下用不到else:
	语句2
# region for循环
#一般情况下用不到else:
print("for循环:")
names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)#name是循环变量 names是循环对象,有一个冒号 : 有一个缩进。

#对比下面缩进部分,运行结果的区别
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print(sum)

sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
    print(sum)
#当循环次数很多的时候,可以使用range函数
print(range(101))#0~100

sum = 0
for x in range(101):
    sum = sum + x
print(sum)
# endregion

while循环语句

while 条件
	语句1 
else:
	语句2

注意:while需要两点:
1.进的来
2.出的去

这里是是一个while-do循环,还有一些语言还有do-while循环,注意区别。

# region while循环
print("while循环:")
sum = 0
n = 99 # 保证进的来 
while n > 0:
    sum = sum + n
    n = n - 2 #保证出的去
print(sum)
# endregion

break 和continue

1.break语句用在while和for循环中,break语句用来终
止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句
2.continue语句用在while和for循环中,continue 语句
用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环
3.continue语句跳出本次循环,而break跳出整个循环

这里break 和continue其实和C、C++、C#、IDL等等语言类似都是一样的作用。

# region break
print("break: ")
n = 1
while n <= 100:
    if n > 10: # 当n = 11时,条件满足,执行break语句
        break # break语句会结束当前循环
    print(n)
    n = n + 1
print('END')
# endregion

# region continue
print("continue: ")
n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0: # n除以2,余数是0,即如果n是偶数,执行continue语句
        continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)# 注意看缩进,在while循环体内部
# endregion

python 函数定义与调用

1.函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
2.函数能提高应用的模块性,和代码的重复利用率。
3.Python提供了许多内建函数,比如print()。也可以自己创建函数,这被叫做用户自定义函数。
4.**函数代码块以def关键词开头**,后接函数标识符名称和圆括号()5.任何**传入参数和自变量**必须放在**圆括号**中
间。**圆括号之间可以用于定义参数**6.函数内容**以冒号起始,并且缩进**7.**return[表达式]**结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None

有时候拿到别人的代码,运行有问题,需要区别是否是主文件。其中,函数文件是不能单独运行的。

def functionNameHere (parameters):
	#your code here

def是关键字,表明后面是一个函数
functionNameHere是函数名
parameters是参数

注意也是以缩进形式缩进进去的,且有一个:不要遗忘。有时候会用到return 返回一个值。

print("函数:")
def my_abs(x):
    if not isinstance(x, (int, float)):#isinstance判断是否为整型或者浮点型
        raise TypeError('bad operand type')#若不是整型或者浮点型,则运行该代码,返回一个错误信息
    if x >= 0:
        return x
    else:
        return -x

print(my_abs(-99))#调用函数的脚本
#print(my_abs('A'))#调用函数的脚本,因为不是整型或者浮点型,所以返回错误信息

此时,我们思考一个问题,上述代码是函数与调用函数的脚本是在一个程序内的。这样它一定是会识别的。那如何将函数与脚本分离开呢?这样别人也可以调用我们的函数。

函数与调用函数的脚本分离

①第一步,在main.py处new一个新的python脚本
②第二步,粘贴我们的函数
③第三步,学会调用

下图为函数文件:
函数文件

#!/usr/bin/env python
# -*- coding:utf-8 -*-
def my_abs(x):
    if not isinstance(x, (int, float)):#isinstance判断是否为整型或者浮点型
        raise TypeError('bad operand type')#若不是整型或者浮点型,则运行该代码,返回一个错误信息
    if x >= 0:
        return x
    else:
        return -x

新建了一个脚本,调用我们写好的函数文件。
请添加图片描述

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from  my_abs_fucntion import my_abs
print(my_abs(-10))

也可以写为:

import my_abs_fucntion as mf
print(mf.my_abs(-10))

请添加图片描述

脚本模板

此时可以发现,新建的函数文件以及新建的调用函数文件的脚本,开头其实都是一样的,那么我们有什么办法来简化流程呢?
于是我们可以在pycharm里进行python脚本模板的设置,首先在菜单栏的file下面找到settings
其次,我们选择如下:
在这里插入图片描述
然后便可在右边空白处进行编写模板了。
我的模板为:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author : SunTong0116@163.com
# Time: ${DATE} ${TIME} ${YEAR}
# Project : ${PROJECT_NAME}

具体模板编写可以参考下文的介绍:

https://blog.csdn.net/buside/article/details/121230733?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168154172016800180635343%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168154172016800180635343&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-121230733-null-null.142v83insert_down38,239v2insert_chatgpt&utm_term=pycharm%E7%9A%84%E8%84%9A%E6%9C%AC%E6%A8%A1%E6%9D%BF%E8%AE%BE%E7%BD%AE&spm=1018.2226.3001.4187

函数部分:

# region 函数

total = 0 #全局变量
# 函数作用说明或者应用说明
def sum (arg1,agr2): #注意这里有一个冒号 :
    #返回2个参数的和
    print(arg1, agr2)
    total = arg1 + agr2 #这里的total 是局部变量
    print('函数内部的局部变量是',total)
    return total
#调用sum函数
sum (10,20)
print('函数外是全局变量',total)



print("函数:")
def my_abs(x):
    if not isinstance(x, (int, float)):#isinstance判断是否为整型或者浮点型
        raise TypeError('bad operand type')#若不是整型或者浮点型,则运行该代码,返回一个错误信息
    if x >= 0:
        return x
    else:
        return -x

print(my_abs(-99))#调用函数的脚本
#print(my_abs('A'))#调用函数的脚本,因为不是整型或者浮点型,所以返回错误信息


# 返回多个值
def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny # 返回多个值


x, y = move(100, 100, 60, math.pi / 6)# 返回多个值,则需要多个变量来接收返回的值
print(x, y)

r = move(100, 100, 60, math.pi / 6)
print(r)    # 本质上返回值是个tuple


# 多个输入参数
def power(x, n=2):#n的缺省值(默认值)是2
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s


print(power(5))
print(power(5, 2))


# 可变参数
def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum


print(calc([1, 2, 3]))      # 先把输入参数组装成一个list或tuple
print(calc((1, 3, 5, 7)))


def calc(*numbers):#前面加一个*表示是一个可变的参数
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum


print(calc(1, 2, 3))
print(calc(1, 3, 5, 7))
nums = [1, 2, 3]
print(calc(*nums))

# 关键字参数
def person(name, age, **kw):#两个**表示支持关键字定义改参数,前面的name和age是必要的参数是必须有要提供的
    print('name:', name, 'age:', age, 'other:', kw)


person('Michael', 30)
person('Bob', 35, city='Beijing')#带关键字的也可以去调用
person('Adam', 45, gender='M', job='Engineer')

extra = {'city': 'Beijing', 'job': 'Engineer'}#封装成字典
person('Jack', 24, **extra)
# endregion

注意:如果提示没有导进来例如math等包,则导入即可,导入的方法也很简单,即先运行import …再运行我们的代码即可。

例如:
在这里插入图片描述
其中,这里会发现,r是一个变量但接收了两个参数的返回值,这里r自动为tuple类型了,避免有的返回值遗失。这里可以与matlab语言作对比,matlab只会将第一个进行存储。且这里的r是一个元组而不是列表,因为返回回来的值不能再修改了,自动为这个数据类型是十分合理的。

函数参数

参与计算的参数,
1.必备参数:须以正确的顺序传入函数,调用时的数量必须和声明时的一样。(不给不行)
2.关键字参数:函数调用使在这里插入代码片用关键字参数来确定传入的参数值,使用关键字参数允许函数调用时参数的顺序与声明时不一致。
3.默认参数:调用函数时,默认参数的值如果没有传入,则被认为是默认值。
4.不定长参数:函数能处理比当初声明时更多的参数,这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。加了星号(*)的变量名会存放所有未命名的变量参数。

匿名参数

1.python使用 lambda来创建匿名函数。
2.lambda只是一个表达式,函数体比def简单很多。
3.lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
4. lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
5.虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

lambda [arg1 [,arg2,.....argn]]:expression

关键字:lamda
参数:arg1、arg2…
表达式:expression

# region 匿名函数
sum_new = lambda arg1, arg2: arg1 + arg2
print("相加后的值为 : ", sum_new(10, 20))
print("相加后的值为 : ", sum_new(20, 20))
# endregion

变量作用域

1.全局变量
2.局部变量

全局变量与局部变量

1.定义在函数内部的变量拥有一个局部作用
域,定义在函数外的拥有全局作用域。
2.局部变量只能在其被声明的函数内部访问。
3.全局变量可以在整个程序范围内访问。

total = 0 #全局变量
# 函数作用说明或者应用说明
def sum (arg1,agr2): #注意这里有一个冒号 :
    #返回2个参数的和
    print(arg1, agr2)
    total = arg1 + agr2 #这里的total 是局部变量
    print('函数内部的局部变量是',total)
    return total
#调用sum函数
sum (10,20)
print('函数外是全局变量',total)

输出结果为:

10 20
函数内部的局部变量是 30
函数外是全局变量 0

python面向对象

1.类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例
2.类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用
3.数据成员:类变量或者实例变量,用于处理类及其实例对象的相关的数据。
4.方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
5.局部变量:定义在方法中的变量,只作用于当前实例的类。
6.实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
7.继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。
例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。

8.实例化:创建一个类的实例,类的具体对象
9.方法:类中定义的函数
10.对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量〉和方法。

类的创建

1.使用class语句来创建一个新类,class之后为类的名称并以冒号结尾。
2.类的帮助信息可以通过ClassName._ doc_
查看

3.class suite由类成员,方法,数据属性组成。

class className:
    '类的帮助信息'#类文档字符串
    class_suite #类体

4.empCount变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用Employee.empCount访问。

5.第一种方法 _init_() 方法是一种特殊的方法,被称为**类的构造函数或初始化方法**,当创建了这个类的实例时就会调用该方法

6.self 代表类的实例,self在定义类的方法时是必
须有的,虽然在调用时不必传入相应的参数。
7.类的方法与普通的函数只有一个特别的区别,它们必须有一个额外的第一个参数名称,按照惯例它的名称是self

实例的创建

1.实例化类其他编程语言中一般用**关键字new**,但是在 Python中并没有这个关键字,类的实例化类似函数调用方式。
2.以下使用类的名称Employee来实例化,并
通过_init__方法接收参数。

属性、方法的访问

使用点号.来访问对象的属性。

属性的添加、删除和修改

属性的访问

1.getattr(obj,name[,default]):访问对象的属性。 2…hasattr(obj,name):检查是否存在一个属性。3.setattr(obj,name,value):设置一个属性。如果
属性不存在,会创建一个新属性。
4.delattr(obj, name):删除属性。

python内置类属性

1.__dict__ :类的属性(包含一个字典,由类的数据属性组成)
2.__doc__ :类的文档字符串√name_:类名
3.__module__:类定义所在的模块(类的全名
是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module___等于mymod)
4.__bases__:类的所有父类构成元素(包含了一个由所有父类组成的元组>

注意:下划线是两个短的下划线而不是长的下划线。

# region 类的创建与实例化
class Employee:
    '所有员工的基类'
    empCount = 0

    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        Employee.empCount += 1

    def displayCount(self):
        print("Total Employee %d" % Employee.empCount)

    def displayEmployee(self):
        print("Name : ", self.name, ", Salary: ", self.salary)


# 创建 Employee 类的第一个对象
emp1 = Employee("Zara", 2000)

# 创建 Employee 类的第二个对象
emp2 = Employee("Manni", 5000)

emp1.displayEmployee()
emp2.displayEmployee()
print("Total Employee %d" % Employee.empCount)

# 添加、修改、删除属性
emp1.age = 7  # 添加一个 'age' 属性
print("Age: ", emp1.age)

emp1.age = 8  # 修改 'age' 属性
print("Age: ", emp1.age)

del emp1.age  # 删除 'age' 属性
print("Age: ", emp1.age)

# 属性访问
hasattr(emp1, 'age')    # 如果存在 'age' 属性返回 True。
getattr(emp1, 'age')    # 返回 'age' 属性的值
setattr(emp1, 'age', 10) # 添加属性 'age' 值为 8
delattr(emp1, 'age')    # 删除属性 'age'

# Python内置类属性调用
print("Employee.__doc__:", Employee.__doc__)
print("Employee.__name__:", Employee.__name__)
print("Employee.__module__:", Employee.__module__)
print("Employee.__bases__:", Employee.__bases__)
print("Employee.__dict__:", Employee.__dict__)
# endregion

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

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

相关文章

( “树” 之 前中后序遍历 ) 144. 二叉树的前序遍历 ——【Leetcode每日一题】

基础概念&#xff1a;前中后序遍历 1/ \2 3/ \ \ 4 5 6层次遍历顺序&#xff1a;[1 2 3 4 5 6]前序遍历顺序&#xff1a;[1 2 4 5 3 6]中序遍历顺序&#xff1a;[4 2 5 1 3 6]后序遍历顺序&#xff1a;[4 5 2 6 3 1] 层次遍历使用 BFS 实现&#xff0c;利用的就是 BFS…

写不了博客了吗?

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

像素的奇妙冒险:使用 Python 玩转彩色图片的灰度处理

文章目录 参考描述模块PillowPILPillow获取 Numpy获取 使用 Pillow 实现图片的灰度处理ImageOps.grayscale()convert() 原理灰度模式与彩色模式图片表示与三维数组ImageOps.grayscale() 与 convert(L) 背后的逻辑心理学灰度加权公式 Python 实现灰度模式下的灰度图片彩色模式下…

基于遥感的自然生态环境检测——实验三:生态因子提取

实验三&#xff1a;生态因子提取 一、实验目标 生态因子生成&#xff1b;生态因子归一化&#xff1b;生态环境评价 二、实验内容 根据经过大气校正后的影像生产土地覆盖指数、土壤指数以及坡度等&#xff0c;对土地覆盖指数、土壤指数以及坡度进行密度分割归一化&#xff1…

scikit-learn

一段时间只做一个事情。 比如不要想同时学习flink和scikit-learn。这实在是太难了。 pandas numpy pip install scikit-learn 使用的是venv环境 太难了。。 https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-mode…

建立人力资源运营团队的五个步骤

作为小企业主&#xff0c;设置人力资源运营可能不是您的首要任务。但是&#xff0c;随着您扩大运营规模和员工人数&#xff0c;您可能会遇到合规性和员工敬业度问题&#xff0c;从而阻碍您的业务增长。组建一个团队来照顾您的人力资源运营和员工可以让您专注于改进您的产品和满…

AI独立开发者:一周涨粉8万赚2W美元;推特#HustleGPT GPT-4创业挑战;即刻#AIHackathon创业者在行动 | ShowMeAI周刊

&#x1f440;日报&周刊合辑 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 这是ShowMeAI周刊的第7期。聚焦AI领域本周热点&#xff0c;及其在各圈层泛起的涟漪&#xff1b;拆解AI独立开发者的盈利案例&#xff0c;关注中美AIG…

Javaee Spring JdbcTemplate基本使用 基于xml配置方式

目录 哈哈哈哈&#xff0c;说好是要写一篇关于jdbcTemplate的基本使用&#xff0c;貌似说跑题了&#xff0c;但是主体还是用jdbctemplate实现的&#xff0c;有耐心看完的话相信能有点点收获的哦&#xff01; 项目结构&#xff1a; 小结&#xff1a; 遇到了个小问题&#xff0…

面试题——Arrays.asList()得到的List可以修改吗?

概述 前几天面试问的关于Arrays.asList()的问题&#xff0c;总结一下常见问题。 Arrays.asList()使用了什么设计模式 答案&#xff1a;使用了适配器模式。适配器模式简单来说就是不修改原对象&#xff0c;为了适应新的需求&#xff0c;适配成另一种接口或者类&#xff0c;我…

常见WebShell客户端的流量特征

以下的全是我在各个大佬哪里看文章做的总结-相当于我的笔记 中国蚁剑(AntSword) 大佬文章地址 https://www.cnblogs.com/NoCirc1e/p/16275608.htmlhttps://www.cnblogs.com/NoCirc1e/p/16275608.html 蚁剑PHP类WebShell链接流量 POST /uploadfiles/shell.php HTTP/1.1 Hos…

Windows安装Dolby Vision 杜比视界插件

前言 使用普通的播放器播放杜比视界视频时会出现发紫和发绿&#xff0c;两者来回切换的情况&#xff0c;要么使用专门的播放器&#xff0c;要么使用Windows自带播放器加上安装相应拓展 在使用Windows自带的“电影和电视”播放杜比视界(Dolby Vision)的视频时&#xff0c;需要安…

iOS 自定义Tab页

在iOS里面可以用UISegmentedControl控件来表示Tab页&#xff0c;但其样式难以修改&#xff0c;我们一般会自定义Tab页。 1. 自定义Tab页 在这里我们首先定义UKTabItemView用来显示其中的标签页。 // 标签页代理 protocol UKTabItemViewDelegate <NSObject>- (void)onT…

Kafka源码分析之Producer数据发送流程(四)

概述 书接上回的producer发送流程&#xff0c;在准备工作完成后&#xff0c;kafka的producer借助Sender和KafkaClient两大组件完成了数据的发送。其底层封装了java的NIO的组件channle以及selector&#xff0c;对于NIO组件不太熟悉的同学可以自行查询相关文档。 下面我整理了k…

从0搭建Vue3组件库(二):Monorepo项目搭建

本篇文章是从0搭建Vue3组件库系列文章第二篇,本篇文章将带领大家使用pnpm搭建一个简单的Monorepo项目,并完成包的关联与测试 什么是 Monorepo 其实很简单,就是一个代码库里包含很多的项目,而这些项目虽然是相关联的,但是在逻辑上是独立的,可以由不同人或者团队来维护 为什么…

Scala之集合(1)

目录 ​​​​​​​集合介绍&#xff1a; 不可变集合继承图&#xff1a;​编辑 可变集合继承图 数组&#xff1a; 不可变数组&#xff1a; 样例代码&#xff1a; 遍历集合的方法&#xff1a; 1.for循环 2.迭代器 3.转换成List列表&#xff1a; 4.使用foreach()函数&a…

WebServer项目(二)->linux网络编程基础知识

WebServer项目->linux网络编程基础知识其中&#xff0c;遇到的错误总结1). read&#xff1a;Connection reset by peer2).什么叫连接被重置&#xff1f;1. socket 介绍2. 字节序从主机字节序到网络字节序的转换函数&#xff1a;htons、htonl&#xff1b; 从网络字节序到主机…

科创人·中建三局一公司尹奎:数字化变革能创造全新行业,其意义超越形式、范式创新

尹奎 中建三局一公司技术中心主任 教授级高级工程师&#xff0c;BIM领域资深专家&#xff0c;完成10余个基于BIM的相关研究课题&#xff0c;获省部级以上科技进步奖 13 项&#xff1b;公开出版专著3部&#xff0c;参与编写“十二五”国家重点图书出版规划项目《BIM应用施工》&a…

CCS5.5环境设置

CCS5.5环境设置 文件编码格式设置利用断点导入*.dat文件先用Python生成*.dat文件DSP代码&#xff08;sys/bios&#xff09; 步骤利用strip6x工具去除**.out文件中的调试信息硬件跟踪功能应用名词解释使用方法 ccs显示图片参数设置 文件编码格式设置 可分别对工作空间、工程、单…

Mysql下载安装

1.Mysql官网下载 MySQLhttps://www.mysql.com/ 有商业版和社区版&#xff0c;商业版使用收费&#xff0c;有试用期&#xff0c;社区版免费&#xff0c;选择社区版即可&#xff1a; 点击MySQL社区服务器&#xff1a; 选择要安装的版本&#xff1a; 进行下载即可&#xff1a; 2…

Docker设置http proxy代理

需求&#xff1a; 由于公司服务器无法正常访问公网&#xff0c;想要下载一些外部依赖包需要配置公司的内部代理。 Docker构建镜像或拉取镜像时需要通过代理访问外网&#xff0c;可以按照以下步骤设置HTTP代理 目录 创建目录 创建并编辑配置文件 重新加载Docker服务配置 重启…