Python函数、类和方法

        大家好,当涉及到编写可维护、可扩展且易于测试的代码时,Python提供了一些强大的工具和概念,其中包括函数、类和方法。这些是Python编程中的核心要素,可以帮助我们构建高效的测试框架和可靠的测试用例。

        本文将探讨Python中的函数、类和方法的概念,并介绍它们在测试开发中的重要性和用途。我们将了解它们的基本概念、语法和使用方法,以及如何利用它们来提高代码的可维护性、可测试性和可读性。

首先,让我们从函数开始。

一、函数

        函数是一种在 Python 中定义和封装可重用代码块的结构。它们接受输入参数(可选),执行一系列操作,并返回结果(也可选)。函数在程序中的各个部分之间实现了代码的模块化和重用性,使得代码更加清晰、可维护和可扩展。

1、函数的定义

        在 Python 中,函数的定义以 def 关键字开始,后面跟着函数名、参数列表和冒号。函数体内的代码块缩进表示它们属于函数的一部分。

函数的定义通常遵循以下格式:

def function_name(parameter1, parameter2, ...):# 函数体代码# 可选的返回语句
  • function_name 是函数的名称,应该具有描述性并符合命名规范。
  • parameter1, parameter2, ... 是函数的参数列表,用于接收输入值。参数可以是必需的(必须提供值)或可选的(有默认值)。
  • 函数体内的代码块包含函数的实际操作。它可以包括各种语句、控制结构和其他函数调用。
  • return 语句用于指定函数的返回值。如果没有 return 语句,函数将默认返回 None

2、函数的调用

        函数的调用是通过写出函数名和传递参数来完成的。函数调用将控制转移到函数体内部,执行其中的操作,并根据需要返回结果。

以下是一个简单的函数示例,用于计算两个数的和:

def add_numbers(a, b):sum = a + breturn sumresult = add_numbers(3, 5)
print(result)  # 输出:8

        在这个示例中,我们定义了一个名为 add_numbers 的函数,它接受两个参数 a 和 b。函数体内部将这两个参数相加,并使用 return 语句返回结果。通过调用 add_numbers(3, 5),我们将实际的参数值传递给函数,并将返回的结果赋给 result 变量。最后,我们打印出结果 8

3、函数的参数

        函数可以接受零个或多个参数,用于接收输入值并在函数体内部进行处理。参数可以是必需的或可选的,并且可以有默认值。

  • 必需参数:必需参数在函数调用中是必须提供的。函数体内的操作可以使用这些参数进行计算或处理。
  • 默认参数:默认参数在函数定义中给出了默认值。如果函数调用中没有为这些参数提供值,将使用默认值。
  • 可变参数:有时候,我们不确定函数将接收多少个参数。在这种情况下,可以使用可变参数来接收任意数量的参数。在函数定义中,使用 *args 表示可变参数,它将参数打包成一个元组。
  • 关键字参数:关键字参数允许我们在函数调用中以键值对的形式传递参数。在函数定义中,使用 **kwargs 表示关键字参数,它将参数打包成一个字典。

以下是一个示例函数,演示不同类型的参数:

def example_function(required_param, default_param="default", *args, **kwargs):print("Required parameter:", required_param)print("Default parameter:", default_param)print("Variable arguments:", args)print("Keyword arguments:", kwargs)example_function("Hello")

输出结果如下:

        在这个示例中,example_function 接受一个必需参数 required_param,一个默认参数 default_param(具有默认值 "default"),一个可变参数 args(作为空元组)和一个关键字参数 kwargs(作为空字典)。

4、函数的返回值

        函数可以使用 return 语句返回结果。当函数执行到 return 语句时,它将立即退出函数并返回指定的值。如果没有指定 return 语句,函数将默认返回 None

以下是一个计算阶乘的函数示例,演示函数如何返回结果:

def factorial(n):if n == 0:return 1else:return n * factorial(n - 1)result = factorial(5)
print(result)  # 输出:120

        在这个示例中,factorial 函数使用递归的方式计算给定数的阶乘。如果输入值为 0,函数直接返回 1。否则,它将递归调用自身并返回 n * factorial(n - 1) 的结果。

5、函数的作用域

        函数内部定义的变量具有函数作用域。这意味着它们只在函数内部可见,并且在函数外部不可访问。函数可以访问函数参数、局部变量和全局变量。

以下是一个示例函数,演示变量作用域的概念:

def example_function():local_var = "local"print("Local variable:", local_var)print("Global variable:", global_var)global_var = "global"
example_function()
print("Global variable:", global_var)

输出结果如下:

        在这个示例中,example_function 中定义了一个局部变量 local_var,它在函数内部可见。函数可以访问全局变量 global_var。在函数内部打印局部变量和全局变量的值后,我们在函数外部再次打印全局变量的值。

        函数是 Python 编程中的重要概念,它们提供了代码的封装和重用机制。通过定义函数,我们可以将复杂的操作分解为更小的可管理的部分,并在需要时重复使用它们。函数使代码更加模块化、可读性更高,并且提高了代码的可维护性和可扩展性。

5、Lambda函数

        Lambda函数是一种匿名函数,也称为"lambda表达式"。它是一种简洁的函数定义方式,通常用于需要一个简单函数的地方,而不需要为该函数命名或在其他地方多次使用。

Lambda函数的语法如下:

lambda arguments: expression

        其中,lambda关键字表示定义一个lambda函数,arguments是函数的参数,可以是一个或多个参数,用逗号分隔。expression是函数的表达式,定义了函数的逻辑操作,并返回结果。

Lambda函数具有以下特点:

  1. 匿名性: Lambda函数是匿名的,即没有显式的函数名称。它们适用于需要一个简单函数的场景,而不需要在其他地方多次使用该函数。

  2. 简洁性: Lambda函数的语法非常简洁,可以在一行代码中定义函数,不需要使用def关键字来定义函数。

  3. 单行表达式: Lambda函数通常用于表示单行的表达式,而不是复杂的函数体。这是因为Lambda函数的主要目的是提供一种简洁的方式来定义简单的功能。

使用Lambda函数的常见场景包括:

  1. 函数作为参数: 在函数式编程中,常常需要将函数作为参数传递给其他函数。Lambda函数可以在不定义具体函数的情况下,直接在函数调用时创建一个临时的函数作为参数传递。

  2. 简化代码: 当某个功能只需要一个简单的操作或转换时,使用Lambda函数可以避免定义一个完整的函数,使代码更为简洁。

下面是一些示例来说明Lambda函数的使用:

# 示例 1: Lambda函数用作简单的加法操作
add = lambda x, y: x + y
result = add(3, 5)  # 结果为 8# 示例 2: Lambda函数用作列表排序的键函数
students = [{"name": "Alice", "age": 20},{"name": "Bob", "age": 18},{"name": "Charlie", "age": 22}
]
students.sort(key=lambda student: student["age"])  # 按照年龄排序# 示例 3: Lambda函数用作map函数的参数
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))  # 对列表中的每个元素进行平方操作

        需要注意的是,尽管Lambda函数在某些情况下能够简化代码,但过度使用Lambda函数可能会导致代码变得难以理解和维护。对于复杂的函数逻辑或需要多次复用的函数,建议使用传统的函数定义方式(使用def关键字)来提高代码的可读性和可维护性。

6、使用函数的注意事项

        在使用函数时,有一些需要注意的点,以确保函数的正确性和可维护性。以下是一些主要的注意事项:

  1. 函数的命名和命名规范:为函数选择一个描述性的名称,能够清晰地表达其功能和目的。遵循命名规范,使用小写字母和下划线来分隔单词,以提高代码的可读性和一致性。

  2. 函数的参数传递:函数的参数传递可以是按值传递(对于不可变对象)或按引用传递(对于可变对象)。理解参数传递的方式对于正确处理函数内部的变量和外部变量非常重要。

  3. 函数的文档字符串:为函数提供文档字符串(docstring)是良好的编程习惯。文档字符串应该清楚地描述函数的功能、参数、返回值和使用方法,以便其他开发人员能够理解和正确使用函数。

  4. 函数的返回值:确保函数按照预期返回正确的结果。根据函数的设计,确定是否需要返回一个值,以及返回的类型和格式。

  5. 函数的副作用:函数的副作用是指函数对于函数外部的状态或变量进行了修改。在函数设计中,需要明确函数是否具有副作用,并清楚地记录和管理这些副作用,以避免意外的行为或数据损坏。

  6. 函数的异常处理:在函数内部,应该考虑可能发生的异常情况,并适当地处理这些异常。可以使用 try-except 块来捕获和处理异常,以确保函数在出现问题时具有适当的行为。

  7. 函数的测试和调试:在使用函数之前,应该对函数进行充分的测试和调试,以确保其行为符合预期。编写测试用例来覆盖不同的情况和边界条件,并验证函数的输出是否正确。

  8. 函数的可读性和可维护性:编写清晰、简洁和易于理解的函数是很重要的。遵循良好的编码规范,使用适当的缩进、注释和命名约定,以提高函数的可读性和可维护性。

  9. 函数的设计原则:了解和遵循函数设计原则,如单一责任原则(SRP)和开放封闭原则(OCP),以确保函数具有良好的模块化和可扩展性。

  10. 函数的性能考虑:对于需要频繁调用的函数或处理大量数据的函数,需要考虑其性能。优化函数的算法和数据结构,避免不必要的计算和内存消耗,以提高函数的性能。

        使用函数时需要注意函数的命名、参数传递、文档字符串、返回值、副作用、异常处理、测试和调试、可读性和可维护性、设计原则以及性能等方面。遵循这些注意事项可以提高代码的质量、可靠性和可维护性,同时提升开发效率。

二、方法和类

        在Python中,类(Class)是一种面向对象编程的基本概念,用于创建对象的蓝图或模板。类定义了对象的属性(变量)和行为(方法),以及对象之间的关系。类的定义使用关键字class,后跟类的名称,通常采用驼峰命名法。类中可以包含属性和方法。

        属性(Attributes)是类中的变量,用于存储对象的状态或特征。属性可以是类级别的(类属性)或实例级别的(实例属性)。类属性是类的所有实例共享的,而实例属性是每个对象独立拥有的。

        方法(Methods)是类中的函数,用于定义对象的行为或操作。方法可以访问和操作类的属性,也可以接受参数。类中的方法分为实例方法、类方法和静态方法。

1、方法

实例方法(Instance Methods)

        实例方法是最常用的方法类型。它们在类中定义,并且在对象级别上进行操作。实例方法的第一个参数通常是self,表示对当前实例的引用。

class MyClass:def instance_method(self, arg1, arg2):# 方法体pass

类方法(Class Methods)

        类方法是与整个类相关联的方法。它们使用@classmethod装饰器进行定义,并在方法的第一个参数中接受类对象,通常命名为cls。类方法可以访问类属性,并且可以通过类调用。

class MyClass:@classmethoddef class_method(cls, arg1, arg2):# 方法体pass

静态方法(Static Methods)

        静态方法与类和实例无关,也不访问类或实例的属性。它们使用@staticmethod装饰器进行定义,不需要传递额外的参数。

class MyClass:@staticmethoddef static_method(arg1, arg2):# 方法体pass

2、类

        在类中,还可以定义特殊的方法,称为魔术方法(Magic Methods)或特殊方法(Special Methods),这些方法具有特殊的名称和用途,用于定义类的行为和操作,如构造函数、析构函数、运算符重载等。

        例如,构造函数__init__是一个特殊方法,用于在创建对象时进行初始化操作。析构函数__del__用于在对象被销毁时执行清理操作。运算符重载方法如__add__用于定义对象的加法操作。

class MyClass:def __init__(self, arg1, arg2):# 构造函数passdef __del__(self):# 析构函数passdef __add__(self, other):# 加法运算符重载pass

类的使用一般涉及以下步骤:

  1. 创建类的实例(对象):使用类名后跟括号,可以传递参数给构造函数。
  2. 访问对象的属性:使用点号(.)操作符访问对象的属性。
  3. 调用对象的方法:使用点号操作符调用对象的方法。

下面是一个简单的类的示例:

class Car:def __init__(self, brand, color):self.brand = brandself.color = colordef start_engine(self):print(f"The {self.color} {self.brand} car is starting the engine.")# 创建Car类的实例
my_car = Car("Toyota", "red")# 访问对象的属性
print(my_car.brand)  # 输出: Toyota
print(my_car.color)  # 输出: red# 调用对象的方法
my_car.start_engine()  # 输出: The red Toyota car is starting the engine.

通过类,我们可以创建多个对象实例,并且每个实例都拥有自己的属性值和可以调用的方法。

3、类属性

        类属性是属于类本身的属性,而不是属于类的实例的属性。它们在所有类的实例之间共享,并且可以通过类名或实例对象访问。

定义类属性

  • 类属性可以在类的定义中直接声明,并且位于任何方法之外。
  • 类属性通常在类的构造函数(__init__方法)之外定义,以便它们在所有实例之间共享。
  • 类属性可以是任何有效的Python对象,如整数、字符串、列表等。
class MyClass:class_attribute = "Hello, I am a class attribute!"

访问类属性

  • 类属性可以通过类名直接访问,也可以通过实例对象访问。
  • 当通过类名访问类属性时,使用点号运算符(.)来引用类属性。
  • 当通过实例对象访问类属性时,实例会首先查找实例属性,如果找不到,则会查找并访问类属性。
print(MyClass.class_attribute)  # 输出: Hello, I am a class attribute!obj = MyClass()
print(obj.class_attribute)  # 输出: Hello, I am a class attribute!

修改类属性

  • 类属性可以通过类名进行修改,修改后会影响所有实例。
  • 当通过实例对象修改类属性时,实际上是创建了一个新的实例属性,不会修改类属性。
MyClass.class_attribute = "Modified class attribute"
print(MyClass.class_attribute)  # 输出: Modified class attributeobj.class_attribute = "New instance attribute"
print(obj.class_attribute)  # 输出: New instance attribute
print(MyClass.class_attribute)  # 输出: Modified class attribute

类属性的应用

  • 类属性通常用于存储与类相关的常量或共享数据。
  • 它们可以作为类的默认值或配置选项,供所有实例共享。
  • 类属性可以在类的方法中使用,以提供类级别的行为。
class Circle:pi = 3.14159def __init__(self, radius):self.radius = radiusdef calculate_area(self):return Circle.pi * self.radius * self.radiuscircle1 = Circle(5)
circle2 = Circle(3)print(circle1.calculate_area())  # 输出: 78.53975
print(circle2.calculate_area())  # 输出: 28.27431

在使用类属性时,需要注意以下几点:

  • 当实例对象访问类属性时,如果实例没有同名的实例属性,它将使用类属性的值。
  • 如果通过实例对象修改类属性,实际上是创建了一个新的实例属性,不会修改类属性本身。
  • 如果通过类名修改类属性,所有实例将反映出该修改。

        类属性是属于类的属性,可以在类的所有实例之间共享。它们在类的定义中声明,可以通过类名或实例对象访问。类属性通常用于存储与类相关的常量或共享数据,并可在类的方法中使用以提供类级别的行为。

4、类的继承

        当涉及到类的继承时,一个类可以从另一个类继承属性和方法。被继承的类称为基类或父类,继承它的类称为派生类或子类。子类可以继承父类的属性和方法,并且可以添加自己的属性和方法。

        在Python中,类的继承使用圆括号指定基类的名称,放在派生类的类定义中。派生类可以访问基类的属性和方法,通过调用super()函数。

下面是一个继承的示例:

class Vehicle:def __init__(self, brand):self.brand = branddef start_engine(self):print(f"The {self.brand} vehicle is starting the engine.")class Car(Vehicle):def __init__(self, brand, color):super().__init__(brand)self.color = colordef start_engine(self):super().start_engine()print(f"The {self.color} {self.brand} car is also starting the engine.")# 创建Car类的实例
my_car = Car("Toyota", "red")# 访问继承的属性
print(my_car.brand)  # 输出: Toyota
print(my_car.color)  # 输出: red# 调用继承的方法
my_car.start_engine()
# 输出:
# The Toyota vehicle is starting the engine.
# The red Toyota car is also starting the engine.

        在上面的示例中,Vehicle类是基类,Car类是派生类。Car类继承了Vehicle类的属性和方法。派生类的构造函数使用super()函数调用基类的构造函数,以便在初始化派生类对象时执行基类的初始化逻辑。

        派生类可以重写(覆盖)继承的方法,以改变其行为。在示例中,Car类重写了start_engine()方法,并使用super().start_engine()调用基类的同名方法,以保留基类的行为。

        此外,Python还支持多重继承,其中一个类可以从多个基类继承。多重继承使得一个类可以具有多个父类的属性和方法。在类定义中,可以在圆括号中指定多个基类的名称,并用逗号分隔。

下面是一个多重继承的示例:

class Animal:def __init__(self, name):self.name = namedef speak(self):passclass Dog(Animal):def speak(self):return "Woof!"class Cat(Animal):def speak(self):return "Meow!"class DogCat(Dog, Cat):pass# 创建DogCat类的实例
my_pet = DogCat("Tom")# 调用继承的方法
print(my_pet.speak())  # 输出: Woof!

        在上面的示例中,Animal类是基类,DogCat类分别继承了Animal类。然后,DogCat类从DogCat类多重继承。DogCat类继承了DogCat类的name属性和speak()方法,并且可以调用my_pet.speak()来获取"Woof!"的输出。

通过继承和多重继承,可以构建更复杂和灵活的类层次结构,并实现代码的重用和扩展。

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

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

相关文章

Vue3实战笔记(43)—Vue3组合式API下封装可复用ECharts图表组件

文章目录 前言一、封装echart图标钩子二、使用步骤总结 前言 接上文,已经安装好了ECharts,开始封装组件方便使用。 一、封装echart图标钩子 首先应用我们之前学习的钩子方式,在hooks目录下创建一个名为 useECharts.js 的文件,用…

从零起航,Python编程全攻略

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、Python入门之旅 二、Python进阶之道 三、Python爬虫实战 四、Python数据分析利器 五…

linux系统——终止进程命令

linux进程,有所谓进程树的概念,在此之上,有父进程与子进程 pgrep进程名可以查看进程信息 同时,此命令也可以使用参数进行调节 关于kill有一系列命令参数 echo $?可以输出上次命令执行的情况

【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 什么是搜索引…

Ajax异步删除

在页面上定义一个按钮 <button type"button" class"btn"><a href"JavaScript:;" class"id" b_id"{{$attachment[id]}}">删除</a></button> js代码 <script>$(.id).click(function (){va…

[读论文]精读Self-Attentive Sequential Recommendation

论文链接&#xff1a;https://arxiv.org/abs/1808.09781 其他解读文章&#xff1a;https://mp.weixin.qq.com/s/cRQi3FBi9OMdO7imK2Y4Ew 摘要 顺序动态是许多现代推荐系统的一个关键特征&#xff0c;这些系统试图根据用户最近执行的操作来捕获用户活动的“上下文”。为了捕捉…

ES基础概念

本文不介绍如何使用ES&#xff08;使用ES见&#xff1a;&#xff09; 1.ES生态圈 ES&#xff1a; Logstash&#xff1a;数据处理服务程序&#xff0c;解析转换加工数据&#xff1b; Kibana&#xff1a;数据展示、集群管理&#xff0c;数据可视化、ES管理与监控、报表等&#xf…

区块链钱包如果丢失了私钥或助记词,资产还能恢复吗?

如果你丢失了区块链钱包的私钥或助记词&#xff08;通常是用于恢复钱包的短语或种子&#xff09;&#xff0c;那么你的资产在大多数情况下是无法恢复的。私钥是访问和控制你在区块链上资产的唯一凭证&#xff0c;而助记词&#xff08;如BIP39标准中的12、18、24个单词的短语&am…

【数据分析面试】53.推送消息的分布情况(SQL)

题目 我们有两个表&#xff0c;一个是 notification_deliveries 表&#xff0c;另一个是包含 created 和购买 conversion dates 的 users 表。如果用户没有购买&#xff0c;那么 conversion_date 列为 NULL。 编写一个查询&#xff0c;以获取用户转换前的推送通知总数的分布情…

无人机监测系统:天空之眼,精准掌握地球脉动

在当今信息化快速发展的时代&#xff0c;无人机技术以其独特的优势&#xff0c;正在成为资源调查、环境监测和规划支持的重要工具。无人机监测系统通过搭载多种传感器和设备&#xff0c;能够快速、高效地获取地表信息&#xff0c;为决策提供科学依据。 项目背景 随着全球环境…

SpringMVC接收请求参数的方式:

接收简单变量的请求参数 直接使用简单变量作为形参进行接收&#xff08;这里简单变量名称需要与接收的参数名称保持一致&#xff0c;否则需要加上RequestParam注解&#xff09;&#xff1a; 细节&#xff1a; 1&#xff1a;SpringMVC会针对常见类型&#xff08;八种基本类型及…

二叉排序树的创建

二叉排序树就是节点经过排序构建起的二叉树&#xff0c;其有以下性质&#xff1a; 1. 若它的左子树不为空&#xff0c;则左子树上所有节点的值均小于它的根节点的值。 2. 若它的右子树不为空&#xff0c;则右子树上所有节点的值均大于它的根节点的值。 3. 它的左、右子树也分…

python期末作业:批量爬取站长之家的网站排行榜数据并保存,数据分析可视化

爬虫作业,含python爬取数据和保存文件,数据分析使用pyecharts做数据可视化 整体上分析网站的排名,直观看各个网站的热度。 数据分析之后大致的效果: 整个项目分为两个大的部分,第一部分就是抓取网站排名数据,然后保存为Excel、csv等格式,其次就是从文件中…

下一代Docker会让部署更丝滑吗

下一代Docker会让部署更丝滑吗 如何通俗易懂的理解DockerDocker有什么缺点Docker与AI结合&#xff0c;会让部署更加丝滑吗 随着互联网技术的不断发展&#xff0c;单机系统已经无法满足日益正常的用户量以及正常处理用户请求&#xff0c;这个时候就需要进行多机部署&#xff0c;…

设计新境界:大数据赋能UI的创新美学

设计新境界&#xff1a;大数据赋能UI的创新美学 引言 随着大数据技术的蓬勃发展&#xff0c;它已成为推动UI设计创新的重要力量。大数据不仅为界面设计提供了丰富的数据资源&#xff0c;还赋予了设计师以全新的视角和工具来探索美学的新境界。本文将探讨大数据如何赋能UI设计…

使用Datav,echarts开发各种地图

一、功能描述 在实际中&#xff0c;有时候需要针对不同的地图进行开发&#xff0c;而能在网上找到现成&#xff0c;与需要匹配度高的&#xff0c;几乎很难&#xff0c;而且找起对应的资源也相对麻烦。所以结合DataV提供的地图数据&#xff0c;就能开发出各种地图&#xff0c;然…

英语学习笔记25——Mrs. Smith‘s kitchen

Mrs. Smith’s kitchen 史密斯太太的厨房 词汇 Vocabulary Mrs. 夫人【已婚】 复习&#xff1a;Mr. 先生 全名 / 姓    Mrs. 夫人 全名 / 丈夫的姓    Miss 小姐&#xff08;未婚&#xff09; 全名 / 姓    Ms. 女士 全名 / 姓 查看婚姻状况&#xff0c;可以观察…

神经网络的工程基础(零)——PyTorch基础

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下&#xff1a;regression2chatgpt/ch06_optimizer/gradient_descent.ipynb 本文将介绍PyTorch的基础。…

速看!!!24上软考-信息系统项目管理师真题回忆,考点已更新

整理了24上半年软考高级信息系统项目管理师的考试真题&#xff0c;软考一个批次一套题&#xff0c;现在都是机考&#xff0c;收集题目比较困难&#xff0c;希望能给个小小的赞支持一下。 注意&#xff1a;当天考试的宝子们可以对答案预估分数&#xff01;后面场次的宝子可以提…

WordPress搭建流程

1. 简介 WordPress 是一个 PHP 编写的网站制作平台。WordPress 本身免费,并且拥有众多的主题可以使用,适合用于搭建个人博客、公司官网、独立站等。 2. 环境准备 2.1 WordPress 下载 WordPress 可以在 Worpress中文官网 下载(如果后续要将后台调成中文的话,一定要从中文…