Python编程快速入门

news2024/11/26 0:42:11

Python编程环境设置

Python是一种解释性语言,它使用解释器来解释和执行代码,这对用户来说省去了C或C++之类语言的编译步骤,直接从源代码即可运行,因此更容易编写和调试。工欲善其事,必先利其器。在学习Python编程之前,先让我们安装好相应的工具并对编程环境进行设置。

首先进入Python官方下载频道https://www.python.org/downloads,点击“Download Python 3.11.2”按钮进入下载页面(此数字会随着版本的升级而改变)。找到适合自己系统的下载链接,比如笔者为Windows的64位系统,所以选择下载了“Windows installer (64-bit)”。双击下载所得的EXE可执行文件启动Python安装向导(图1)。
在这里插入图片描述

图1 Python安装向导

勾选“Add python.exe to PATH”项,这样就不用后期手动将Python程序添加到系统路径中了。点击“Install Now”即可自动安装。如果不希望安装到默认的C盘,可以点击“Customize installation”自定义安装项,根据向导提示一步步安装(图2)。

图片

图2 Python自定义安装

作为初学者选择默认安装选项即可。安装成功后,对于Windows系统将会有一个“Disable path length limit(禁用路径长度限制)”的提示,这是因为Windows系统能够处理的文件路径长度有一定的限制(图3)。点击禁用这一限制可以避免处理长文件路径时出现的调试问题,不过这也可能导致与旧版本Windows 10的兼容性问题。对于我们初学者来说可以暂时跳过此选项,因为以后有需要时还可以修改注册表来解决。

图片

图3 Python安装成功的界面

点击“Close”按钮关闭安装向导。现在我们测试Python是否安装成功。按Win+R键调出运行对话框,输入“cmd”后按回车键打开命令提示符窗口,然后输入“python”并按回车,如果能够显示出Python版本等信息内容,并且提示符变成了“>>>”,则表示安装成功了。此时可输入一行测试代码:

print(“嗨,欢迎来到Python世界!”)

按回车键执行,即可得到“嗨,欢迎来到Python世界!”的显示信息。几乎每种编程语言教程中都会展示一下“hello, world!”程序,虽然很俗套,但不得不说Python的实现是如此的简单。紧接着执行代码“exit()”退出Python环境,完成此一阶段的测试(图4)。

图片

图4 Python的“hello, world!”程序示例

命令提示符的界面过于简陋,我们可以试试Python自带的IDLE交互式开发环境。点击系统“开始”按钮,在开始菜单顶部的最近添加中就可以看到“IDLE(Pyton 3.11 64-bit)”程序了,点击即可打开。

IDLE通过不同的颜色区分代码及执行结果,清晰明了。尤其方便的是,当我们输入某个函数时,它会智能显示参数提示,辅助我们输入代码,非常方便(图5)。

图片

图5 Python的IDLE交互式开发环境

除了一行一行的交互式执行,IDLE还可以执行扩展名为“py”的Python程序文件,下面就来做个测试。首先点击菜单命令“File→New File”打开IDLE的代码编辑器,输入以下代码:

# Python 3: 显示n个数以内的斐波纳契(Fibonacci)序列

def fib(n):

a, b = 0, 1

while a < n:

print(a, end=’ ')

a, b = b, a+b

print()

fib(1000)

代码解释:“#”后面的文字表示注释,是程序员对代码的说明,这是给阅读代码的人看的,Python解释器会自动忽略这一行。接下来的“def fib(n):”定义了一个名为“fib”的函数,其后缩进的几行代码就是该函数的内容,其主体是一个“while”循环,通过斐波纳契数列公式反复运算,运算结果通过“print()”函数显示出来,其参数“end=’ '”表示每个数字后面加几个空格,是为了将数字隔开(用来显示的print函数在后面的示例中将频繁出现)。当然,函数定义只是表明此函数能做什么,真正运行还得对它进行调用,这就是最后一行代码“fib(1000)”的作用,在调用该函数时,传递了一个参数“1000”,表示要计算1000以内的斐波纳契数列(图6)。

图片

图6 斐波纳契数列计算

对于初学者来说可能还理解不了这段代码,没有关系,这正是后文要介绍的内容。现在按Ctrl+S键保存,在打开的保存对话框中输入文件名(本例取名为“Fibonacci”),这里无需手动添加“py”后缀,它会自动添加(图7)。

图片

图7 保存Python程序文件

保存完毕,点击代码编辑器的菜单命令“Run→Run Module”,或者直接按F5键,即可运行这段代码了。下次在IDLE中,随时可以执行菜单命令“File→Open”打开“Fibonacci.py”文件,并按F5键运行(图8)。

图片

图8 斐波纳契数列计算程序的输出结果

PyCharm——Python开发好伴侣

IDE是Integrated Development Environment的缩写,意为集成开发环境,主要用来辅助程序开发。Python并不一定需要IDE,因为它可以在任何文本编辑器中编写并从命令行运行。但是IDE可以提供许多辅助功能,例如代码调试、智能完成和语法高亮显示等。另外,IDE还可以提供重构、代码导航和项目管理等工具,这些工具可以帮助我们更快、更轻松地编写Python代码,并且可以更轻松地调试和维护代码。

Python开发人员有多种IDE可用,相对来说PyCharm是个非常不错的选择,它可以让Python开发过程变得更加轻松和高效。值得称道的是,PyCharm提供一个强大的社区版本,可以免费使用,并且可以在网上获得免费支持。

首先进入PyCharm主页https://www.jetbrains.com/pycharm,点击“DOWNLOAD”按钮进入下载频道,在“Windows”选项卡下可以看到“Professional(专业版)”和“Community(社区版)”两种版本,其中社区版是免费的,点击其下的“Download”按钮下载即可。比较而言,社区版缺少对科学工具、网站开发、Web框架、远程开发、数据库等的支持,不过对于一个初学者来说,这些影响不大(图9)。

图片

图9 PyCharm专业版和社区版功能比较

双击下载所得的EXE文件启动安装向导,点击“Next”按钮进入下一步,根据向导提示选择安装位置,创建快捷方式以及关联py文件等,最后点击“Install”进行安装即可。安装完成,需要重新启动系统(图10)。

图片

图10 PyCharm社区版安装向导

重启系统后,点击“开始”按钮,在开始菜单顶部的最近添加项中点击“PyCharm Community Edition 2022.3.2 ”启动PyCharm。第一次使用PyCharm需要进行一些设置,首先显示用户协议,只有勾选“I confirm that I have read and accept the terms of this User Agreement”(同意该协议)才可以继续。单击“Continue”按钮进入数据共享页面,如果不希望自己的数据被搜集,可以点击“Don’t Send(不发送)”按钮继续,进入PyCharm的欢迎界面(图11)。

图片

图11 PyCharm欢迎界面

在“Projects”选项卡下点击“New Project”按钮新建一个项目,接下来设置新项目的保存位置和名称(Location)。另外我们还得给PyCharm选定一个Python解释器,本例中笔者勾选了“New environment using”项,选择“Virtualenv”,可以看到其所用的解释器正是前文所安装的Python.exe(图12)。

图片

图12 PyCharm新建项目窗口

设置完毕,点击“Create”按钮即可进入PyCharm主界面,可以看到新项目中已经自动生成了一个包含多行代码的Python文件“main.py”,这是因为本例在新建项目窗口中笔者勾选了“Create a main.py welcome script”项。点击菜单命令“Run→Run ‘main.py’”,或者按Shift+F10快捷键,主界面下方即可实时运行该程序(图13)。

图片

图13 包含了预置文件的PyCharm文档

我们可以在此项目中添加新的文件。点击菜单命令“File→New”打开新建对话框,可以选择多种文件类型,如网页文件、资源文件等,这里笔者选择创建Python文件(图14)。

图片

图14 PyCharm可以创建多种类型的文件

接下来为新文件取一个名称,我们继续以上文中的斐波纳契数列为例,所以将文件名设置为“Fibonacci”,按回车键回到主界面,输入上文中斐波纳契数列的示例代码,然后点击菜单命令“Run→Run”,在弹出的窗口中单击刚刚创建的“Fibonacci.py”即可运行它并在主界面下方显示出运行结果了。在手动输入代码时,能够明显感受到PyCharm的智能提示、自动补全、代码检查、快速修复等功能的强大,可以大大提高工作效率(图15)。

图片

图15 PyCharm的智能提示和自动补全功能

PyCharm功能丰富,很难在一遍短文中讲清楚,本文我们只需了解它的基本使用方法就够了。下面我们将着重分析Python的语法和程序结构。

Python的数据类型和数据结构

计算机科学领域有一个著名的公式:计算机程序=数据结构+算法。这一公式表明,数据结构是程序的核心,而算法是解决问题的步骤。所以我们在学习某一编程语言的时候,很有必要先了解一下它的数据类型和数据结构。

Python支持各种数据类型和数据结构,它们具有不同的属性和特性,可以用于不同的任务。下面是Python中常用的数据类型和数据结构的介绍。

Python简单数据类型常见的有以下几种(图16):

1、整数类型(int)

整数类型是Python中最基本的数据类型之一。它代表整数值,可以是正数、负数或零。在Python中,整数没有大小限制。

2、浮点数类型(float)

浮点数类型代表实数值,即包含小数点的数字。在Python中,浮点数也没有大小限制。

3、布尔类型(bool)

布尔类型代表真和假两个值,分别用True和False表示。布尔类型通常用于条件判断和循环控制中。

4、字符串类型(str)

字符串类型代表文本,即一系列字符的序列。字符串用单引号、双引号或三引号表示。三引号可以将多行文本括起来。Python中的字符串是不可变的,也就是说,一旦创建了字符串,就不能修改它的值。

图片

图16 Python中常见的数据类型示例

Python常见的数据结构有以下几种(图17):

1、列表(list)

列表是Python中最常用的数据结构之一,它是一个有序、可变的集合。列表中的元素可以是不同的数据类型。可以使用索引等操作来访问和修改列表中的元素。列表用中括号“[]”表示。

2、元组(tuple)

元组是另一个有序的集合,它是不可变的。元组中的元素可以是不同的数据类型。与列表不同,元组不能修改。元组用小括号“()”表示。

3、集合(set)

集合可以包含不同的元素,它是无序的,没有重复的值。集合可以用于集合运算,例如并集、交集和差集。集合用大括号“{}”表示。

4、字典(dict)

字典是Python中的映射类型,它是无序的键值对集合,没有重复的值。每个键都必须是唯一的,但值可以重复。可以使用键来访问和修改字典中的值。字典也用中括号“{}”表示,只是其中的数据都是键值对形式。

图片

图17 Python常见的数据结构示例

以上只是Python中最基本和最常用的数据类型及数据结构。除此之外,Python还有其他一些数据类型,例如字节类型(bytes)、字节数组(bytearray)、内存视图(memoryview)、范围类型(range)、空类型(none)等等,这里不再一一细述。熟悉这些数据类型和数据结构的特性和用法,可以帮助我们更好地编写Python程序。

Python变量及赋值

如前文所述,计算机程序就是数据+算法。当一个程序运行时,其相关数据被加载到内存中。内存如同一个大仓库,被分割为一个个小库房。当程序需要使用某个库房时,首先要做一个声明,表示要占用该库房,并为其贴上一个标签。用编程术语来说,就是“声明”了一个“变量”。声明变量后,就可以在里面储存各色货物(数据)了,编程术语称之为“赋值”,这一操作通过等号运算符“=”来实现,等号左侧为变量名称,等号右侧即赋予该变量的数据。以下代码显示了Python中的几种赋值方式:

x = 1

x += 1

x, y, z = 1, 2, “Hello!”

x = y = z = 99.9

第1种是基本赋值,使用“=”将值赋给变量。

第2种是增量赋值,将一个值添加到变量的现有值中。假设变量x的初始值为1,那么“x += 2”就将x的值变成了1加2等于3了。这其实是一种复合运算符赋值,如果将等号前的加号换成减号(x -= 2)则x将被赋值为1减2等于“-1”,如果将加号换成乘号(x *= 2)将得到1乘2等于2的值,以此类推。

第3种是多元赋值,如果需要赋值的变量很多,可以将它们放到一行中进行赋值,只需用逗号将每个变量隔开即可,等号后面各变量对应的赋值也同样用逗号隔开。

第4种是链式赋值,适用于将同样一个数据同时赋值给多个变量。

理论上来说变量名可以由任意字符组成,不过Python对变量命名实际还是有一定限制的,规则要求:变量名只能由字母、数字和下划线组成,且不能以数字开头,另外变量名不能是Python关键字。比如“num_01”是合法变量名,而“01_num”则是非法变量名。再比如“my_var_name”是合法的,而带空格的“my var name”则是非法的。另外像“if”、“while”、“for”等Python所保留的关键字是不能用来做变量名的。对于Python变量名还有一点需要注意,就是它是区分大小写的,像“mytime”和“myTime”,这实际上是两个变量。

变量还有一个重要属性,即变量的类型,它规定了变量能够储存什么样的数据。变量类型即上文所介绍的各类数据类型。其实所谓布尔类型(bool)、整数类型(int)、浮点数类型(float)、字符串类型(str)等等,只是一个形象说法,其本质就是定义了该变量占用多大的空间,比如1个布尔变量只占用1位空间,而一个整数变量则需要8位(1字节)空间。其他编程语言,比如C++、Java等,声明一个变量时需要明确声明其数据类型,而Python则省略了这一步,它直接通过所赋值的数据来自动确定该变量的类型,比如“x = 1”自动将x设置为整数类型,而“x = 99.9”则自动将x设置为浮点数类型。

Python表达式和运算符

如果说变量是程序的“词汇”,那么表达式就是程序的“句子”。词汇量再丰富,不把它们组织成句子就毫无意义。Python中的表达式,是指由运算符、操作数(变量和值)和函数调用一起构成的组合,用以计算某种值的的公式。表达式总是会被计算并返回一个结果。

运算符是构成表达式的重要元素,它相当于粘合剂将数据连接到一起,作为算法的“执行者”它对变量和值进行操作。Python中的运算符大致分为以下七大类。

1、算术运算符:这类运算符执行基本的算术运算,如加(+)、减(-)、乘(*)、除(/)、模(%)和取幂(**)。以下代码中,首先声明了a、b两个整数变量并分别赋值,然后对它们依次进行了加、除、模等算术运算,并通过print函数打印出运算结果(见其后的注释语句,下同)。

# Arithmetic operators

a = 5

b = 2

print(a + b) # Output: 7

print(a / b) # Output: 2.5

print(a % b) # Output: 1

2、比较运算符:这类运算符比较两个值并返回一个布尔值(True或False)。它们包括等于(=)、不等于(!=)、大于(>)、小于(<)、大于或等于(>=)和小于或等于(<=)。以下代码首先声明了x、y两个整数变量并分别赋值,然后依次进行了大于和等于这两种比较运算,其计算结果,x大于y是对的,所以返回结果True(真),而x==y显然是错误的,所以返回结果为Flase(假)。

# Comparison operators

x = 10

y = 5

print(x > y) # Output: True

print(x == y) # Output: False

3、逻辑运算符:这类运算符对布尔值执行逻辑操作。它们包括逻辑与(AND)、逻辑或(OR)和逻辑非(NOT)。以下代码首先声明了a、b两个布尔变量,分别赋值为True(真)和Flase(假)。同一件事不可能同时又真又假,这个判断显然是错误的,所以逻辑与运算“a and b”返回的结果是False(假)。而一件事或者是真或者是假,必居其一,这个判断是正确的,所以逻辑或运算“(a or b)”返回的结果为True(真)。

# Logical operators

a = True

b = False

print(a and b) # Output: False

print(a or b) # Output: True

4、位运算符:这类运算符对二进制值执行位操作。包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)、右移(>>)。以下代码中,首先声明了x、y两个整数变量,不过它们的赋值采用的二进制,所以数字前面加上了“0b”标志,其中二进制的1010等于十进制的10,二进制的1100等于十进制的12。最后两行代码分别对两个变量进行了按位与以及按位或运算,得到了8和14的运算结果。

# Bitwise operators

x = 0b1010 # Binary representation of 10

y = 0b1100 # Binary representation of 12

print(x & y) # Output: 0b100 (binary representation of 8)

print(x | y) # Output: 0b1110 (binary representation of 14)

5、赋值运算符:这类运算符为变量赋值。上文已有详细介绍,此处不再赘述,下面仅举一个增量赋值的简单示例,“a += 2”表示在原有的值5之上再加2,所以最终赋值结果是7。

# Assignment operators

a = 5

a += 2

print(a) # Output: 7

6、标识运算符:这类运算符比较两个标识符的存储单元(内存地址),判断它们是不是引用自同一个对象(x is y),类似id(x) == id(y),如果引用的是同一个对象则返回True,如果不是则返回False。反之,则判断两个标识符是不是引用自不同的对象(x is not y)。以下代码首先声明了一个列表变量,接着又将该变量的地址赋值给了变量y,这两个变量实际指向的是同一个内存地址,所以“x is y”的标识运算结果为True(真)。反之,变量z虽然也是一个列表,并且其值和x相同,但它们并不在同一个内存地址上,所以“x is z”的标识运算结果为False(假)。

# Identity operators

x = [1, 2, 3]

y = x

z = [1, 2, 3]

print(x is y) # True

print(x is z) # False

7、成员关系运算符:这类运算符检查值是否为序列或集合的成员,它们包括in和not in。以下代码,通过“in”运算符指出2是列表numbers的成员,并以“not in”运算符指出6不是列表numbers的成员,这两个运算都是对的,所以返回的结果都为True(真)。

# Membership operators

numbers = [1, 2, 3, 4, 5]

print(2 in numbers) # Output: True

print(6 not in numbers) # Output: True

除了以上运算符表达式外,Python还有字符串表达式、函数调用表达式,以及针对列表、元组和字典进行运算的表达式。每一类表达式都有各自的特色,它们是编程的重要组成部分,理解它们如何工作对于编写有效的代码至关重要。

表达式是用来计算的,但是如何控制计算的流程和逻辑以实现特殊的算法,就需要用到控制语句了。和其他编程语言一样,Python的控制语句主要有三大类:顺序语句、条件语句(if语句)和循环语句(for语句和while语句)。其中顺序语句比较容易理解,即从先到后按顺序一条一条执行代码命令,我们上面的示例基本都是顺序语句。接下来我们重点介绍条件语句和循环语句。

条件语句

条件语句用于根据条件决定程序的执行路径,通常是实现分支选择。它的基本语法如下:

if condition:

# 如果condition为True,则执行这里的语句

elif condition2:

# 如果condition为False,但是condition2为True,则执行这里的语句

else:

# 如果上述所有条件都为False,则执行这里的语句

Python的条件语句使用if、elif和else关键字,其中if语句是必须的,elif和else语句是可选的。条件语句中的condition和condition2可以是任何返回布尔值的表达式,例如比较操作、逻辑操作或函数调用等。

下面是一个简单的例子,演示如何使用条件语句判断一个数是正数、负数还是零:

num = 5

if num > 0:

print(“这个数是正数”)

elif num == 0:

print(“这个数是零”)

else:

print(“这个数是负数”)

在这个例子中,如果num大于0,则打印出“这个数是正数”;否则,如果num等于0,则打印出“这个数是零”;当num小于0时,打印出“这个数是负数”。

注意,Python中缩进非常重要,因为它是区分代码块的方式。条件语句中的每个代码块必须缩进相同的空格数,通常是四个空格。

循环语句

循环语句用于重复执行一段代码。Python提供了两种循环语句:for循环和while循环。

for循环用于遍历序列(例如列表、元组、字符串等)中的每个元素。for循环的基本语法如下:

for variable in sequence:

# 在这里执行循环体代码

其中,variable是一个变量名,用于存储序列中当前遍历到的元素;sequence是一个序列,可以是列表、元组、字符串等。for循环将会遍历sequence中的每个元素,并将其赋值给variable,然后执行循环体代码,直到遍历完所有元素。

下面这个简单的例子演示了如何使用for循环遍历一个列表:

numbers = [1, 2, 3, 4, 5]

for num in numbers:

print(num)

这个例子中我们定义了一个列表numbers,然后使用for循环遍历列表中的每个元素,并将其赋值给变量num,最后打印出num的值(图18)。

图片

图18 for循环遍历列表后输出

while循环重复执行一段代码,直到指定的条件不再满足。while循环的基本语法如下:

while condition:

# 在这里执行循环体代码

其中,condition是一个返回布尔值的表达式。只要condition为True,while循环就会一直执行循环体代码,直到condition变为False为止。

下面这个例子演示了如何使用while循环计算1到10的和:

total = 0

i = 1

while i <= 10:

total += i

i += 1

print(“1到10的和为:”, total)

本例我们定义了变量total和i,然后使用while循环重复执行计算1到10的和的代码,直到i大于10为止,最后打印出计算结果(图19)。

注意,在使用while循环时,必须确保条件可以在某个时刻变为False,否则循环将会无限执行下去,导致程序卡死。可以使用break语句或者修改循环变量的值来结束循环。

图片

图19 while循环演示

Python函数定义和调用

函数是一组执行特定任务的代码,它可以重复使用,从而提高代码的重用性和可读性。在Python中,函数定义通常为以下格式:

def function_name(parameters):

“”"

Docstring:函数的文档字符串,用于描述函数的用途和参数。

“”"

# code block to be executed

return value # 可选

上述定义中,def是函数定义的关键字;function_name是函数的名称,由字母、数字和下划线组成;parameters是函数的参数,这是可选的,可以是零个或多个;Docstring是函数的文档字符串,用于描述函数的用途和参数,也是可选的;return是函数的返回值,同样也是可选的。

下面介绍一个简单的Python函数示例:

def greet(name):

“”"

此函数对作为参数传送的人表达欢迎。

“”"

print("嗨, " + name + “,欢迎光临!”)

greet(“韩梅梅”)

本例定义了一个名为greet的函数,它带有一个参数name,用于向函数传递一个名称。函数的主体包括一个打印语句,它将问候语与传递的名称一起打印。函数定义后,需要调用它才能够执行,所以代码的最后是函数调用语句,并传递了一个名称“韩梅梅”(图20)。

图片

图20 Python函数定义和调用

这只是一个简单的例子,函数可以执行比这更复杂的任务。函数的优点之一,就是它们可以帮助你将代码组织成更小、更易于管理的模块,并将代码分解为可维护的部分。函数还可以使用return语句返回值,允许将计算结果传递回调用代码。

Python的程序结构

上面学习了Python的基础知识,现在就让我们来了解一下完整的Python程序文件是什么样。一般来说,Python的程序结构通常由以下几个部分分组成。

1、导入模块:在程序的开头,我们通常需要导入需要使用的模块。这些模块包含Python内置的模块,也包括第三方库和自定义模块。例如:

import math

import numpy as np

from my_module import my_function

2、全局变量和常量:在程序的顶部,通常定义一些全局变量和常量。这些变量可以在程序的任何地方访问。例如:

PI = 3.14159

name = “John”

3、函数定义:在程序的中间通常定义各种函数,用于执行特定的任务。

4、主程序代码:程序底部通常编写主程序代码,用于执行程序的主要功能。主程序代码可以调用导入的模块、全局变量和常量以及定义的函数。例如:

import math

PI = 3.14159

def area_of_circle(radius):

return PI * radius ** 2

def main():

r = 5

area = area_of_circle®

print(“The area of the circle with radius”, r, “is”, area)

if name == ‘main’:

main()

本例我们定义了一个计算圆的面积的函数area_of_circle(),然后在主程序代码中使用该函数计算圆的面积并输出结果。

注意,在这个例子中,我们使用“if name == ‘main’:”语句来检查是否在运行当前模块。如果模块是主程序运行的,它将执行main()函数,否则将忽略它。这个语句通常用于避免在模块被导入时执行一些不必要的代码。

总之,在Python中,程序结构的规范化编写有助于使代码更易于阅读、理解和维护。对于大型项目,通常需要更复杂的程序结构和更具体的组织方式,例如使用面向对象编程。

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

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

相关文章

ThreadLocal精讲

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

并行编程解决什么问题?

多线程爬虫是指通过多个线程并发地请求网页和解析响应&#xff0c;以提高爬虫的效率和速度。在 Python 中可以使用 threading、Queue 和 requests 等模块来实现。 并行编程是一种利用多个处理器/内核/线程来同时执行代码的编程方式。它可以解决以下几个问题&#xff1a; 提升程…

python卸载和安装

python卸载 进入电脑控制面板&#xff0c;点击卸载程序 搜索python,如果之前是安装成功的并且没用安装其它相关软件&#xff0c;应该会出现下图所示的两个&#xff0c;分别点击卸载 等待其卸载完毕 卸载结束 python下载 进入官网鼠标放在downloads下出现选项框后选择对应型号…

静态链接库顺序问题

前言 最近遇到了一个非常奇怪的问题&#xff0c;编译时竟因为链接库的顺序不同&#xff0c;就有完全不同的结果。代码非常简单如下所示&#xff1a; #include "muduo/net/EventLoop.h"int main() {muduo::net::EventLoop loop1;muduo::net::EventLoop loop2;return…

Tomcat之多JAVA环境JVM版本查看及使用优先级

一、前言 业务系统包含PC端和移动端&#xff0c;移动端为微信小程序。在小程序客户端发送消息未得到回应&#xff0c;查询系统后台日志发现报错日志。JDK或者JRE中自带的“local_policy.jar ”和“US_export_policy.jar”是支持128位密钥的加密算法&#xff0c;而当我们要使用2…

Linux开发工具vim篇

文章目录 &#x1f447;0. 前言&#x1f449;1.yum软件包管理器&#x1f44f;1.1 yum三板斧&#x1f44c;查看&#x1f44c;安装&#x1f44c;卸载 &#x1f44f;1.2 拓展yum源 &#x1f44d;2. vim编辑器&#x1f90f;2.1 vim基本概念&#x1f90f;2.2 vim基本操作&#x1f90…

电路仿真软件LTspice 使用教程

一、LTspice 特点 1、免费 2、电源快速仿真 3、涵盖大量ADI产品模型 二、获取方式 LTspice信息中心 | 亚德诺半导体 如下图所示&#xff0c;根据操作系统&#xff0c;下载对应的安装包安装即可。 软件打开界面如图&#xff1a; 三、运行演示电路 一、官网下载 LTspice演…

一文读懂kubernetes部署:网关部署

部署网关 如您需要创建SSL(HTTPS)站点请先参考SSL证书的创建创建好secret 修改Ingress配置域名 首先我们要先根据域名情况更改ingress配置情况&#xff1a; 非SSL站点 vi/opt/kubernetes/gateway/ingress.yaml SSL站点 创建secret kubectl-nns-javashopcreatesecrettlsxxx-se…

Caffeine本地缓存

1、Caffine简介 简单说&#xff0c;Caffine 是一款高性能的本地缓存组件 由下面三幅图可见&#xff1a;不管在并发读、并发写还是并发读写的场景下&#xff0c;Caffeine 的性能都大幅领先于其他本地开源缓存组件 2、常见的缓存淘汰算法 2.1、FIFO 它是优先淘汰掉最先缓存的数据…

SQL优化的方法

&#xff08;1&#xff09;建立物化视图或尽可能减少多表查询。 &#xff08;2&#xff09;以不相干子查询替代相干子查询。 &#xff08;3&#xff09;只检索需要的列。 &#xff08;4&#xff09;用带in的条件子句等价替换or子句。 &#xff08;5&#xff09;经常提交com…

如何科学地利用MTTR优化软件交付流程?

谷歌提出的衡量 DevOps 质量的 DORA 指标让 MTTR&#xff08;平均恢复时间&#xff09; 名声大振。在本文中&#xff0c;你将了解到 MTTR 的作用、为什么它对行业研究很有用、你可能被它误导的原因以及如何避免 MTTR 产生的弊端。 MTTR 究竟是在测量什么&#xff1f; MTTR …

【服务器】springboot服务端接口公网远程调试 - 实现HTTP服务监听

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

chatgpt赋能python:Python中如何删除:最全面的教程

Python中如何删除&#xff1a;最全面的教程 在Python编程中&#xff0c;许多情况下需要对数据进行操作&#xff0c;其中一种最基本的操作之一是删除。本文章将是一个关于Python中如何删除的最全面的教程。我们将会介绍Python中删除的概念、各种删除方法、删除前后的注意事项以…

同元自主可控半实物仿真从方案到实践

千寻万觅待花开 在日益激烈的市场竞争环境下&#xff0c;新产品的开发和面世遇到更高的要求和挑战&#xff0c;市场对其可靠性和稳定性的要求也日益提高。完全基于软件仿真的开发过程只实现了系统结构及原理、算法的验证&#xff0c;最终样机硬件系统并未进行仿真测试或者进行仿…

一寸照片的尺寸是多少?证件照尺寸如何修改?

一寸证件照是我们日常生活中非常常用的证件照。无论是办理身份证、驾驶证、护照还是其他证件&#xff0c;都需要提供一寸证件照。一寸证件照是指照片尺寸为2.5cm3.5cm的照片&#xff0c;通常要求符合一定的标准。但是大家在需要使用一寸证件照时&#xff0c;发现自己的证件照尺…

基于微信小程序制作一个记账小工具

你不理财,财不理你,制作一个记账小程序对自己的收入/支出明细进行管理,守护好自己的钱袋子。 一、小程序1.1 项目创建1.2 首页1.3 收支报表页1.4 记账提交页1.5 记账列表页

Transformer升级之路:一种全局长度外推的新思路

©PaperWeekly 原创 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP、神经网络 说到 Transformer 无法处理超长序列的原因&#xff0c;大家的第一反应通常都是 Self Attention 的二次复杂度。但事实上&#xff0c;即便忽略算力限制&#xff0c;常规的 Transformer 也无法处…

NetApp ONTAP Select 混合云存储解决方案

NetApp ONTAP Select 集敏捷性与经验证的数据管理功能于一体。 为什么选择 ONTAP Select 来实施混合云&#xff1f; -强大而敏捷的存储 既具备 ONTAP 软件的强大功能&#xff0c;也能够灵活地部署在远程办公室/后台位置以及数据中心外部的专用边缘环境中的商用硬件上。ONTAP …

python---逻辑运算符

and 并且 一假则假 or 或者 一真则真 not 逻辑取反 下面举例介绍上面代码的运行情况 运行结果如下: EG: 针对上述情况可以简化代码成如下: 短路操作 左侧为false右侧不在求值

如何使用 Megatron-LM 训练语言模型

在 PyTorch 中训练大语言模型不仅仅是写一个训练循环这么简单。我们通常需要将模型分布在多个设备上&#xff0c;并使用许多优化技术以实现稳定高效的训练。Hugging Face &#x1f917; Accelerate 的创建是为了支持跨 GPU 和 TPU 的分布式训练&#xff0c;并使其能够非常容易的…