第三篇:Python编程基础:掌握核心语法与开发技巧

Python编程基础:掌握核心语法与开发技巧

在这里插入图片描述

1 引言

在这个信息化迅速蔓延的世界中,Python语言如同钥匙一般开启了通往各种可能性的大门。无论你是数据科学家、网络工程师、机器学习专家,还是仅仅对自动化办公感兴趣的办公室人员,Python因其易于学习且功能强大的特性,成为了跨领域的首选编程语言。深入理解Python的基础语法对于任何希望通过编程解决问题的人来说都是至关重要的。本篇文章旨在通过精心编排的内容和实例,使读者能够系统地掌握Python编程的基础要领。

1.1 为什么学习Python基础语法是重要的

编程本质上是一种将逻辑思维转换为机器能够理解和执行的过程。在这个过程中,语法扮演着至关重要的角色。就像学习任何一种语言一样,掌握基本的语法规则是表达清晰思想的前提。在Python中,基础语法的学习不仅能让你快速编写出高效、可读性强的代码,更是深入学习高级编程技巧的基石。

Python的语法简洁直观,但这并不意味着它缺乏深度。实际上,Python的简洁性掩盖了其背后的复杂性和强大功能。例如,Python通过简单的赋值语句就能完成变量的声明和初始化,但实际上这背后涉及到内存管理、对象引用等多个层面的复杂机制。考虑以下Python代码示例:

x = 5

这条语句的背后,Python实际上执行了如下步骤:

  1. 为整数5分配内存空间。
  2. 创建变量x。
  3. 将变量x引用到内存中存储的整数5。

这个过程涉及到Python内存管理的核心概念,即引用计数(Reference Counting)和垃圾回收(Garbage Collection)。引用计数是Python用于管理内存的主要技术之一,它保持跟踪每个对象有多少引用指向自己。当一个对象的引用计数降到0时,意味着没有任何引用指向该对象,它占用的内存就会被垃圾回收器回收。这个概念可以通过下面的数学公式表示:

引用计数 ( o b j ) = ∑ 所有引用 1 引用指向obj \text{引用计数}(obj) = \sum_{\text{所有引用}} \mathbb{1}_{\text{引用指向obj}} 引用计数(obj)=所有引用1引用指向obj

其中, 1 引用指向obj \mathbb{1}_{\text{引用指向obj}} 1引用指向obj是一个指示函数,当引用指向对象obj时取值为1,否则为0。

1.2 阐述本篇文章的目标和期望给读者带来的收获

本篇文章的目标是使读者能够:

  1. 理解并应用Python的基础语法。
  2. 掌握Python的变量和数据类型及其转换。
  3. 使用控制流语句编写结构化的代码。
  4. 定义和调用函数,理解参数和返回值。
  5. 应用所学知识解决实际问题。

通过本篇文章的学习,你不仅将获得编写Python程序的能力,还将深入理解其背后的运作原理。我们期望通过具体的代码示例、可视化图表和深入的概念解释,让你在理论和实践之间架起一座桥梁。无论你的目标是开发复杂的软件系统、进行科学研究,还是简单地自动化日常任务,掌握Python的基础语法都将是你迈向成功的关键一步。

在这里插入图片描述

2 变量和数据类型

在Python这门富有表现力的编程语言中,了解变量和数据类型是构建任何程序的基础。变量可以被视作数据的容器,而数据类型则定义了这些数据的特征和我们可以对它们执行的操作类型。本节将深入探讨变量的本质、Python中的各种基本数据类型及其应用。

2.1 变量的概念及应用

变量是编程中一个基本概念,它用于存储信息,这些信息可以在程序运行时被创建、更新和检索。在Python中,变量无需声明即可创建,并且其类型是动态确定的。这意味着Python解释器会在运行时根据赋给变量的值自动推断出变量的类型。

实例:

# 变量赋值
count = 10  # count现在是一个整数型变量
pi = 3.14159  # pi是一个浮点数变量
name = "Alice"  # name是一个字符串变量
is_valid = True  # is_valid是一个布尔型变量

变量命名遵循一定的规则,例如,它们不能以数字开头,不能包含特殊字符,除了下划线(_),并且它们是区分大小写的。

2.2 Python的基本数据类型

Python中的基础数据类型包括整型、浮点型、字符串和布尔型。

整型(Integer)

整型是用于表示没有小数部分的数字。它们可以是正数、负数或零。在Python中,整数的长度不受限制,只受限于机器的内存。

实例:

# 整数
x = 25  # 正整数
y = -76  # 负整数
z = 0  # 零
浮点型(Float)

浮点型表示带有小数部分的数。它们在内部表示为二进制分数和指数。这意味着浮点数在Python中不总是完全精确的,因为它们依赖于IEEE 754标准。

实例:

# 浮点数
a = 4.2
b = -3.14

在数学公式中,浮点数可以用来进行各种操作,例如求圆的面积:
A = π r 2 A = \pi r^2 A=πr2
其中,( A ) 是面积,( \pi ) 是圆周率,( r ) 是圆的半径。

字符串(String)

字符串是由字符组成的序列,用于表示文本信息。它们在Python中用单引号(‘’)、双引号(“”)或三引号(‘’’ ‘’'或"“” “”")表示。

实例:

# 字符串
greeting = "Hello, World!"
multiline_string = """This is a 
multi-line string."""
布尔型(Boolean)

布尔型只有两个值:True和False。它们通常用于条件判断和循环控制。

实例:

# 布尔型
is_active = True
is_closed = False

2.3 实例代码:声明和使用不同数据类型

# 整型
age = 30# 浮点型
height = 5.9# 字符串
name = "John Doe"# 布尔型
has_license = True# 打印变量类型
print(type(age))  # 输出: <class 'int'>
print(type(height))  # 输出: <class 'float'>
print(type(name))  # 输出: <class 'str'>
print(type(has_license))  # 输出: <class 'bool'>

2.4 可视化图表

Python提供了强大的类型转换功能。我们可以使用内置的函数如int(), float(), str(), 和bool()来在不同的数据类型之间相互转化。

让我们通过一个简单的表格来展示这些类型转换:

FunctionDescriptionExample
int(x)Converts x to an integerint(3.8) -> 3
float(x)Converts x to a floatfloat("2.5") -> 2.5
str(x)Converts x to a stringstr(10) -> "10"
bool(x)Converts x to a booleanbool(0) -> False

在编程时了解和掌握这些数据类型对于编写有效率、可读性强和健壮性高的程序至关重要。我们将在接下来的章节中进一步深入控制流语句,理解它们如何利用这些数据类型来驱动程序逻辑。

在这里插入图片描述

3 控制流语句

在编程中,我们通常需要根据不同的情况来执行不同的代码,这就是控制流语句发挥作用的地方。控制流语句使得我们的程序不再是一条直线从上到下执行,而是根据一定的条件做出决策,或者多次执行某些任务—这是通过条件语句和循环语句来实现的。

3.1 条件语句(if-elif-else)

条件语句用于根据特定条件执行不同的代码块。在Python中,这种语句的基本形式是if-elif-else结构。

详细语法解释
if 条件1:# 条件1为真时执行的代码
elif 条件2:# 条件1不为真但条件2为真时执行的代码
else:# 上述条件都不为真时执行的代码

if后面跟着的条件可以是任何有效的Python表达式。如果该表达式的结果是True,则执行该条件下的代码块。

实例代码:做出简单决策的程序

假设我们需要编写程序来判断一个学生的成绩是否及格。在这里,我们将使用条件语句来实现:

grade = 75
if grade >= 90:print("优秀")
elif grade >= 60:print("及格")
else:print("不及格")

在这个例子中,如果grade变量的值大于等于90,控制台将打印“优秀”。如果grade的值在60到89之间,将打印“及格”。否则,将打印“不及格”。

3.3 循环语句(for循环和while循环)

编写程序时,我们经常需要重复执行一段代码。这就是循环语句的用武之地,它可以帮助我们进行数据处理和自动化任务。

循环的概念及其使用场景

循环语句能够一次又一次地执行相同的代码块,直到满足某个条件。Python中有两种主要的循环语句:for循环和while循环。

for循环通常用于遍历容器类型的数据结构(如列表或元组),或者在一个固定范围内执行代码块。

for 变量 in 序列:# 序列中每个元素执行一次代码块

while循环则会一直执行,直到指定的表达式不再为真。

while 条件:# 条件为真时重复执行代码块
实例代码:通过循环实现数据处理和自动化任务

假设我们有一个数字列表,我们想计算这些数字的平方和。我们可以使用for循环来实现:

numbers = [1, 2, 3, 4, 5]
sum_of_squares = 0
for number in numbers:sum_of_squares += number ** 2
print(sum_of_squares)

在这个例子中,for循环遍历列表numbers中的每个元素,并计算其平方和存储在sum_of_squares变量中。最终,控制台输出这个平方和。

如果我们想重复一个操作直到达到预设的条件,比如找到第一个能被7整除的正整数,我们可以使用while循环:

number = 1
while number % 7 != 0:number += 1
print(number)

这个while循环会一直增加number的值,直到它能被7整除。当找到这样的数字时,循环结束,打印结果。

3.3 可视化图表:展示不同控制流语句的执行流程

在理解控制流语句时,可视化的执行流程图是一个很有帮助的工具。它可以帮助我们更直观地理解程序是如何在不同条件下改变执行路径的。

if-elif-else语句为例,我们可以将其执行流程用流程图表示,其中包括决策点(条件判断)和不同的执行分支。

而对于循环语句,我们可以绘制出循环的开始、执行代码块、条件测试及循环结束的流程图,这有助于我们理解循环如何一遍遍地执行相同的代码块,直到达到某个条件。

3.4 进一步阅读:探索更复杂的控制流实现

在Python编程中,控制流语句的概念可以扩展到更加复杂的场景,例如嵌套循环(一个循环内部包含另一个循环)和递归(函数调用自身)。这些概念有助于解决更复杂的编程问题,但也增加了理解和调试的难度。

一旦掌握了基本的控制流语句,就可以尝试阅读更高级的主题,如递归算法的数学基础,或是如何利用迭代器和生成器简化复杂的循环逻辑。

在这里插入图片描述

4 函数定义和调用

在探索Python的世界中,函数扮演着绝不可忽视的角色。它们如同数学中的 f ( x ) f(x) f(x),将输入映射到输出,只不过在Python中,这种映射更为丰富和灵活。本节的焦点将集中在函数的定义和调用,为您的编程之旅增添一把利器。

4.1 什么是函数以及为什么要使用函数

函数,从数学的角度来看,是一种将输入(或称自变量)映射到输出(或称因变量)的关系。在Python中,函数是组织良好的,可重用的,用以实现单一,或相关联功能的代码段。

函数的使用,首先减少了代码重复。想象一下,如果需要在不同的程序中实现同样的功能,没有函数,就需要在每个地方重写代码。这不仅增加了工作量,更增加了维护成本和出错的风险。其次,它提高了程序的可读性。函数可以抽象出操作细节,使得代码更加清晰,更易于理解。最后,函数的使用也方便了协作。不同的人可以负责不同的函数,各自独立编写和测试。

4.2 函数的定义方法以及如何调用函数

在Python中,函数的定义使用def关键字,后面跟着函数名和括号内的参数列表,最后是冒号。函数体随后缩进开始。例如,我们定义一个简单的函数add来完成两数相加的功能:

def add(x, y):return x + y

其中,xy是参数,return语句后面的表达式x + y是函数的返回值。

函数定义后,可以通过其名称和一对括号来调用它,括号内填入参数值。如调用add函数:

result = add(2, 3)
print(result)  # 输出 5

4.3 参数和返回值的概念

参数是函数完成其功能所需要的信息,是函数的输入。而返回值则是函数处理后输出的结果。在上面的add函数例子中,参数是xy,返回值是它们的和。

Python中的函数可以没有返回值,也可以有多个返回值。无返回值的函数默认返回None。多个返回值时,实际上是返回了一个元组,这可以用来同时返回多个计算结果。

4.4 作用域理解(局部变量和全局变量的区别)

在Python中,变量的作用域决定了在哪里可以“看到”这个变量。局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。例如:

def my_function():local_var = 10  # 局部变量print(local_var)global_var = 20  # 全局变量my_function()  # 输出 10
print(global_var)  # 输出 20
# print(local_var) 会产生错误,因为local_var是局部变量,只能在my_function内部访问。

4.5 实例代码:创建并使用自定义函数解决实际问题

让我们看一个实际的例子:定义一个函数,计算一个列表中所有偶数的平方和。我们首先定义一个辅助函数来判断一个数是否为偶数,然后定义主函数来使用它:

def is_even(num):# 如果num模2等于0,说明是偶数return num % 2 == 0def square_of_evens(numbers):total = 0for num in numbers:if is_even(num):total += num ** 2return total# 使用我们的函数
numbers = range(1, 11)  # 创建一个1到10的列表
result = square_of_evens(numbers)
print(result)  # 输出偶数的平方和

4.6 进一步阅读材料:深入函数高级特性和装饰器

为了进一步提升你的函数使用技巧,推荐深入学习Python的高级函数特性,如默认参数、关键字参数、可变参数列表。此外,Python的装饰器(Decorator)是一种强大的函数修改工具,它允许你在不修改函数代码的前提下,增加函数的功能。

一个简单的装饰器示例如下:

def my_decorator(func):def wrapper():print("Something is happening before the function is called.")func()print("Something is happening after the function is called.")return wrapper@my_decorator
def say_hello():print("Hello!")say_hello()

在这个例子中,my_decorator是一个装饰器,它接受一个函数并返回一个新的函数。say_hellomy_decorator装饰,因此当我们调用say_hello()时,它会首先打印一条消息,然后执行say_hello原本的内容,最后再打印一条消息。

通过本篇文章,你将对Python函数的定义和调用有一个更深入的理解,并能够将这些知识应用到实际问题的解决中。记住,熟能生巧。不断练习是掌握函数这一强大工具的关键。

在这里插入图片描述

5 实战练习

在我们已经掌握了Python编程基础的核心语法与开发技巧之后,是时候将这些理论知识应用到实际项目中了。本节旨在通过一个综合实战练习,将之前学到的知识点串联起来,构建一个简单但完整的应用程序。我们将从需求分析开始,逐步深入到代码实现,并在最后给出几个扩展任务,鼓励大家在此基础上进行改进和创新。

5.1 综合练习:构建一个简单的天气查询应用

在这个练习中,我们将构建一个简单的天气查询应用程序。该程序允许用户输入一个城市名称,然后程序会查询并显示该城市当前的天气情况。为了简化示例,我们将使用一个免费的天气API服务(例如:OpenWeatherMap)来获取天气数据。

需求分析
  1. 用户能够通过命令行输入城市名称。
  2. 程序能够处理用户输入,向天气API发送请求。
  3. 程序能够解析API返回的数据,并以友好的格式展示给用户。

5.2 代码逐步解析

步骤1:获取用户输入

首先,我们需要一个方式来获取用户通过命令行输入的城市名称。在Python中,我们可以使用input()函数来实现这个功能。

city_name = input("请输入您要查询的城市名称:")

步骤2:构建API请求

为了向天气API发送请求,我们需要构建正确的请求URL。这通常需要API的基础URL加上必要的查询参数,比如城市名称和API密钥。

import requestsapi_key = "你的API密钥"
base_url = "http://api.openweathermap.org/data/2.5/weather?"
complete_url = f"{base_url}appid={api_key}&q={city_name}"

步骤3:发送请求并获取数据

使用requests库来发送HTTP请求,并获取返回的数据。

response = requests.get(complete_url)
weather_data = response.json()

步骤4:解析并展示数据

解析API返回的JSON数据,并以友好的方式展示给用户。在这个例子中,我们将展示城市天气、最高温度和最低温度。

if weather_data["cod"] == 200:weather = weather_data["weather"][0]["description"]temp = weather_data["main"]["temp"]print(f"{city_name}的当前天气状况为:{weather},温度为:{temp}度。")
else:print("未能获取到天气数据,请检查城市名称是否正确。")

5.3 扩展任务

  1. 数据可视化:尝试使用matplotlib库来绘制历史天气数据的温度变化图。
  2. 错误处理:增加异常处理逻辑,例如网络请求失败、API限制达到等情况。
  3. 功能扩展:增加更多功能,例如支持多城市查询、长期天气预报等。

通过这个实战练习,我们不仅复习了之前学到的知识,比如变量、数据类型、控制流语句以及函数的使用,还学习了如何与外部API进行交互和数据处理。希望通过这个例子,你能够对Python编程有更加深入的理解和应用。继续实践,不断探索Python的更多可能性!

在这里插入图片描述

6 总结和未来路径

在我们的编程旅程中,我们已经穿越了Python编程的广阔领域,从变量的基础概念到复杂的控制流语句,再到函数的魔法般的力量。这些都是Python语言核心的组成部分,是每个Python程序员必须掌握的基本工具。在这篇博客的最后部分,我们将总结前面章节的要点,并为你提供一个未来学习的蓝图,让你的Python技能更上一层楼。

核心概念和技能回顾

首先,让我们重温一下变量和数据类型。变量是编程中的一个基本概念,是存储信息的容器。在Python中,变量无需显式声明类型,它们的类型是动态赋予的。例如:

x = 42          # 整型(int)
y = 3.14        # 浮点型(float)
z = "Python"    # 字符串(str)
is_valid = True # 布尔型(bool)

每个类型都有其数学特性,例如整型数据支持标准的算术运算:

x + y = 42 + 3.14 x + y = 42 + 3.14 x+y=42+3.14

浮点数则涉及到更复杂的数学表示,它们在计算机内部是以二进制分数的形式表示的,如下所示:

3.14 ≈ 11.001001000011111101101 1 ( 2 ) 3.14 \approx 11.0010010000111111011011_{(2)} 3.1411.0010010000111111011011(2)

接着,在控制流语句部分,我们理解了程序根据特定条件如何改变其执行路径。条件语句的典型应用是决策制作:

if temperature > 30:print("It's a hot day.")
else:print("It's not a hot day.")

在这里,if-else 结构决定了根据 temperature 的值执行不同的代码。类似地,循环,如 whilefor 循环,提供了重复执行操作的能力,直到满足某个条件。例如,我们可以计算一个数列的和:

sum = 0
for i in range(1, 11):sum += i

这里,我们使用了求和公式的离散等价:

∑ i = 1 n i = n ( n + 1 ) 2 \sum_{i=1}^{n} i = \frac{n(n + 1)}{2} i=1ni=2n(n+1)

对于 n = 10,结果是 55,这与循环计算的结果相匹配。

函数定义和调用部分,我们学习了如何封装代码块以便重用和分发。函数不仅提高代码的可读性,还隔离了作用域,使得变量的管理更加可控。例如:

def greet(name):return f"Hello, {name}!"

在这里,greet 函数将一个字符串作为参数,并返回一个问候语。函数的作用域规则确保了 name 变量只在函数内部可见。

推荐后续学习的路径和资源

随着你对Python的掌握变得越来越深入,你将开始接触更高级的概念。例如,你可以学习类和对象,它们是面向对象编程的基础。Python的标准库也为你提供了广泛的模块和功能,如datetime模块处理日期和时间,collections模块提供了额外的数据结构,等等。

除了标准库,Python有一个庞大的第三方库生态系统。例如,NumPyPandas库极大地简化了数据分析和处理,而MatplotlibSeaborn库则用于数据可视化。

如果你对数据科学感兴趣,可能会需要学习统计基础机器学习算法。在这些领域,数学公式和概念扮演关键角色,比如线性回归的成本函数:

J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2 J(θ)=2m1i=1m(hθ(x(i))y(i))2

这里, J ( θ ) J(\theta) J(θ) 衡量预测值 h θ ( x ) h_{\theta}(x) hθ(x) 与实际值 y y y 之间的差异,我们的目标是调整参数 θ \theta θ 来最小化这个成本函数。

鼓励读者持续实践和深入探索Python的更多可能性

最后,我鼓励你继续编写代码,不断实践。不要害怕犯错,因为错误是学习过程中的宝贵资产。参与开源项目,阅读其他人的代码,尝试解决实际问题,这些都是提高编程技能的有效方式。

掌握了Python的基础后,无数的门就为你打开了。无论是开发网络应用程序,自动化日常任务,还是深入数据科学和人工智能的世界,Python都是一个强大的工具。记住,编程不仅是一种技术,它是一种艺术,是实现你想象力的手段。继续学习,继续创造,让Python成为你表达创意和解决问题的语言。

祝你在编程世界里的探险旅途中一帆风顺,不断发现新大陆。

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

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

相关文章

Linux 调度优先级

Linux中的每个任务都有其优先级。这个优先级的范围从-20到19。优先级越低&#xff08;-20&#xff09;&#xff0c;分配 给任务的CPU时间就越多。默认的优先级是0。 并非所有的任务都需要使用相同的优先级。交互式应用要求快速响应&#xff0c;通过 crontab 运行的后台…

Feign负载均衡

Feign负载均衡 概念总结 工程构建Feign通过接口的方法调用Rest服务&#xff08;之前是Ribbon——RestTemplate&#xff09; 概念 官网解释: http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign Feign是一个声明式WebService客户端。使用Feign能让…

实验7 利用三层交换机实现VLAN间路由

实验7 利用三层交换机实现VLAN间路由 一、 原理描述二、 实验目的三、 实验内容1.实验场景2.实验要求 四、 实验配置1.实验拓扑2.设备编址 五、 实验步骤1.配置IP地址2.交换机初始配置3.测试连通性4.配置S1的三层接口 一、 原理描述 在“单臂路由”方式实现VLAN间路由时&#…

Kafka 生产者应用解析

目录 1、生产者消息发送流程 1.1、发送原理 2、异步发送 API 2.1、普通异步发送 2.2、带回调函数的异步发送 3、同步发送 API 4、生产者分区 4.1、分区的优势 4.2、生产者发送消息的分区策略 示例1&#xff1a;将数据发往指定 partition 示例2&#xff1a;有 key 的…

playwright 使用

pip install playwright 是一个命令&#xff0c;用于通过 Python 的包管理工具 pip 安装 Playwright 库。Playwright 是一个用于端到端网页测试的库&#xff0c;支持多种浏览器&#xff0c;包括 Chromium、Firefox 和 WebKit。 执行 pip install playwright 命令后&#xff0c…

Android使用ProtoBuf 适配 gradle7.5 gradle8.0

ProtoBuf 适配 Gradle7.5 gradle-wrapper.properties 配置 distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zipProject&#xff1a;build.gradle: plugins {id com.android.application version 7.4.2 apply falseid com.android.library versio…

python-opencv实现最近邻插值和双线性插值对图片上采样

使用背景 当我们需要把图像进行放大或者缩小的时候&#xff0c;第一反应是使用resize()实现。很多情况下&#xff0c;我们会调用最近邻插值和双线性插值去放大图片&#xff0c;当然要说没有分辨率的损失那是不可能的&#xff0c;只能说在放大图片的过程中尽可能增加了图片的分…

React复习笔记

基础语法 创建项目 借助脚手架&#xff0c;新建一个React项目(可以使用vite或者cra&#xff0c;这里使用cra) npx create-react-app 项目名 create-react-app是React脚手架的名称 启动项目 npm start 或者 yarn start src是源文件index.js相当于Vue的main.js文件。整个…

C语言:一维数组、二维数组、字符数组介绍

数组 介绍一维数组定义应用方法初始化 举例示例结果 二维数组定义应用方法初始化 举例示例结果 字符数组定义应用方法初始化 举例示例结果分析 介绍 在C语言中&#xff0c;数组是一种基本的数据结构&#xff0c;用于存储一系列相同类型的数据。数组可以是多维的&#xff0c;最…

【嵌入式】Arduino IDE + ESP32开发环境配置

一 背景说明 最近想捣鼓一下ESP32的集成芯片&#xff0c;比较了一下&#xff0c;选择Arduino IDE并添加ESP32支持库的方式来开发&#xff0c;下面记录一下安装过程以及安装过程中遇到的坑。 二 下载准备 【1】Arduino IDE ESP32支持一键安装包&#xff08;非常推荐&#xff0…

miniTry:Python实现web搜索(全自动+程序操控)

声明&#xff1a;本问给出了全部代码--可以复现--亲测有效 :) [ 代码为图片--> 强制自己去敲一次 又不多] 1.打开网站&#xff1a; 2.利用id去定位到我们要进行输入的内容&#xff08;bing可以直接进行搜索&#xff0c;而csdn需要登录&#xff0c;所以我们用csdn做演示&…

python 使用flask_httpauth和pyjwt实现登录权限控制

最近需要用到&#xff0c;学习了一下记录 首先安装依赖 pip install Flask-HTTPAuth pyjwt passlib Welcome to Flask-HTTPAuth’s documentation! — Flask-HTTPAuth documentation Welcome to PyJWT — PyJWT 2.8.0 documentation Passlib 1.7.4 documentation — Passl…

Java8 Stream常见用法

Stream流的常见用法&#xff1a; 1.利用stream流特性把数组转list集合 //定义一个数组Integer[] array {5,2,1,6,4,3};//通过stream特性把数组转list集合List<Integer> list Arrays.stream(array).collect(Collectors.toList());//打印结果System.out.println(list);…

Docker深入探索:网络与资源控制、数据管理与容器互联以及镜像生成

目录 一、 Docker网络 &#xff08;一&#xff09;Docker网络实现原理 &#xff08;二&#xff09;Docker网络模式 1. Bridge网络&#xff08;默认&#xff09; 2. Host网络 3. None网络 4. Container网络 5. 自定义网络 二、资源控制 &#xff08;一&#xff09;cgr…

从递归角度串联二叉树-图论-动态规划

一、深度理解二叉树的前中后序遍历 二叉树遍历框架如下&#xff1a; void traverse(TreeNode* root) {if (root nullptr) {return;}// 前序位置traverse(root->left);// 中序位置traverse(root->right);// 后序位置 }先不管所谓前中后序&#xff0c;单看 traverse 函数…

分布式与一致性协议之CAP(五)

CAP 理论 如何使用BASE理论 以InfluxDB系统中DATA节点的集群实现为例。DATA节点的核心功能是读和写&#xff0c;所以基本可用是指读和写的基本可用。我们可以通过分片和多副本实现读和写的基本可用。也就是说&#xff0c;将同一业务的数据先分片&#xff0c;再以多份副本的形…

Rust中的函数指针

什么是函数指针 通过函数指针允许我们使用函数作为另一个函数的参数。函数的类型是 fn &#xff08;使用小写的 ”f” &#xff09;以免与 Fn 闭包 trait 相混淆。fn 被称为 函数指针&#xff08;function pointer&#xff09;。指定参数为函数指针的语法类似于闭包。 函数指…

如何在TestNG中忽略测试用例

在这篇文章中&#xff0c;我们将讨论如何在TestNG中忽略测试用例。TestNG帮助我们忽略使用Test注释的情况&#xff0c;我们可以在不同的级别上忽略这些情况。 首先&#xff0c;只忽略一个测试方法或测试用例。第二&#xff0c;忽略一个类及其子类中的所有情况。第三个是&#…

【深度学习】YOLOv5,烟雾和火焰,目标检测,防火检测,森林火焰检测

文章目录 数据收集和数据标注查看标注好的数据的脚本下载yolov5创建 dataset.yaml训练参数开始训练yolov5n训练训练后的权重下载gradio部署 数据收集和数据标注 搜集数据集2w张。 pip install labelme labelme 然后标注矩形框和类别。 下载数据请看这里&#xff1a; https:…

图像处理之Retinex算法(C++)

图像处理之Retinex算法&#xff08;C&#xff09; 文章目录 图像处理之Retinex算法&#xff08;C&#xff09;前言一、单尺度Retinex&#xff08;SSR&#xff09;1.原理2.代码实现3.结果展示 二、多尺度Retinex&#xff08;MSR&#xff09;1.原理2.代码实现3.结果展示 三、带色…