当前位置: 首页 > news >正文

Python学习心得函数

一、函数的定义及调用

1.函数的定义:

函数的定义:函数是将一段能实现某种特定功能的代码,使用函数名进行封装,并通过函数名称进行调用。从而达到一次编写,多次调用的目的。

2.函数类型分为两类:

(1)内置函数:

输出函数:print()

输入函数:input()

列表定义函数:list()

(2)自定义函数:

def 函数名称(参数列表):函数体[return返回值列表]

注:函数名称是自己去定义的,参数列表里面有多个参数。

注:return不是必须需要的,可以省略不写。

3.函数调用:

函数名(参数列表)

注:通过函数名进行调用函数。

注:对函数的个个参数进行实际的赋值。

注:使用实际参数参与函数功能的实现。

 二、函数的参数传递

1.位置参数

(1)位置参数的定义:是指调用时的参数个数和顺序必须与定义的参数个数和顺序相同。

(2)位置参数的运用:

def happy_birthday(name,age):print('祝'+name+'生日快乐')print(str(age)+'生日快乐')#调用
happy_birthday('wjl',18)

2.关键字参数:

(1)关键字参数的定义:是在函数调用时,使用”形参名称=值“的形式进行传参,传递参数可以与定义时的参数顺序不同。

(2)关键字参数的运用:

def happy_birthday(name,age):print('祝'+name+'生日快乐')print(str(age)+'生日快乐')#关键字传参
happy_birthday(age=18,name='wjl')
#使用的关键字传参是打乱自定义函数中参数的顺序,但是参数的关键字还是和对应的数据类型相对应happy_birthday('wjl',age=18)
#函数调用的过程中,位置传参和关键字传参是可以同时使用的。
#上面的两种传参方式的同时使用有个条件,就是必须位置传参在前,关键字传参在后。

注:使用的关键字传参是打乱自定义函数中参数的顺序,但是参数的关键字还是和对应的数据类型相对应。

注:函数调用的过程中,位置传参和关键字传参是可以同时使用的。

注:上面的两种传参方式的同时使用有个条件,就是必须位置传参在前,关键字传参在后。

3.默认值参数:

(1)默认值参数的定义:是在函数定义时,直接对形式参数进行赋值,在调用时如果该参数不传值,将使用默认值,如果该参数传值,则使用传递的值。

注:但是这里有一个输入参数的顺序,必须是按照函数定义时的顺序传递。

(2)默认值参数的运用:

def happy_birthday(name='wjl',age=18):print('祝'+name+'生日快乐')print(str(age)+'生日快乐')#调用
happy_birthday()#不用传参
happy_birthday('ljw')#位置传参
happy_birthday(age=19)#关键字传参,name采用默认值

3.可变参数:

可变参数分为两种:

(1)个数可变的位置参数:在参数前加一颗星(*para),para为形式参数的名称,函数调用时可接收任意个数的实际参数,并放到一个元组中。

个数可变的位置参数的运用:

def fun(*para):print(type(para))for item in para:print(item)#调用
fun(10,20,30,40)
fun(10)
fun(10,20)
fun([10,20,30,40])#实际上传的是一个参数
#在调用时,参数前加一颗星,分将列表进行解包
fun(*[11,22,33,44])

 注:个数可变的位置参数,就是可以输入多个值,将这些值一起输入到函数中,输入的这些参数都是元组类型。

注:将一个包含多个元素的列表作为实际参数输入,fun函数只能将其整体看作一个参数。但是可以使用解包,将其不被看做一个参数。

#在调用时,参数前加一颗星,分将列表进行解包
fun(*[11,22,33,44])

(2)个数可变的关键字参数:在参数前加两颗星(**para),在函数调用时可接收任意多个”参数=值“形式的参数,并放到一个字典中。

注:参数的类型是字典类型,输入参数的时候要使用关键字传参,得是赋值的形式,这也就与其类型相对应上了,因为参数输入到函数后的类型为字典型,传参结构与构建字典时的结构就很相似。

注:个数是可以发生改变的,所以可根据自己的情况进行输入。

 个数可变的关键字参数的运用:

#个数可变的关键字参数
def fun2(**kwpara):print(type(kwpara))for key,value in kwpara.items():print(key,'----',value)#调用
fun2(name='wjl',age=19,weight=120)#关键字参数

如果上面传参为一个字典时,会出现异常,我们就需要对这个字典进行解包操作。

5.讨论有关参数的混合使用的几个问题:

关于参数这部分我们已经在前面提到过了,有些参数是可以同时使用的,比如在调用函数传递参数时,我们使用到了位置参数和关键字参数同时使用的情况。

前面遇到混合使用参数的情况有以下几种情况:
(1)在调用函数输入实际参数时,我们用到了位置参数和关键字参数的混合使用。

happy_birthday('wjl',age=18)
#函数调用的过程中,位置传参和关键字传参是可以同时使用的。
#上面的两种传参方式的同时使用有个条件,就是必须位置传参在前,关键字传参在后。

注:函数调用的过程中,位置传参和关键字传参是可以同时使用的。上面的两种传参方式的同时使用有个条件,就是必须位置传参在前,关键字传参在后。

在这个注意事项里为什么必须位置参数在前而关键字参数在后呢,这是因为定义函数时,我们把参数的顺序给定了下来,这个参数好比就是通道传递一样,这个只能是这个类型的参数,不能是其他的类型。我们在考虑起那面说的位置传参在前,关键字传参在后,就印证了上面的说法,因为前一个参数的类型是字符型而第二个参数类型是整型,如果这两参数顺序搞错的化,就会异常。

(2)在定义函数时,我们能将位置参数和默认参数一起使用。

def fun(a,b=20):pass

 但是使用时要注意的是位参在前而默认参在后。

def fun(a,b=20):passdef fun(a=20,b):#报错了!pass
#a位置参数,b为默认值参数。
#在定义函数时,位置参数和默认值参数可以混合的使用。
# 但是必须是位置参数在前,默认值参数在后。

这个底层逻辑和我们刚才讨论的一样,也就是通道对应情况问题,这个未知参数和实际参数是一一对应的,不能将其顺序搞混了。再说回来为什么关键字可以交换顺序呢,这是因为它采用的是一种给参数赋值的形式针对性就在那,不用考虑对应问题。

三、函数的返回值

返回值的定义:如果函数的运行结果需要在其他的函数中运用的话,那么这个函数就应该被定义为带返回值的函数。

函数的运行结果使用return关键字进行返回。return可以出现在函数中的任意一个位置,用于结束函数。返回值可以是一个值,或多个值,如果返回的值是多个,结果是一个元组。

当返回值是一个的时候:

#函数的返回值
def calc(a,b):print(a+b)calc(10,20)
print(calc(1,2))#Nonedef calc2(a,b):s=a+breturn sprint('-'*10)
get_s=calc2(1,2)
print(get_s)get_s2=calc2(calc2(1,2),3)
print(get_s2)

当返回值是为多个的时候:

注:返回值为多个的时候返回的是一个元组类型的值。如果想一个一个获得返回值的话需要进行解包操作。

def get_sum(num):s=0odd_sum=0#奇数和even_sum=0#偶数和for i in range(1,1+num):if i%2!=0:odd_sum+=ielse:even_sum+=is+=ireturn odd_sum,even_sum,s#三个值result=get_sum(10)
#解包就值
a,b,c=get_sum(10)
print(a,b,c)

 四、变量的作用域

变量作用域的定义:指变量起作用的范围,根据作用的大小可分为局部变量和全局变量。

局部变量:

定义:在函数定义处的参数和函数内部定义的变量

作用范围:仅在函数内部,函数执行结束,局部变量的生命周期也结束

全局变量:

定义:在函数外定义的变量或函数内部使用global关键字修饰的变量

作用范围:在整个程序,程序运行结束,全局变量的生命周期才结束

相关文章:

Python学习心得函数

一、函数的定义及调用 1.函数的定义: 函数的定义:函数是将一段能实现某种特定功能的代码,使用函数名进行封装,并通过函数名称进行调用。从而达到一次编写,多次调用的目的。 2.函数类型分为两类: &#…...

神经网络实验——MLP

目录 1 目的 2 方法 3 源代码 4 结果 1 目的 ①熟悉 Python 的输入输出流; ②学会使用 matplotlib进行图像可视化; ③掌握神经网络的基本原理,学会使用 sklearn 库中的 MLPClassifier 函数构建基础的多层感知机神经网络分类器; ④学会使用网格查找进行超参数优…...

配置Api自动生成

我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/TVlJdMgYLoDJrsxAwMgcCE14nxt 使用Springfox Swagger生成API,并导入Postman,完成API单元测试 Swagger: 是一套API定义的规范,按照这套规范的要求去定义接口及接口相关信息,再通过可…...

dify-AI 私有部署可修改前端页面

dify文档 官方文档:欢迎使用 Dify | Dify 源码:https://github.com/langgenius/dify.git 安装docker 官网:https://www.docker.com/ 部署服务到docker cd dify cd docker cp .env.example .env docker compose up -d查看效果 http://localh…...

使用 @Results 注解来手动指定字段映射

在 MyBatis 中,Results 注解用于手动指定查询结果的字段映射,尤其当数据库列名与 Java 对象的字段名不一致时。你可以通过 Results 和 Result 注解来精确控制每一列与类属性之间的映射关系。 示例:使用 Results 注解来手动指定字段映射 假设你…...

数据治理中 大数据处理一般都遵循哪些原则

在数据治理中,大数据处理通常遵循以下原则: 最小化原则:企业应只收集实现特定目的所需的数据,避免数据冗余和安全风险。 合法性原则:企业必须遵守相关法律法规,确保数据处理符合法律要求,降低法…...

从0到1:STM32温控系统开发踩坑指南

1. 设计目标 核心功能&#xff1a;实现0-100℃范围内的温度闭环控制 性能指标&#xff1a; 测量精度&#xff1a;0.5℃&#xff08;使用DS18B20传感器&#xff09; 控制响应时间&#xff1a;<5秒 显示分辨率&#xff1a;0.1℃ 扩展功能&#xff1a; LCD实时显示当前温度…...

修改时无条件,可以自定义id条件(通过查询)

在这段代码中&#xff0c;$(row).attr(data-rarity, data.rarity); 的作用是给表格的每一行 (row) 添加一个 data-rarity 的自定义属性&#xff0c;属性的值是该行数据中的 rarity 字段。 解释&#xff1a; 1.row 是当前行的 DOM 元素。 2.data.rarity 是从 data 对象中获取的…...

工业制造能耗管理新突破,漫途MTIC-ECM平台助力企业绿色转型!

在工业制造领域&#xff0c;能源消耗一直是企业运营成本的重要组成部分。随着“双碳”目标的推进&#xff0c;如何实现高效能耗管理&#xff0c;成为制造企业亟待解决的问题。漫途MTIC-ECM能源能耗在线监测平台&#xff0c;结合其自研的硬件产品&#xff0c;为工业制造企业提供…...

实现一个简单的协同过滤推荐算法

题目描述&#xff1a; 协同过滤是推荐系统中的一种常用技术&#xff0c;其基本思想是利用用户之间的相似性或物品之间的相似性来进行推荐。本次面试题要求实现一个基于用户的协同过滤推荐算法。 具体要求&#xff1a; 定义两个类&#xff1a;User 和 Item&#xff0c;分别表示用…...

eNSP防火墙综合实验

一、实验拓扑 二、ip和安全区域配置 1、防火墙ip和安全区域配置 新建两个安全区域 ip配置 Client1 Client2 电信DNS 百度web-1 联通DNS 百度web-2 R2 R1 三、DNS透明代理相关配置 1、导入运营商地址库 2、新建链路接口 3、配置真实DNS服务器 4、创建虚拟DNS服务器 5、配置D…...

操作系统知识(二)

1、线程切换进行了哪些动作 在操作系统中&#xff0c;线程切换&#xff08;也称为上下文切换&#xff09;是指操作系统将 CPU 的控制权从一个线程转移到另一个线程的过程。这个过程涉及多个步骤和动作&#xff0c;主要包括以下几个方面&#xff1a; 1. 保存当前线程的上下文 …...

图论:tarjan 算法求解强连通分量

题目描述 有一个 n n n 个点&#xff0c; m m m 条边的有向图&#xff0c;请求出这个图点数大于 1 1 1 的强连通分量个数。 输入格式 第一行为两个整数 n n n 和 m m m。 第二行至 m 1 m1 m1 行&#xff0c;每一行有两个整数 a a a 和 b b b&#xff0c;表示有一条…...

Spring中Bean的四种实例化方法

Bean的四种实例化方法 Bean是Spring核心的概念&#xff0c;另外一个核心的概念是AOP。官网上&#xff0c;Bean的解释是&#xff1a; In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans…...

专利申请要求

专利申请并不要求发明已经实际制造出来&#xff0c;但需要具备完整且可行的技术方案。以下是详细的解释和申请流程&#xff1a; 一、专利申请的核心要求 技术方案而非实物 专利保护的是创新性的技术方案或设计理念&#xff0c;而非实物产品本身。只要你能清晰描述技术原理、结构…...

解锁 JavaScript 异步编程:Promise 链式操作、async/await 与 Promise.all 深度剖析

1.引言 在 JavaScript 的世界里,异步编程是一个核心且关键的概念。随着 Web 应用的复杂度不断提升,处理多个异步操作的需求也日益增长。传统的回调函数方式容易陷入 “回调地狱”,让代码的可读性和可维护性大打折扣。而 Promise 的出现为异步编程带来了新的曙光,后续又衍生…...

Centos虚拟机扩展磁盘空间

Centos虚拟机扩展磁盘空间 扩展前后效果1 虚拟机vmware关机后&#xff0c;编辑2 扩展2.1 查看2.2 新建分区2.3 格式化新建分区ext42.3.1 格式化2.3.2 创建2.3.3 修改2.3.4 查看 2.4 扩容2.4.1 扩容2.4.1 查看 扩展前后效果 df -h1 虚拟机vmware关机后&#xff0c;编辑 2 扩展 …...

记录一次部署PC端网址全过程

当我查看我之前写的文章时、顿时惊奇发出感慨&#xff1a;啥时候写的&#xff1f;是我写的么&#xff1f;疑惑重重… 所以说&#xff0c;好记性不如烂笔头。 记录一次部署PC端网址全过程 部署PC端网址分是三步&#xff1a;第一步&#xff1a;申请域名并映射到外网IP &#xff0…...

利用 OpenCV 进行棋盘检测与透视变换

利用 OpenCV 进行棋盘检测与透视变换 1. 引言 在计算机视觉领域&#xff0c;棋盘检测与透视变换是一个常见的任务&#xff0c;广泛应用于 摄像机标定、文档扫描、增强现实&#xff08;AR&#xff09; 等场景。本篇文章将详细介绍如何使用 OpenCV 进行 棋盘检测&#xff0c;并…...

Java Spring boot 篇:常用注解

Configuration 作用 Configuration 注解的核心作用是把一个类标记为 Spring 应用上下文里的配置类。配置类就像一个 Java 版的 XML 配置文件&#xff0c;能够在其中定义 Bean 定义和 Bean 之间的依赖关系。当 Spring 容器启动时&#xff0c;会扫描这些配置类&#xff0c;解析其…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...