深入浅出Python函数:参数传递、作用域与案例详解

在这里插入图片描述

🙋‍♀️ 博主介绍:颜颜yan_
本期精彩:深入浅出Python函数:参数传递、作用域与案例详解
🏆 热门专栏:零基础玩转Python爬虫:手把手教你成为数据猎人
🚀 专栏亮点:零基础友好 | 实战案例丰富 | 循序渐进教学 | 代码详细注释
💡 学习收获:掌握爬虫核心技术,成为数据采集高手,开启你的数据科学之旅!

🔥 如果觉得文章有帮助,别忘了点赞👍 收藏⭐ 关注🚀,你的支持是我创作的最大动力!


文章目录

  • 前言
  • 什么是函数
  • 为什么要使用自定义函数
  • 函数定义语法
    • 基本示例
  • 定义函数的注意事项
    • def关键字的重要性
    • 函数命名规范
    • 参数列表的灵活性
    • 返回值的处理
  • 函数参数
    • 带有默认值的参数
    • 多参数函数
      • 位置参数:基于参数位置传递
      • 关键字参数:基于参数名传递
      • 参数传递的重要规则
      • 可变参数:处理不确定数量的输入
  • 函数变量作用域
    • 局部变量:函数内部的私有空间
    • 全局变量:程序的公共资源
      • 作用域
    • 使用global关键字:突破局部限制
    • 嵌套函数中的作用域:nonlocal的力量
    • 作用域查找顺序(LEGB规则)
  • 函数的高级特性
    • 函数作为参数
    • Lambda函数:简洁的匿名函数
  • 总结


前言

函数是Python编程中最重要的概念之一,它们帮助我们组织代码、提高代码复用性并让程序更加模块化。本文将深入探讨Python中的用户自定义函数、参数传递以及变量作用域等核心概念。


什么是函数

在深入讲解用户自定义函数之前,我们先来理解什么是函数。从数学的角度来看,函数是一种映射关系,给定输入值,会产生对应的输出值。在编程中,函数的概念也是如此——它接收一些输入(称为参数),执行特定的操作,然后可能返回一个结果。

Python中的函数大致可以分为两类:

  • 内置函数(Built-in Function,缩写BIF):这些是Python官方提供的函数,如print()用于输出、len()用于获取长度、max()用于找最大值等。这些函数是Python语言的一部分,可以直接使用。
  • 用户自定义函数:这些是我们根据自己的需求创建的函数,可以封装特定的业务逻辑或算法。
    Python函数语法图

为什么要使用自定义函数

在实际编程中,我们经常会遇到需要重复执行某些操作的情况。比如,在一个学生管理系统中,我们可能需要多次计算学生的平均成绩。如果每次都重新写一遍计算逻辑,不仅代码冗余,而且容易出错。这时候,函数就发挥了巨大的作用:

  1. 代码复用:一次编写,多次使用,避免重复劳动
  2. 模块化编程:将复杂的问题分解为小的、易于管理的部分
  3. 提高可维护性:当需要修改某个功能时,只需要修改函数内部的代码
  4. 增强可读性:通过函数名就能大致了解代码的功能
  5. 便于测试:可以单独对函数进行测试,确保其正确性

函数定义语法

自定义函数的语法格式:

def 函数名(参数列表):"""函数文档字符串(可选)"""函数体return 返回值  # 可选

这个语法看起来简单,但每个部分都有其重要作用:

  • def关键字:告诉Python解释器我们要定义一个函数
  • 函数名:函数的标识符,应该具有描述性,让人一看就知道函数的作用
  • 参数列表:函数接收的输入,可以为空
  • 文档字符串:用三引号包围的字符串,用于描述函数的用途、参数和返回值
  • 函数体:函数的核心逻辑,实现具体功能
  • return语句:指定函数的返回值,如果没有return,函数默认返回None

基本示例

# 无参数函数
def greet():print("Hello, World!")
# 调用函数
greet() 

这是最基本的函数示例。这个函数没有参数,也没有返回值,它的唯一作用就是打印一句问候语。虽然简单,但它展示了函数的基本结构。当我们调用greet()时,程序会执行函数内部的代码,输出"Hello, World!"。
在这里插入图片描述

# 有参数和返回值的函数
def add_numbers(a, b):"""计算两个数的和"""result = a + breturn result# 调用函数
sum_result = add_numbers(5, 3)
print(f"5 + 3 = {sum_result}")  # 输出: 5 + 3 = 8

这个函数接收两个参数ab,计算它们的和,并通过return语句返回结果。注意几个要点:

  • 参数ab是函数的输入接口
  • 函数内部可以进行任意的计算和处理
  • return语句不仅结束函数的执行,还将结果传递给调用者
  • 调用函数时,我们可以将返回值赋给一个变量
    在这里插入图片描述
# 计算圆的面积
import mathdef calculate_circle_area(radius):"""计算圆的面积参数: radius - 圆的半径返回值: 圆的面积"""if radius < 0:return None  # 半径不能为负数area = math.pi * radius ** 2return round(area, 2)# 测试函数
radius = 5
area = calculate_circle_area(radius)
print(f"半径为 {radius} 的圆的面积是: {area}")  

这个函数展现了更多的实际编程技巧:

  • 输入验证:检查半径是否为负数
  • 使用标准库:导入math模块使用圆周率π
  • 数值处理:使用round()函数保留两位小数,提高结果的可读性
  • 文档字符串:详细描述了函数的用途、参数和返回值
    在这里插入图片描述

定义函数的注意事项

def关键字的重要性

def是Python中定义函数的唯一关键字,不能省略,也不能替换为其他词汇。这是Python语法的硬性规定。

函数命名规范

函数名应该遵循Python的命名规范:

  • 只能包含字母、数字和下划线
  • 不能以数字开头
  • 应该使用小写字母,单词间用下划线分隔(蛇形命名法)
  • 名称应该具有描述性,能够表达函数的功能

参数列表的灵活性

参数列表可以为空,也可以包含多个参数。参数之间用逗号分隔,每个参数都可以有默认值。

返回值的处理

  • 如果函数需要返回数据,使用return语句
  • 如果没有显式的return语句,函数会默认返回None
  • return语句会立即结束函数的执行,后续代码不会被执行

好的函数名应该是一个动词短语,清楚地表达函数的功能。

# 函数命名示例
def good_function_name():  # 好的命名方式passdef calculate_student_average():  # 描述性命名pass# 避免这样的命名
def func():  # 太简单pass

函数参数

带有默认值的参数

在现实生活中,许多操作都有一些"默认设置"。比如,你去咖啡店点咖啡,如果不特别说明,店员可能会给你中杯、正常糖分的咖啡。在编程中,默认参数就是这样的概念——当用户没有提供某个参数时,函数会使用预设的默认值。

默认参数的优势在于:

  • 提高易用性:调用者不需要为每个参数都提供值
  • 向后兼容性:添加新参数时不会破坏现有代码
  • 减少代码重复:常用的参数值可以作为默认值
def create_profile(name, age, city="未知", profession="学生"):"""创建用户档案name: 姓名(必需参数)age: 年龄(必需参数)city: 城市(默认值: "未知")profession: 职业(默认值: "学生")"""profile = f"姓名: {name}, 年龄: {age}, 城市: {city}, 职业: {profession}"return profile# 不同的调用方式
print(create_profile("张三", 25))
print(create_profile("李四", 30, "北京"))
print(create_profile("王五", 28, "上海", "工程师"))

在这个例子中,nameage是必需参数,而cityprofession有默认值。这样设计的好处是:

  • 最简调用:只需提供姓名和年龄
  • 部分定制:可以指定城市,职业使用默认值
  • 完全定制:所有参数都可以自定义
    在这里插入图片描述

多参数函数

如果函数有多个参数,在调用时可以有两种传递参数的方式。

位置参数:基于参数位置传递

位置参数是最直观的参数传递方式,参数的值按照定义时的顺序传递给函数。这就像排队一样,第一个值给第一个参数,第二个值给第二个参数,以此类推。

def calculate_rectangle_info(length, width, height=1):"""计算矩形信息"""area = length * widthperimeter = 2 * (length + width)volume = length * width * heightreturn {'area': area,'perimeter': perimeter,'volume': volume}# 使用位置参数
result = calculate_rectangle_info(10, 5, 2)
print(f"面积: {result['area']}, 周长: {result['perimeter']}, 体积: {result['volume']}")

在这个例子中,10传给length,5传给width,2传给height。位置参数的优点是简洁明了,缺点是必须记住参数的顺序。
在这里插入图片描述

关键字参数:基于参数名传递

关键字参数允许我们通过参数名来传递值,这样就不需要记住参数的顺序了。这种方式特别适合参数较多或者参数含义不够直观的情况。

关键字参数的优势:

  • 提高可读性:代码自文档化,参数的含义一目了然
  • 顺序无关:不需要记住参数的顺序
  • 部分指定:可以只为某些参数使用关键字形式
# 使用关键字参数
result = calculate_rectangle_info(width=8, length=12, height=3)
print(f"面积: {result['area']}, 周长: {result['perimeter']}, 体积: {result['volume']}")
# 输出: 面积: 96, 周长: 40, 体积: 288# 混合使用位置参数和关键字参数
result = calculate_rectangle_info(15, width=6)  # length=15 (位置), width=6 (关键字)
print(f"面积: {result['area']}")  # 输出: 面积: 90

参数传递的重要规则

一旦使用了关键字参数,后续的所有参数都必须使用关键字形式。如果允许关键字参数后面跟位置参数,Python解释器将无法确定参数的正确对应关系。

def demo_function(a, b, c=10, d=20):return f"a={a}, b={b}, c={c}, d={d}"# 正确的调用方式
print(demo_function(1, 2))                    # a=1, b=2, c=10, d=20
print(demo_function(1, 2, 3))                 # a=1, b=2, c=3, d=20
print(demo_function(1, 2, d=30))              # a=1, b=2, c=10, d=30
print(demo_function(1, b=2, c=3, d=4))        # a=1, b=2, c=3, d=4# 错误的调用方式
# demo_function(a=1, 2)  # SyntaxError: 位置参数不能跟在关键字参数后面

在这里插入图片描述

可变参数:处理不确定数量的输入

在实际编程中,我们经常遇到不知道会有多少个参数的情况。比如,计算多个数字的平均值,数字的个数可能是2个,也可能是10个。这时候,可变参数就派上用场了。

Python提供了两种可变参数:

  • *args:接收任意数量的位置参数,存储为元组
  • **kwargs:接收任意数量的关键字参数,存储为字典

可变参数的强大之处在于:

  • 灵活性:可以处理任意数量的参数
  • 扩展性:添加新的参数不需要修改函数定义
  • 通用性:同一个函数可以处理不同场景的需求
def calculate_average(*numbers):"""计算任意数量数字的平均值"""if not numbers:return 0total = sum(numbers)average = total / len(numbers)return round(average, 2)# 测试可变参数
print(calculate_average(10, 20, 30))         
print(calculate_average(1, 2, 3, 4, 5))       
print(calculate_average(100))               
def create_student_info(name, **kwargs):"""创建学生信息,接受任意关键字参数"""info = f"学生姓名: {name}\n"for key, value in kwargs.items():info += f"{key}: {value}\n"return info# 测试关键字参数
student = create_student_info("张三",age=20,major="计算机科学",grade="大二",gpa=3.8
)
print(student)

在这个例子中,*numbers接收了所有传入的数字,函数内部可以像处理元组一样处理这些数字。第二个例子中,**kwargs接收了除name之外的所有关键字参数,这样我们可以为学生添加任意的额外信息,而不需要修改函数定义。
在这里插入图片描述


函数变量作用域

变量作用域是编程中一个既基础又容易混淆的概念。如果把程序比作一个大楼,那么作用域就像是楼层和房间——不同楼层的房间可能有相同的房间号,但它们是完全独立的空间。
在这里插入图片描述

局部变量:函数内部的私有空间

局部变量是在函数内部定义的变量,它们的"生命周期"仅限于函数执行期间。就像是你在酒店房间里放置的物品,只有在你住在这个房间的时候才能使用,一旦退房,这些物品就不再属于你了。
局部变量的特点:

  • 生命周期短:函数开始执行时创建,函数结束时销毁
  • 作用域有限:只能在定义它的函数内部使用
  • 互不干扰:不同函数中的同名局部变量是完全独立的
  • 优先级高:当局部变量和全局变量同名时,函数内部优先使用局部变量

全局变量:程序的公共资源

全局变量是在函数外部(模块级别)定义的变量,它们可以被程序中的任何函数访问。这就像是大楼的公共设施,所有住户都可以使用,但需要遵循一定的使用规则。

全局变量的特点:

  • 生命周期长:从定义开始,直到程序结束
  • 作用域广:整个模块中的所有函数都可以访问
  • 共享性:多个函数可以共享同一个全局变量
  • 需谨慎修改:修改全局变量会影响所有使用它的地方

作用域

让我们通过一个详细的例子来理解局部变量和全局变量的区别:

# 全局变量
global_var = "我是全局变量"
counter = 0def scope_demo():# 局部变量local_var = "我是局部变量"counter = 10  # 这是局部变量,不会影响全局的counterprint(f"函数内部 - 局部变量: {local_var}")print(f"函数内部 - 全局变量: {global_var}")print(f"函数内部 - 局部counter: {counter}")# 调用函数
scope_demo()
print(f"函数外部 - 全局变量: {global_var}")
print(f"函数外部 - 全局counter: {counter}")  # 仍然是0,没有被函数内部的赋值影响# 尝试访问局部变量(会报错)
# print(local_var)  # NameError: name 'local_var' is not defined

在这里插入图片描述

使用global关键字:突破局部限制

有时候,我们确实需要在函数内部修改全局变量。这时候,global关键字就派上用场了。它告诉Python:“我要修改的是全局变量,不是创建新的局部变量”。

使用global的注意事项

  • 只有在需要修改全局变量时才使用global
  • 过多的全局变量会让程序难以维护
  • 考虑使用类或者传递参数来替代全局变量
total_sales = 0  # 全局变量def add_sale(amount):global total_sales  # 声明要修改全局变量total_sales += amountprint(f"本次销售: {amount}, 总销售额: {total_sales}")def get_total_sales():return total_sales# 测试全局变量修改
print(f"初始总销售额: {get_total_sales()}")  # 输出: 0add_sale(1000) 
add_sale(1500) 
add_sale(800) print(f"最终总销售额: {get_total_sales()}") 

在这里插入图片描述

嵌套函数中的作用域:nonlocal的力量

Python支持嵌套函数(函数内部定义的函数),这创造了更复杂但也更灵活的作用域层次。在嵌套函数中,有时我们需要修改外层函数的局部变量,这时候nonlocal关键字就发挥作用了。

嵌套函数的特性:

  • 闭包特性:内层函数可以访问外层函数的变量
  • 状态修改:通过nonlocal可以修改外层函数的局部变量
  • 数据封装:外层函数的变量对外部是不可见的,实现了良好的封装
def outer_function(x):"""外层函数"""outer_var = "外层变量"def inner_function(y):"""内层函数"""inner_var = "内层变量"nonlocal outer_var  # 声明要修改外层函数的变量outer_var = "修改后的外层变量"print(f"内层函数 - 参数y: {y}")print(f"内层函数 - inner_var: {inner_var}")print(f"内层函数 - outer_var: {outer_var}")print(f"内层函数 - 参数x: {x}")return inner_varprint(f"外层函数 - 调用前outer_var: {outer_var}")result = inner_function(20)print(f"外层函数 - 调用后outer_var: {outer_var}")return result# 测试嵌套函数
returned_value = outer_function(10)
print(f"返回值: {returned_value}")

在这里插入图片描述

作用域查找顺序(LEGB规则)

当Python解释器遇到一个变量名时,它会按照特定的顺序查找这个变量。这个顺序被称为LEGB规则:

  • L (Local):局部作用域,函数内部的变量
  • E (Enclosing):嵌套作用域,外层函数的局部变量
  • G (Global):全局作用域,模块级别的变量
  • B (Built-in):内置作用域,Python内置的变量和函数

LEGB规则的重要意义:

  • 查找效率:Python会从最近的作用域开始查找,提高效率
  • 变量屏蔽:内层作用域的同名变量会"屏蔽"外层的变量
  • 预测性:理解这个规则可以帮助我们预测变量的值
builtin_name = len  # 使用内置函数len
global_name = "全局作用域"def enclosing_function():enclosing_name = "嵌套作用域"def local_function():local_name = "局部作用域"# Python按照LEGB顺序查找变量print(f"局部变量: {local_name}")           # L - Localprint(f"嵌套变量: {enclosing_name}")       # E - Enclosingprint(f"全局变量: {global_name}")          # G - Globalprint(f"内置函数: {builtin_name([1,2,3])}")  # B - Built-inlocal_function()enclosing_function()

合理使用不同作用域的变量,可以让我们的代码更加清晰、安全和易于维护。


函数的高级特性

函数作为参数

在Python中,函数是"一等公民",这意味着函数可以像变量一样被传递、赋值和操作。函数作为参数传递给其他函数的特性,被称为高阶函数,这是函数式编程的重要特征。

def apply_operation(numbers, operation_func):"""将操作函数应用到数字列表上"""return [operation_func(x) for x in numbers]def square(x):return x ** 2def cube(x):return x ** 3# 测试
numbers = [1, 2, 3, 4, 5]
print(f"原始数字: {numbers}")
print(f"平方结果: {apply_operation(numbers, square)}")
print(f"立方结果: {apply_operation(numbers, cube)}")

这个例子展现了高阶函数的强大之处:

  • 代码复用apply_operation可以应用任何单参数函数
  • 逻辑分离:数据处理逻辑和具体操作逻辑分开
  • 扩展性强:添加新的操作只需要定义新函数,不需要修改主逻辑

Lambda函数:简洁的匿名函数

对于简单的操作,定义完整的函数可能会显得冗余。Lambda函数提供了一种创建小型匿名函数的方式,特别适合在高阶函数中使用。

Lambda函数的特点:

  • 语法简洁:一行代码就能定义函数
  • 即用即抛:通常用于一次性的简单操作
  • 功能限制:只能包含表达式,不能包含语句
# 使用lambda函数
numbers = [1, 2, 3, 4, 5]
print(f"双倍结果: {apply_operation(numbers, lambda x: x * 2)}")
print(f"平方根结果: {apply_operation(numbers, lambda x: x ** 0.5)}")# 排序中使用lambda
students = [("Alice", 85),("Bob", 92),("Charlie", 78),("Diana", 96)
]# 按成绩排序
sorted_by_score = sorted(students, key=lambda x: x[1], reverse=True)
print(f"按成绩排序: {sorted_by_score}")

总结

编程是一门需要实践的技艺。理论固然重要,但唯有在真实项目中不断磨砺应用,才能真正融会贯通。愿你在这条Python编程之路上不断精进,写出更优雅高效的代码!

我是颜颜yan_,期待与您交流探讨。
在这里插入图片描述

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

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

相关文章

ps aux 和 ps -ef

在 Linux/Unix 系统中&#xff0c;ps aux 和 ps -ef 都是用于查看进程信息的命令&#xff0c;结合 grep node 可以筛选出与 Node.js 相关的进程。它们的核心功能相似&#xff0c;但在输出格式和选项含义上有区别&#xff1a;1. 命令对比命令含义主要区别ps auxBSD 风格语法列更…

Spark ML 之 LSH

src/test/scala/org/apache/spark/ml/feature/BucketedRandomProjectionLSHSuite.scala test("approxSimilarityJoin for self join") {val data = {for (i <- 0 until 24) yield Vectors

关键成功因素法(CSF)深度解析:从战略目标到数据字典

关键成功因素法由John Rockart提出&#xff0c;用于信息系统规划&#xff0c;帮助企业识别影响系统成功的关键因素&#xff0c;从而确定信息需求&#xff0c;指导信息技术管理。该方法通过识别关键成功因素&#xff0c;找出关键信息集合&#xff0c;确定系统开发优先级&#xf…

Django母婴商城项目实践(六)- Models模型之ORM操作

6、Models模型操作 1 ORM概述 介绍 Django对数据进行增删改操作是借助内置的ORM框架(Object Relational Mapping,对象关系映射)所提供的API方法实现的,允许你使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库。 简单来说,ORM框架的数据操作API是在 QuerySet…

【PTA数据结构 | C语言版】哥尼斯堡的“七桥问题”

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 哥尼斯堡是位于普累格河上的一座城市&#xff0c;它包含两个岛屿及连接它们的七座桥&#xff0c;如下图所示。 可否走过这样的七座桥&#xff0c;而且每桥只走过一次&#xff1f;瑞士数学家欧拉(Leo…

Redis 详解:从入门到进阶

文章目录前言一、什么是 Redis&#xff1f;二、Redis 使用场景1. 缓存热点数据2. 消息队列3. 分布式锁4. 限流与防刷5. 计数器、排行榜三、缓存三大问题&#xff1a;雪崩 / 穿透 / 击穿1. ❄️ 缓存雪崩&#xff08;Cache Avalanche&#xff09;2. &#x1f50d; 缓存穿透&…

QCustomPlot 使用教程

下载网址&#xff1a;官方网站&#xff1a;http://www.qcustomplot.com/我的环境是 window10 qt5.9.9 下载后&#xff0c;官网提供了很多例子。可以作为参考直接运行自己如何使用&#xff1a;第一步&#xff1a;使用QCustomPlot非常简单&#xff0c;只需要把qcustomplot.cpp和…

基于springboot+mysql的作业管理系统(源码+论文)

一、开发环境 1 Spring Boot框架简介 描述&#xff1a; 简化开发&#xff1a;Spring Boot旨在简化新Spring应用的初始搭建和开发过程。配置方式&#xff1a;采用特定的配置方式&#xff0c;减少样板化配置&#xff0c;使开发人员无需定义繁琐的配置。开发工具&#xff1a;可…

LVS 集群技术基础

LVS(linux virual server)LVS集群技术---NAT模式一.准备四台虚拟机1.client(eth0ip:172.254.100)2.lvs(eth0ip:172.254.200;eth1ip:192.168.0.200)3.rs1(eht0ip:192.168.0.10)4.rs2(eth0ip:192.168.0.20)二&#xff1a;在rs1和rs2安装httpd功能dnf/yum install htppd -y三&…

Oracle RU19.28补丁发布,一键升级稳

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;15年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝15万 擅长主流Oracle、MySQL、PG、高斯及…

lvs 集群技术

LVS概念LVS&#xff1a;Linux Virtual Server&#xff0c;负载调度器&#xff0c;是一种基于Linux操作系统内核的高性能、高可用网络服务负载均衡解决方案。LVS工作原理基于网络层&#xff08;四层&#xff0c;传输层&#xff09;的负载均衡技术&#xff0c;它通过内核级别的IP…

AR巡检和传统巡检的区别

随着工业4.0时代的到来&#xff0c;数字化转型逐渐成为各行各业提升效率、保障安全和降低成本的关键。而在这一转型过程中&#xff0c;巡检工作作为确保设备稳定运行的重要环节&#xff0c;逐步从传统方式走向智能化、数字化。尤其是增强现实&#xff08;AR&#xff09;技术的引…

Axure设计设备外壳 - AxureMost 落葵网

在UI设计中&#xff0c;设备外壳&#xff08;硬件外壳与界面中的“虚拟外壳”&#xff09;和背景是构成视觉体验的核心元素&#xff0c;它们不仅影响美观&#xff0c;更直接关联用户对功能的理解和操作效率。以下从设计角度详细解析其作用与使用逻辑&#xff1a; 一、设备外壳&…

基于深度学习的电信号分类识别与混淆矩阵分析

基于深度学习的电信号分类识别与混淆矩阵分析 1. 引言 1.1 研究背景与意义 电信号分类识别是信号处理领域的重要研究方向,在医疗诊断、工业检测、通信系统等多个领域有着广泛的应用。传统的电信号分类方法主要依赖于手工提取特征和浅层机器学习模型,但这些方法往往难以捕捉…

Git 和Gitee远程连接 上传和克隆

第一步创建远程库第二步初始化本地库创建链接删掉.idea 和target(这两个没用运行就自动生成了)右键空白处选择Git Bash Here 初始化本地库git init建立远程连接建立连接这里是我的地址&#xff0c;后面拼接你的地址git remote add origin https://gitee.com/liu-qing_liang/git…

零基础100天CNN实战计划:用Python从入门到图像识别高手

一、为什么你需要这份100天CNN学习计划&#xff1f; 在人工智能领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09; 是计算机视觉的基石技术。无论是人脸识别、医学影像分析还是自动驾驶&#xff0c;CNN都扮演着核心角色。但对于初学者来说&#xff0c;面对复杂的数学公…

Python Matplotlib中的fontdict参数说明

文章目录 1 fontdict 参数的常用属性 1.1 使用示例 1.2 其他注意事项 1.3 结合其他参数 各位老板好, 在 Python 的 Matplotlib 库中,fontdict 参数用于定义文本属性的字典。这些属性包括字体大小、颜色、样式等,主要用于控制标题、标签和其他文本元素的显示效果。通过将 font…

25数据库三级备考自整理笔记

备考策略&#xff1a;博主是边做题边学习知识点的&#xff0c;从每个章节->每套真题的流程&#xff0c;知识点清晰详细&#xff0c;喜欢的请点个关注和收藏&#xff0c;祝大家考试顺利&#xff0c;必过必过必过&#xff01;一、数据库应用系统开发方法1.数据库的三级模式&am…

文娱投资的逆势突破:博派资本的文化旅游综合体战略

在多数资本因“变现难、政策风险、退出缓慢”等问题纷纷撤离文娱赛道时&#xff0c;博派资本创始人郑兰却选择逆势而上&#xff0c;聚焦线下文化消费&#xff0c;并推出了全新的文化旅游综合体战略。郑兰深刻认为&#xff0c;2025年将成为区域经济和文化产业复苏的关键节点。她…

「日拱一码」033 机器学习——严格划分

目录 简单随机划分&#xff08;train_test_split&#xff09; 分组划分&#xff08;Group Splitting&#xff09; 简单分组划分 (Group Splitting) 分层分组划分 (Stratified Group Splitting) 交叉验证法&#xff08;Cross-Validation&#xff09; 分组K 折交叉验证&…