Python-VBA函数之旅-isinstance函数

目录

一、isinstance函数的常见应用场景:

二、isinstance函数使用注意事项:

三、如何用好isinstance函数?

1、isinstance函数:

1-1、Python:

1-2、VBA:

2、推荐阅读:

个人主页:神奇夜光杯-CSDN博客 



一、isinstance函数的常见应用场景:

        在Python中,isinstance()函数用于确定对象是否属于特定的类或类型,常见的应用场景有:

1、类型检查:当你需要根据对象的类型执行不同的操作时,isinstance()函数非常有用。例如,你可能需要根据变量的类型来格式化输出,或者根据类型执行不同的逻辑分支。

2、多态性支持:在面向对象的编程中,多态性允许使用父类引用处理子类对象;使用isinstance()函数可以确保即使子类有额外的行为或属性,代码也能正确处理它们。 

3、输入验证:在编写函数或方法时,你可能需要确保传入的参数是预期的类型。使用isinstance()可以在函数内部进行类型检查,并在传入错误类型时提供清晰的错误信息。

4、扩展性和灵活性:当你想让你的代码能够处理多种类型时,可以使用isinstance()函数来检查一个对象是否属于一系列类型中的任何一个,这使得代码更加灵活,能够处理更多种类的输入。

5、工厂模式:在工厂模式中,isinstance()函数可以用来确定应该创建哪种类型的对象;工厂函数接受一些参数,并使用isinstance()来确定应该返回哪种类型的对象实例。

6、类型安全的API设计:在设计API或库时,确保传入的参数类型正确是很重要的;使用isinstance()可以帮助你实现类型安全的接口,从而避免潜在的错误和异常。

7、与抽象基类(ABC)一起使用:在设计API或库时,确保传入的参数类型正确是很重要的,使用isinstance()函数可以帮助你实现类型安全的接口,从而避免潜在的错误和异常。

        总之,isinstance()函数在Python编程中是一个强大的工具,用于在运行时确定对象的类型,并根据需要执行相应的操作,它在类型检查、多态性实现、输入验证、扩展性和灵活性、工厂模式、设计类型安全的API及与抽象基类(ABC)一起使用等方面都有广泛的应用。

二、isinstance函数使用注意事项:

        在Python中,isinstance()函数是一个常用的工具,用于确定一个对象是否是一个已知的类型或类的实例。使用时,需注意以下几点:

1、类型元组:当你想检查对象是否属于多个类型之一时,可以传递一个类型元组给 isinstance(),确保元组中的类型是按照你的逻辑顺序排列的,因为一旦找到匹配的类型,isinstance()函数就会返回 True,并不会继续检查元组中的其他类型。

2、不要过度使用:尽管isinstance()函数很有用,但过度使用它可能会导致代码变得冗长和难以阅读。在某些情况下,使用更简洁的鸭子类型(duck typing)可能是更好的选择,即“如果它走起路来像鸭子,叫起来也像鸭子,那么它就是鸭子”。这意味着,如果对象有你需要的方法或属性,你就可以使用它,而不必关心它确切的类型。

3、继承关系:当使用isinstance()检查一个对象是否是一个类的实例时,它也会检查该对象是否是该类子类的实例,这是多态性的基础,但也要确保你了解类的继承关系,以避免意外的类型匹配。

4、自定义类的比较:如果你定义了自己的类,并且想要通过isinstance()检查对象是否是你的类的实例,确保你的类定义正确,并且没有意外地覆盖了 `__instancecheck__` 方法,该方法会影响 isinstance()的行为。通常,你不需要直接操作这个方法,除非你有特殊的类型检查需求。

5、避免与type()函数比较:isinstance()和type()都可以用来检查对象的类型,但isinstance()更为推荐,因为它可以处理继承关系;而type()只会检查对象是否直接是某个特定类的实例,不会考虑继承。

6、性能考虑:虽然isinstance()函数的性能通常不是问题,但在性能关键的应用程序中,频繁的类型检查可能会对性能产生轻微影响。在这种情况下,可以考虑使用其他设计策略来减少类型检查的需要,比如使用接口或协议来定义对象的行为。

7、版本兼容性:不同版本的Python可能对isinstance()的行为有细微的差别,特别是当涉及到内置类型或特殊的元类行为时,确保你的代码在目标Python版本上进行了充分的测试。

        总之,只有遵循这些注意事项,你才可以更安全、更有效地使用isinstance()函数来进行类型检查。

三、如何用好isinstance函数?

        要在Python中用好isinstance()函数,你需要理解其用途、语法以及一些常见的应用场景,相关参考建议如下:

1、明确使用场景:首先,你需要明确为什么要使用isinstance()函数。通常,这是为了确定一个对象是否属于特定的类型或类的实例,这在你需要基于对象的类型执行不同操作时特别有用。

2、理解语法:isinstance()函数接受两个参数:要检查的对象和要比较的类型(或类型元组);如果对象是该类型的实例,则返回True,否则返回False。

3、处理继承关系:当使用isinstance()时,它会考虑继承关系,这意味着如果一个对象是一个类的子类实例,那么isinstance()也会返回True,这是多态性的一个体现,有助于编写更加灵活和可维护的代码。

4、检查多个类型:如果你想要检查对象是否属于多个可能的类型之一,可以将这些类型放在一个元组中,并将其作为第二个参数传递给isinstance()函数。

5、避免过度使用:虽然isinstance()在某些情况下很有用,但过度使用它可能会导致代码变得冗长和难以维护;在Python中,通常更倾向于使用鸭子类型(duck typing),即如果对象具有你所需的方法或属性,就可以认为它是合适的类型,而无需显式检查其类型。

6、结合异常处理:如果你期望对象必须是特定类型,并且如果不是该类型则程序无法继续执行,可以结合使用isinstance()和异常处理来确保类型正确。

7、考虑使用抽象基类:对于更复杂的类型检查,可以考虑使用Python的`collections.abc`模块中定义的抽象基类(ABCs),这些基类提供了更高级别的接口检查,而不仅仅是简单的类型匹配。

8、注意版本兼容性:不同的Python版本可能对isinstance()的行为略有不同,确保你的代码在目标Python版本上进行了充分的测试,并检查是否有任何与类型检查相关的已知变化。

9、代码清晰性:使用isinstance()时,确保你的代码清晰易读,避免在复杂的逻辑表达式中嵌套多个isinstance()调用,这可能会使代码难以理解;相反,考虑将类型检查逻辑分解为单独的函数或方法,以提高代码的可读性和可维护性。

        总之,只有通过遵循这些建议,你才能更有效地使用isinstance()函数来增强你的Python代码的类型安全性和灵活性。

1、isinstance函数:
1-1、Python:
# 1.函数:isinstance
# 2.功能:用于判断对象是否是类或者类型元组中任意类元素的实例
# 3.语法:isinstance(object, classinfo)
# 4.参数:
# 4-1、 object:实例对象
# 4-2、classinfo:类名可以是直接或间接类名、基本类型或者由它们组成的元组
# 5.返回值:如果对象的类型与classinfo类型相同则返回True;否则返回False
# 6.说明:
# 7.示例:
# 应用一:类型检查
# 示例1:检查整数类型
num = 123
if isinstance(num, int):print("num 是一个整数")
else:print("num 不是一个整数")
# num 是一个整数# 示例2:检查字符串类型
text = "Hello, Python!"
if isinstance(text, str):print("text 是一个字符串")
else:print("text 不是一个字符串")
# text 是一个字符串# 示例3:检查列表类型
my_list = [3, 5, 6, 8, 10, 11, 24]
if isinstance(my_list, list):print("my_list 是一个列表")
else:print("my_list 不是一个列表")
# my_list 是一个列表# 示例4:检查多个类型
item = "Myelsa"
if isinstance(item, (str, int)):print("item 是字符串或整数")
else:print("item 不是字符串也不是整数")
# item 是字符串或整数# 示例5:自定义类型检查
class MyClass:pass
obj = MyClass()
if isinstance(obj, MyClass):print("obj 是 MyClass 的一个实例")
else:print("obj 不是 MyClass 的一个实例")
# obj 是 MyClass 的一个实例# 应用二:多态性支持
# 示例1:形状类与多态性
class Shape:def draw(self):pass
class Circle(Shape):def draw(self):print("Drawing a circle")
class Rectangle(Shape):def draw(self):print("Drawing a rectangle")
class Triangle(Shape):def draw(self):print("Drawing a triangle")
def draw_shapes(shapes):for shape in shapes:if isinstance(shape, Circle):print("Drawing a circle specifically")shape.draw()elif isinstance(shape, Rectangle):print("Drawing a rectangle specifically")shape.draw()elif isinstance(shape, Triangle):print("Drawing a triangle specifically")shape.draw()else:print("Drawing a generic shape")shape.draw()
shapes = [Circle(), Rectangle(), Triangle()]
draw_shapes(shapes)
# Drawing a circle specifically
# Drawing a circle
# Drawing a rectangle specifically
# Drawing a rectangle
# Drawing a triangle specifically
# Drawing a triangle# 示例2:使用多态性处理不同数据类型的函数
def process_data(data):if isinstance(data, int):print(f"Processing integer: {data}")# 执行整数相关的操作elif isinstance(data, str):print(f"Processing string: {data}")# 执行字符串相关的操作elif isinstance(data, list):print(f"Processing list: {data}")# 执行列表相关的操作else:print(f"Unsupported data type: {type(data)}")
process_data(42)
process_data("Hello")
process_data([1, 2, 3])
process_data(3.14)
# Processing integer: 42
# Processing string: Hello
# Processing list: [1, 2, 3]
# Unsupported data type: <class 'float'># 应用三:输入验证
# 示例1:验证整数输入
def validate_integer_input(input_value):if isinstance(input_value, int):print("输入是一个整数")return Trueelse:print("输入不是一个整数,请重新输入")return False
# 测试函数
user_input = input("请输入一个整数: ")
try:user_input = int(user_input)  # 尝试将输入转换为整数if validate_integer_input(user_input):# 如果验证通过,进行后续操作pass  # 在这里添加你的代码
except ValueError:# 如果输入无法转换为整数,打印错误信息print("无效的输入,请输入一个有效的整数")
# 请输入一个整数: 1024
# 输入是一个整数# 示例2:验证字符串输入
def validate_string_input(input_value):if isinstance(input_value, str):print("输入是一个字符串")return Trueelse:print("输入不是一个字符串,请重新输入")return False
# 测试函数
user_input = input("请输入一个字符串: ")
if validate_string_input(user_input):# 如果验证通过,进行后续操作pass  # 在这里添加你的代码
# 请输入一个字符串: myelsa
# 输入是一个字符串# 示例3:验证列表输入,并检查元素类型
def validate_list_input(input_value):if isinstance(input_value, list):for item in input_value:if not isinstance(item, int):print("列表中包含非整数元素")return Falseprint("输入是一个整数列表")return Trueelse:print("输入不是一个列表,请重新输入")return False
# 测试函数
user_input = input("请输入一个由整数组成的列表(用空格分隔): ")
try:user_input_list = list(map(int, user_input.split()))  # 将输入转换为整数列表if validate_list_input(user_input_list):# 如果验证通过,进行后续操作pass  # 在这里添加你的代码
except ValueError:# 如果输入无法转换为整数列表,打印错误信息print("无效的输入,请输入一个由整数组成的列表")
# 请输入一个由整数组成的列表(用空格分隔): 3 5 6
# 输入是一个整数列表# 示例4:验证自定义类实例的输入
class Person:def __init__(self, name, age):self.name = nameself.age = age
def validate_person_input(input_value):if isinstance(input_value, Person):print("输入是一个 Person 类的实例")return Trueelse:print("输入不是一个 Person 类的实例,请重新输入")return False
# 测试函数
user_name = input("请输入姓名: ")
user_age = input("请输入年龄: ")
try:user_age = int(user_age)  # 尝试将年龄输入转换为整数person = Person(user_name, user_age)if validate_person_input(person):# 如果验证通过,进行后续操作pass  # 在这里添加你的代码
except ValueError:# 如果年龄输入无法转换为整数,打印错误信息print("无效的输入,年龄必须是一个整数")
# 请输入姓名: Myelsa
# 请输入年龄: 18
# 输入是一个 Person 类的实例# 应用四:扩展性和灵活性
# 示例1:处理不同数据类型的函数
def process_data(data):if isinstance(data, int):print(f"Processing an integer: {data}")# 执行整数相关的操作elif isinstance(data, str):print(f"Processing a string: {data}")# 执行字符串相关的操作elif isinstance(data, list):print(f"Processing a list: {data}")# 执行列表相关的操作elif isinstance(data, (dict, set)):print(f"Processing a collection: {data}")# 执行集合或字典相关的操作else:print(f"Unsupported data type: {type(data)}")
# 使用函数处理不同类型的数据
process_data(42)
process_data("Hello")
process_data([1, 2, 3])
process_data({"key": "value"})
process_data({1, 2, 3})
# Processing an integer: 42
# Processing a string: Hello
# Processing a list: [1, 2, 3]
# Processing a collection: {'key': 'value'}
# Processing a collection: {1, 2, 3}# 示例2:插件式架构
class PluginInterface:def execute(self):raise NotImplementedError("Subclasses must implement this method")
class PluginA(PluginInterface):def execute(self):print("Plugin A is executing")
class PluginB(PluginInterface):def execute(self):print("Plugin B is executing")
def run_plugin(plugin):if isinstance(plugin, PluginInterface):plugin.execute()else:print("The provided plugin does not implement the required interface")
# 创建插件实例并运行它们
plugin_a = PluginA()
plugin_b = PluginB()
run_plugin(plugin_a)
run_plugin(plugin_b)
# Plugin A is executing
# Plugin B is executing# 示例3:工厂模式
class Shape:pass
class Circle(Shape):def draw(self):print("Drawing a circle")
class Rectangle(Shape):def draw(self):print("Drawing a rectangle")
def create_shape(shape_type):if isinstance(shape_type, str):if shape_type == "circle":return Circle()elif shape_type == "rectangle":return Rectangle()else:print("Invalid shape type")return None
# 使用工厂函数创建形状对象
circle = create_shape("circle")
rectangle = create_shape("rectangle")
if circle:circle.draw()
if rectangle:rectangle.draw()
# Drawing a circle
# Drawing a rectangle# 应用五:类型安全的API设计
# 示例1:简单的API函数
def greet_person(name: str):if not isinstance(name, str):raise ValueError("Name must be a string")print(f"Hello, {name}!")
# 正确使用
greet_person("Myelsa")
# Hello, Myelsa!
# 错误使用,会抛出异常
greet_person(42)
# ValueError: Name must be a string# 示例2:带有多个参数和返回类型的API函数
def calculate_area(shape: str, **kwargs) -> float:if not isinstance(shape, str):raise ValueError("Shape must be a string")if shape == "circle":if not all(isinstance(v, (int, float)) for k, v in kwargs.items()):raise ValueError("Circle parameters must be numeric")radius = kwargs.get("radius", 0)return 3.14159 * radius ** 2elif shape == "rectangle":if not all(isinstance(v, (int, float)) for k, v in kwargs.items()):raise ValueError("Rectangle parameters must be numeric")length = kwargs.get("length", 0)width = kwargs.get("width", 0)return length * widthelse:raise ValueError("Invalid shape")
# 正确使用
area_circle = calculate_area("circle", radius=5)  # 输出圆的面积
area_rectangle = calculate_area("rectangle", length=10, width=5)  # 输出矩形的面积
# 错误使用,会抛出异常
calculate_area("triangle", base=3, height=4)  # 抛出 ValueError: Invalid shape
calculate_area("circle", radius="five")  # 抛出 ValueError: Circle parameters must be numeric# 示例3:使用类进行API设计
class BankAccount:def __init__(self, name: str, balance: float):if not isinstance(name, str):raise ValueError("Name must be a string")if not isinstance(balance, (int, float)):raise ValueError("Balance must be a number")self.name = nameself.balance = balancedef deposit(self, amount: float):if not isinstance(amount, (int, float)):raise ValueError("Deposit amount must be a number")if amount < 0:raise ValueError("Deposit amount must be positive")self.balance += amountprint(f"Deposited {amount}. New balance: {self.balance}")def withdraw(self, amount: float):if not isinstance(amount, (int, float)):raise ValueError("Withdraw amount must be a number")if amount < 0:raise ValueError("Withdraw amount must be positive")if amount > self.balance:raise ValueError("Insufficient funds")self.balance -= amountprint(f"Withdrawn {amount}. New balance: {self.balance}")
# 创建一个银行账户实例
account = BankAccount("Alice", 1000.0)
# 正确使用
account.deposit(500.0)  # 存款
account.withdraw(200.0)  # 取款
# Deposited 500.0. New balance: 1500.0
# Withdrawn 200.0. New balance: 1300.0
# 错误使用,会抛出异常
account.withdraw(-100.0)  # 抛出 ValueError: Withdraw amount must be positive
account.withdraw(1500.0)  # 抛出 ValueError: Insufficient funds
1-2、VBA:
略,待后补。
2、推荐阅读:

1、Python-VBA函数之旅-int()函数

Python算法之旅:Algorithm

Python函数之旅:Functions 

个人主页:神奇夜光杯-CSDN博客 

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

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

相关文章

网络安全之SQL注入及防御(下篇)

目录 什么是SQL注入&#xff1f; 一&#xff0c;SQL注入会导致什么呢&#xff1f; 二&#xff0c;SQL注入思想与步骤 三&#xff0c;SQL注入的绕过 四&#xff0c;sqlmap工具的使用 五&#xff0c;sql注入的防御方法 总结 什么是SQL注入&#xff1f; SQL注入&#xff08;…

C++|模板进阶(非类型模板参数+特化)

目录 一、非类型模板参数 二、模板特化 2.1函数模板特化 2.2类模板特化 2.2.1全特化 2.2.2偏特化 三、模板不支持分离编译 四、模板优缺点 一、非类型模板参数 在模板初阶中&#xff0c;所学习的模板的参数是类型形参&#xff0c;但其实还有非类型形参。 类型形参&am…

gcc make makefile cmake之间的关系梳理

gcc是GNU Compiler Collection&#xff08;GNU编译器套件&#xff09;&#xff0c;也可以简单认为是编译器&#xff0c;它可以编译很多编程语言&#xff08;包括C、C、Object-C、Fortran、Java等&#xff09;当你的程序只有一个源文件&#xff0c;直接用gcc命令编译它。但是当你…

系统思考—啤酒游戏

最近有不少的合作伙伴来询问我啤酒游戏这个来自于MIT&#xff08;麻省理工学院&#xff09;经典的沙盘&#xff0c;上周刚刚结束Midea旗下的一家公司市场运营部《啤酒游戏沙盘-应对动态性复杂的系统思考智慧》的课程。 参与这次沙盘体验的团队成员深刻体会到了全局思考的重要性…

GDPU unity游戏开发 碰撞体与关节

让你设计的角色跑起来吧&#xff0c;可以是动画&#xff0c;也可以是碰撞器的运动。 运动小车 找到小车素材&#xff0c;导入到层级面板。然后可以新建一个地面让小车在上面运动&#xff0c;新建一个方块当障碍物。 摆放好后&#xff0c;要加组件。记住&#xff0c;在unity中运…

02 VMware下载安装银河麒麟(Kylin)系统

02 VMware下载&安装银河麒麟&#xff08;Kylin&#xff09;系统 一、官网1、官网地址 二、下载1、官网下载&#xff08;1&#xff09;服务器操作系统&#xff08;2&#xff09;申请试用&#xff08;3&#xff09;产品试用申请&#xff08;4&#xff09;点击下载连接即可 2、…

SQL基础(关系模型)

目录 SQL及定义域概念 SQL是什么 定义域 关系简介 关系的定义 关系的封闭性 关系模型简介 关系模型 谓词逻辑 运算基础 SQL的加减乘除 SQL的除法1 SQL的除法2 SQL的除法3 三值逻辑 NULL的危害 消除NULL SQL及定义域概念 SQL是什么 Structured Query Languag…

泽众RPA1.1.2产品升级,新增团队管理、用户管理、工作空间及自动化任务等功能,大幅提升工作效率

泽众RPA1.1.2产品升级&#xff0c;通过新增团队管理模块、用户管理模块、工作空间功能、定时任务功能以及Excel和网络指令&#xff0c;解决了团队协作与权限管理不精细、任务自动化水平有限以及数据处理和网络操作功能局限等问题。升级后的产品不仅提升了工作效率和团队协作能力…

【Qt常用控件】—— 显示类控件

目录 1.1 Label 1.2 LCD Number 1.3 ProgressBar 1.4 Calendar Widget 1.5 小结 1.1 Label QLabel 控件是 Qt 中用于显示文本或图像的部件&#xff0c;是用户界面开发中常用的组件之一。 核⼼属性如下&#xff1a; 属性 说明 text QLabel 中的⽂本 textFormat ⽂本的格…

MySQL主从结构搭建

说明&#xff1a;本文介绍如何搭建MySQL主从结构&#xff1b; 原理 主从复制原理如下&#xff1a; &#xff08;1&#xff09;master数据写入&#xff0c;更新binlog&#xff1b; &#xff08;2&#xff09;master创建一个dump线程向slave推送binlog&#xff1b; &#xff…

小瓶清洗桶抗酸碱耐高温PFA清洗器半导体实验清洗用

PFA清洗桶&#xff0c;也叫PFA清洗器、PFA小瓶清洗桶&#xff0c;主要用于清洗浸泡实验室小型PFA溶样罐和烧杯等&#xff0c;带有密封螺纹盖&#xff0c;可以用于摇晃&#xff0c;高纯耐高温材质可放置电热板上加热使用。 特点&#xff1a;可拆卸倒酸口&#xff0c;可安全倒出酸…

网络安全是否有需求

● 由于网络威胁数量不断增加&#xff0c;网络安全的需求很高。 ● 组织正在大力投资网络安全以保护其数据。 ● 就业市场缺乏熟练的网络安全专业人员。 ● 网络安全认证可以提升您在网络安全领域的职业前景。 ● 持续学习并了解最新的安全趋势在该领域至关重要。 随着对技术和…

如何优雅地Spring事务编程

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 微信公众号&#xff1a;Java随想录 在开发中&#xff0c;有时候我们需要对 Spring 事务的生命周期进行监控&#xff0c;比如在事务提交、回滚或挂起时触发特定的逻辑处理。那么如何实现这种定制化操作呢&am…

windows安装nssm并将jar打包为服务

一、nssm 下载地址 二、安装nssm服务 将下载的压缩包复制到安装目录进行解压&#xff0c;解压后有两个版本 win32 和 win64&#xff0c;根据系统选择。打开系统 powershell 命令窗口&#xff0c;进入安装目录指定版本目录&#xff0c;就可以使用nssm服务了。 # 安装服务&…

接口测试和Mock学习路线(中)

1.什么是 swagger Swagger 是一个用于生成、描述和调用 RESTful 接口的 WEB 服务。 通俗的来讲&#xff0c;Swagger 就是将项目中所有想要暴露的接口展现在页面上&#xff0c;并且可以进行接口调用和测试的服务。 现在大部分的项目都使用了 swagger&#xff0c;因为这样后端…

SV-7041T IP网络有源音箱 教室广播多媒体音箱(带本地扩音功能)教学广播音箱 办公室背景音乐广播音箱 2.0声道壁挂式网络有源音箱

SV-7041T IP网络有源音箱 教室广播多媒体音箱&#xff08;带本地扩音功能&#xff09; 教学广播音箱 办公室背景音乐广播音箱 一、描述 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带…

汇编期末复习知识点

参考文献1 第一章 概述 组成 计算机系统由硬件子系统和软件子系统组成。硬件子系统&#xff1a;组成计算机系统的所有电子的&#xff0c;机械的&#xff0c;光学的和磁性的元部件。 计算机中常用进制数表示 十进制(Decimal):数据尾部加一后缀D&#xff0c;如2355D二进制&a…

TFTLCD时序介绍(ILI9341 8080并口时序)

ILI9341 8080并口 ILI9341是一个常见的TFT LCD显示控制器&#xff0c;用于驱动各种小型和中型尺寸的液晶显示屏。它支持多种分辨率&#xff0c;最常见的是240x320像素。ILI9341控制器具有内置的GRAM&#xff08;Graphics RAM&#xff09;&#xff0c;可以通过SPI或8位并行接口…

初学python,怎样入门?

答案&#xff1a;乌龟绘图。 "乌龟绘图"通常指的是使用Logo语言的变种——Python中的turtle模块来进行图形绘制。在turtle模块中&#xff0c;一只名为“海龟”&#xff08;Turtle&#xff09;的小动物会在屏幕上移动&#xff0c;根据其行进路径来绘制图形。以下是一段…

百面算法工程师 | 激活函数 Activate Function

目录 10.1激活函数作用&#xff1a; 10.2 为什么激活函数都是非线性的 10.3 常见激活函数的优缺点及其取值范围 10.4 激活函数问题的汇总 10.4.1 Sigmoid的缺点&#xff0c;以及如何解决 10.4.2 ReLU在零点可导吗&#xff0c;如何进行反向传播 10.4.3 Softmax溢出怎么处…