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

Python入门--函数

目录

1. 函数介绍

2. 函数的定义

3. 函数的参数

4. 函数的返回值

5. 函数说明文档

6. 函数的嵌套调用

7. 函数的作用域

(1). 局部变量

(2). 全局变量

(3). global关键字


1. 函数介绍

         函数:是组织好的可重复使用的,用来实现特定功能的代码段

name = "CCZU"
print(len(name))

        为什么随时都可以使len()统计长度呢?因为,len()Python内置的函数,这是提前写好的,可以被重复利用,专门用来统计字符串长度这一功能。我们使用过的:input()print()str()int()等都是Python的内置函数

        如果库里没有设置这一内置函数,我们在每次想用这个功能的时候,就要实现下面这好几行代码。

str = "string"
length = 0
for i in str:length+=1
print(length)

        像这种需要经常复用的功能,为了降低代码的重复,Python已经贴心的为大家写好了,想用的时候直接找到对应功能的函数使用即可,这就是将这个功能封装成了函数。

def my_len(str):length = 0for i in str:length += 1print(length)# 每次使用的时候直接调用即可
my_len("hello")
my_len("what")
my_len("please")

        那我们下面来学习一下怎么将这些频繁使用的代码封装成函数。

2. 函数的定义

注意:

① 参数如不需要,可以省略

② 返回值如不需要,可以省略

③ 函数必须先定义后使用

         函数定义之后,想使用定义的函数就要调用,根绝我们的定义来决定怎么调用。有返回值就要用变量来接收,有参数一定要传参数。

def say_hi():print("hi")
# 调用函数
say_hi()

3. 函数的参数

        传入参数的功能是:在函数进行计算的时候,接受外部(调用时)提供的数据。

        比如我们要实现一个将两个数相加的功能函数,那我们肯定要让这个函数知道需要哪两个数相加,参数大家可以理解为参考的数据。也就是说这个相加的函数想知道自己要让哪些数加起来,就参考我们传的这些参数。

def add(x,y):print(x+y)
  • 函数定义中,提供的xy,称之为:形式参数(形参),表示函数声明将要使用2参数
  • 参数之间使用逗号进行分隔
  • 函数调用中,提供的56,称之为:实际参数(实参),表示函数执行时真正使用的参数
  • 传入的时候,按照顺序传入数据,使用逗号分隔

        最后一点大家要尤其注意,因为如果这个功能是实现两个数相除的,那么1/2和2/1可是完全不一样的两个结果。 

4. 函数的返回值

        如果我们想在调用函数的时候用一个变量接收函数调用后的结果,这个时候需要给函数加上返回值。

def add(x,y):return x+yresult = add(1,2)
print(result)

        函数体在遇到return后就结束了,所以写在return后的代码不会执行。

        如果函数没有使用return语句返回数据,那么函数实际上也是有返回值的。Python中有一个特殊的字面量:None,其类型是:<class NoneType>返回值的函数,实际上就是返回None这个字面

        None表示:空的、无实际意义的意思函数返回的None,就表示这个函数没有返回什么有意义的内容也就是返回了空的意思。

def say_he11o():print("He11o...")# 使用变量接收say_he11o函数的返回值
result = say_he11o()
# 打印返回值
print(result) # 结果None# 打印返回值类型
print(type(result)) # 结果<cass'NoneType'>

        None也可以主动使用return返回,效果等同于不写return语句。

        None作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景。

  • 用在函数无返回值
  • 用在if判断上:if判断中,None等同于False一般用于在函数中主动返回None,配合if判断做相关处理
def check_age(age):if age > 18:return "success"return Noneresult = check_age(5)
if not result:# 进入if表明result是None值,也就是Falseprint("未成年,不可进入")
  • 用于声明无内容的变量上定义变量,但暂时不需要变量有具体值,可以用None来代替
name = None

5. 函数说明文档

        函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低。我们可以给函数通过多行注释的形式添加说明文档,辅助理解函数的作用。我们在函数体之前写上函数参数表示什么,返回值什么,函数功能是什么。

def add(x, y):"""add函数可以接收2个参数,进行2数相加的功能:param x: 形参x表示相加的其中一个数字:param y: 形参y表示相加的另一个数字:return: 返回值是2数相加的结果"""result = x + yprint(f"2数相加的结果是: {result}")return result

6. 函数的嵌套调用

        所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数

# 定义函数func_b
def func_b():print("---2---")# 定义函数func_a,并在内部调用func_b
def func_a():print("---1---")# 嵌套调用func_bfunc_b()print("---3---")# 调用函数func_a
func_a()

        如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次函数A执行的位置 

7. 函数的作用域

        变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用主要分为两类:局部变量和全局变量

(1). 局部变量

        局部变量是定义在函数体内部的变量,即只在函数体内部生效

def testA():num = 100print(num)testA() # 100print(num) # 报错:name 'num'is not defined

        变量a是定义在`testA`函数内部的变量,在函数外部访问则立即报错。  

        局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。

(2). 全局变量

        所谓全局变量,指的是在函数体内、外都能生效的变量

        如果有一个数据,在函数A和函数B中都要使用就要这个数据存储在一个全局变量里面,也就是定义在函数的外面

# 定义全局变量a
num = 100# 定义函数testA,并访问全局变量num
def testA():print(num)# 定义函数testB,并访问全局变量num
def testB():print(num)testA() # 100
testB() # 100
print(num) # 100

(3). global关键字

        如果我们想要在函数内部对全局变量的值进行修改,修改的值仅在函数体内部有效。

# 定义全局变量a
num = 100# 定义函数testA,并访问变量num
def testA():print(num)# 定义函数testB,并访问变量num
def testB():num = 300print(num)testA() # 100
testB() # 300
print(num) # 100

        这是因为testB里num=300实际上是testB自己又重新定义了一个num的局部对象,跟全局变量num已经不是同一个东西了。为了让这个局部变量num变回全局变量,我们引入了global关键字。

# 定义全局变量a
num = 100# 定义函数testA,并访问全局变量num
def testA():print(num)# 定义函数testB,并访问全局变量num
def testB():# global关键字用于将变量声明为全局变量global numnum = 300print(num)testA() # 100
testB() # 300
print(num) # 300

相关文章:

Python入门--函数

目录 1. 函数介绍 2. 函数的定义 3. 函数的参数 4. 函数的返回值 5. 函数说明文档 6. 函数的嵌套调用 7. 函数的作用域 (1). 局部变量 (2). 全局变量 (3). global关键字 1. 函数介绍 函数&#xff1a;是组织好的&#xff0c;可重复使用的&#xff0c;用来实现特定功能…...

winFrom界面无法打开

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…...

【Linux】Ubuntu20.04上使用RabbitVCS的图形化SVN

文章目录 1、RabbitVCS1.1、RabbitVCS 介绍1.2、RabbitVCS 主要功能1.3、Ubuntu下 TortoiseSVN 替代者 2、安装2.1、命令安装2.2、安装使用2.3、使用权限 3、解决SVN无法保存密码问题3.1、问题描述3.2、解决方法 1、RabbitVCS 1.1、RabbitVCS 介绍 它是一款Linux系统下的图形…...

DMA直接存储器存取

参考视频&#xff1a;[8-1] DMA直接存储器存取_哔哩哔哩_bilibili DMA简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源 12个独立可…...

java计算机毕设课设—坦克大战游戏

这是什么系统&#xff1f; 坦克大战游戏是一款以坦克为主题的射击游戏&#xff0c;旨在为玩家提供一个刺激、有趣的游戏体验。该游戏不仅拥有丰富的功能&#xff0c;还注重玩家的互动体验。此系统是使用Java语言实现坦克大战游戏程序&#xff0c;玩家通过连接访问进入游戏&…...

Vue入门-指令学习-v-on

v-on 作用&#xff1a;注册事件 添加监听 提供处理逻辑 语法&#xff1a; v-on:事件名"内联语句" v-on:事件名"methods中的函数名" 注意&#xff1a;" v-on&#xff1a;"可以替换为" " v-on:click"XXX" --> cli…...

Maven的生命周期与依赖作用域介绍

说明&#xff1a;本文介绍Maven的生命周期&#xff0c;以及在pom.xml文件中每个依赖&#xff08;dependency标签内&#xff09;scope标签的内容。 Maven生命周期 在IDEA项目中&#xff0c;右侧边栏&#xff0c;点Maven&#xff0c;可以看到以下生命周期。 其中&#xff0c; c…...

Django学习笔记四:urls配置详解

Django是一个高级的Python Web框架&#xff0c;它鼓励快速开发和干净、实用的设计。URL配置是Django框架中非常重要的一部分&#xff0c;它定义了URL模式与视图函数之间的映射关系。以下是Django URL配置的详解&#xff1a; URL配置文件 通常&#xff0c;URL配置位于Django项…...

NIO的callback调用方式

1.消费者 public class CallbackClient {public static void main(String[] args) {try {SocketChannel socketChannel SocketChannel.open();socketChannel.connect(new InetSocketAddress("127.0.0.1", 8000));ByteBuffer writeBuffer ByteBuffer.allocate(32);…...

百度文心智能体平台开发萌猫科研加油喵

百度文心智能体平台开发萌猫科研加油喵 在科研的道路上&#xff0c;研究生们常常面临着巨大的压力和挑战。为了给这个充满挑战的群体带来一些鼓励和温暖&#xff0c;我借助百度文心智能体平台开发了一个独特的智能体 《萌猫科研加油喵》。 一、百度文心智能体平台介绍 百度文…...

Hive数仓操作(十六)

DML&#xff08;数据操作语言&#xff09;指的是用于操作数据的 SQL 语言部分&#xff0c;主要包括对数据的插入、更新、删除等操作。Hive 的 DML语句主要包括 INSERT、UPDATE 和 DELETE 。以下是一些重要的 Hive DML 语句及其解析。 Hive的DML语句 一、 插入操作INSERT 一般…...

第十二届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)(第一套)

一.题目分析 &#xff08;1&#xff09;.题目 &#xff08;2&#xff09;.题目分析 1.串口功能分析 a.串口接收车辆出入信息&#xff1a;通过查询车库的车判断车辆是进入/出去 b.串口输出计费信息&#xff1a;输出编号&#xff0c;时长和费用 c.计算停车时长是难点&#x…...

MongoDB入门:安装及环境变量配置

一、安装MonggoDB Windows系统安装MongoDB 1、下载MongoDB安装包 访问MongoDB官方网站&#xff0c;选择与Windows系统相匹配的MongoDB Community Server版本进行下载。 Download MongoDB Community Server | MongoDB 2、安装MongoDB 双击下载好的安装包文件&#xff0c;根…...

利用 notepad++ 初步净化 HaE Linkfinder 规则所提取的内容(仅留下接口行)

去掉接口的带参部分 \?.*去掉文件行 .*\.(docx|doc|xlsx|xls|txt|xml|html|pdf|ppt|pptx|odt|ods|odp|rtf|md|epub|css|scss|less|sass|styl|png|jpg|jpeg|gif|svg|ico|bmp|tiff|webp|heic|dds|raw|vue|js|ts|mp4|avi|mov|wmv|mkv|flv|webm|mp3|wav|aac|flac|ogg|m4a).*(\r\…...

RCE(remote command/code execute)远程命令注入

远程命令注入RCE RCE(remote command/code execute&#xff0c;远程命令执行)漏洞&#xff0c;一般出现这种漏洞&#xff0c;是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口&#xff0c;比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。一般会给…...

​一篇关于密码学的概念性文章

文章目录 1. 引言2. 加密学基本概念3. 加密算法的类型3.1 对称密钥加密(SKC)3.2 公钥密码学3.3 哈希函数3.4. 为什么需要三种加密技术?3.5 密钥长度的重要性4. 信任模型4.1 PGP信任网络4.2 Kerberos4.3 公钥证书和证书颁发机构4.4 总结5. 密码算法的实际应用5.1 密码保护5.2…...

什么是汽车中的SDK?

无论是在家里使用预制菜包做一顿大厨级别的晚餐&#xff0c;还是使用IKEA套组装配出时尚的北欧风桌子&#xff0c;我们都熟悉这样一种概念&#xff1a;比起完全从零开始&#xff0c;使用工具包可以帮助我们更快、更高效地完成一件事。 在速度至关重要的商业软件领域&#xff0…...

利用CRITIC客观权重赋权法进行数值评分计算——算法过程

1、概述 ‌CRITIC客观评价法是一种基于指标的对比强度和指标之间的冲突性来确定指标客观权数的方法。‌ 该方法适用于判断数据稳定性&#xff0c;并且适合分析指标或因素之间有着一定的关联的数据‌。 CRITIC方法的基本原理包括两个主要概念&#xff1a;对比强度和指标之间的…...

一个月学会Java 第4天 运算符和数据转换

Day4 运算符和数据转换 今天来讲运算符&#xff0c;每个运算符的作用和现象&#xff0c;首先我们先复习一下数据类型&#xff0c; day2讲过基本数据类型有八种&#xff0c;int、short、long、byte、char、boolean、float、double&#xff0c;分别为四个整型、一个字符型、一个布…...

Stream流的终结方法(一)

1.Stream流的终结方法 2.forEach 对于forEach方法&#xff0c;用来遍历stream流中的所有数据 package com.njau.d10_my_stream;import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.function.Consumer; import java.util…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

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

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