当前位置: 首页 > 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…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中&#xff0c;如何展示好看的实验结果图像非常重要&#xff01;&#xff01;&#xff01; 1、灰度原始图像 灰度图像每个像素点只有一个数值&#xff0c;代表该点的​​亮度&#xff08;或…...