4.Python 函数(函数的定义、函数的传入参数、函数的返回值、None 类型、函数说明文档、变量的作用域)
一、函数快速入门
1、函数概述
- 函数是组织好的,可重复使用的,用来实现特定功能的代码段
name = "Hello World"
name_length = len(name)print(f"{name} 的长度为 {name_length}") # Hello World 的长度为 11
-
len() 是Python 内置的函数,是提前写好的,可以重复使用,实现统计长度这一特定功能的代码段
-
目前使用过的 input()、print()、str()、int() 等都是Python的内置函数
2、函数初体验
- 不使用内置函数 len(),完成字符串长度的计算
def get_length(data):data_length = 0for x in data:data_length += 1print(f"{data} 的长度为 {data_length}")str1 = "Hello World"
str2 = "Thanks Smith"get_length(str1)
get_length(str2)
- 输出结果
Hello World 的长度为 11
Thanks Smith 的长度为 12
二、函数的定义
1、基本格式
- 函数的定义
def 【函数名】(【传入参数】):【函数体】return 【返回值】
- 函数的调用
【函数名】(【参数】)
2、注意事项
-
注意冒号(:)和空格缩进
-
参数如不需要,可以省略
-
返回值如不需要,可以省略
-
函数必须先定义后使用
3、基本使用
# 定义一个函数,输出相关信息
def say_hi():print("Hello World, Hello Python")# 调用函数,让定义的函数开始工作
say_hi()
- 输出结果
Hello World, Hello Python
三、函数的传入参数
1、基本介绍
- 传入参数的功能是在函数进行计算的时候,接受外部(调用时)提供的数据
2、基本使用
def add(num1, num2, num3):result = num1 + num2 + num3print(f"{num1} + {num2} + {num3} 的结果是 {result}")add(1, 2, 3)
add(4, 5, 6)
- 输出结果
1 + 2 + 3 的结果是 6
4 + 5 + 6 的结果是 15
3、使用解析
-
函数定义中,提供的 num1、num2、num3 被称之为形式参数(形参),表示函数声明将要使用 3 个参数,参数之间使用逗号进行分隔
-
函数调用中,提供的参数被称之为实际参数(实参),表示函数执行时真正使用的参数值,传入的时候,按照顺序传入参数,使用逗号分隔
-
形参的数量是不受限制的,可以不使用形参,也可以使用任意 N 个形参
四、函数的返回值
1、基本格式
- 函数定义
def 【函数名】(【传入参数】):【函数体】return 【返回值】
- 函数调用
【变量名】 = 【函数名】(【实参】)
-
通过 return 关键字,就能向调用者返回数据,变量就能接收到函数的返回值
-
注:函数体在遇到 return 关键字后就结束了,所以写在 return 关键字后的代码不会执行
2、基本使用
- 定义一个函数,完成两数相加的功能,并返回结果
def add(num1, num2):result = num1 + num2return resultprint(add(10, 20))
print(add(30, 40))
print(add(50, 60))
- 输出结果
30
70
110
五、None 类型
1、基本介绍
-
如果函数没有使用 return 语句返回数据,那么函数还是有返回值的
-
Python 中有一个特殊的字面量 None,其类型是 <class ‘NoneType’>,无返回值的函数,实际上就是返回了 None 这个字面量
-
None 表示空的、无实际意义的意思,函数返回 None 就表示这个函数没有返回什么有意义的内容,也就是返回了空的意思
2、基本使用
def say_hi():print("Hello World, Hello Python")result = say_hi()print(f"无返回值函数,返回的结果是:{result}")
print(f"无返回值函数,返回的结果类型是:{type(result)}")
- 输出结果
Hello World, Hello Python
无返回值函数,返回的结果是:None
无返回值函数,返回的结果类型是:<class 'NoneType'>
3、使用场景
-
用在函数无返回值上
-
用在 if 判断上,在 if 判断中,None 等同于 False,一般用于函数中主动返回 None,配合 if 判断做相关处理
-
用在声明无内容的变量上,定义变量,但暂时不需要变量有具体值,可以用 None 来代替,如 name = None
4、实际应用
def check_age(age):if age >= 18:return "SUCCESS"else:return Noneage = 10
print(f"我今年 {age} 岁")
result = check_age(age)if result:print("我今年已成年")
else:print("我今年未成年")
- 输出结果
我今年 10 岁
我今年未成年
六、函数说明文档
1、基本格式
-
可以给函数添加说明文档,辅助理解函数的作用
-
通过多行注释的形式,对函数进行说明解释(内容应写在函数体之前)
def 【函数名】(【形参 1】, 【形参 2】):"""【函数说明】:param 【形参 1】: 【形参 1 的说明】:param 【形参 2】: 【形参 2 的说明】:return: 【返回值的说明】"""【函数体】return 【返回值】
2、基本使用
def add(num1, num2):"""两数相加:param num1: 相加的数字 1:param num2: 相加的数字 2:return: 返回相加的结果"""result = num1 + num2return result
3、查看说明文档
- 在 PyCharm 中编写代码时,可以通过鼠标悬停在函数名上,查看调用函数的说明文档
七、变量的作用域
1、局部变量
(1)基本介绍
-
局部变量是定义在函数体内部的变量,即只在函数体内部生效
-
局部变量作用是在函数体内部临时保存数据,即当函数调用完成后,则销毁局部变量
(2)演示
def test():# 定义局部变量num = 100print(num)print(num)
- 变量 num 是定义在 test 函数内部的变量,在函数外部访问则立即报错
2、全局变量
(1)基本介绍
- 全局变量是在函数体内、外都能生效的变量
(2)演示
# 定义全局变量
num = 100def testA():print(num)def testB():print(num)testA()
testB()
- 输出结果
100
100
3、global 关键字
(1)基本介绍
- 使用 global关键字,可以在函数内部声明变量为全局变量
(2)基本使用
num1 = 100def testA():print(num1)def testB():# global 关键字声明 num1 是全局变量global num1num1 = 200# global 关键字声明 num2 是全局变量global num2num2 = 300print(num2)testA()
testB()
print(f"全局变量 num1 值为 {num1}")
print(f"全局变量 num2 值为 {num2}")
- 输出结果
100
300
全局变量 num1 值为 200
全局变量 num2 值为 300
相关文章:
4.Python 函数(函数的定义、函数的传入参数、函数的返回值、None 类型、函数说明文档、变量的作用域)
一、函数快速入门 1、函数概述 函数是组织好的,可重复使用的,用来实现特定功能的代码段 name "Hello World" name_length len(name)print(f"{name} 的长度为 {name_length}") # Hello World 的长度为 11len() 是Python 内置的函…...
【JavaEE】——文件IO
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:认识文件 1:文件的概念 2:文件的结构 3:文件路径…...
Python的pandas库基本操作(数据分析)
一、安装,导入 1、安装 使用包管理器安装: pip3 install pandas 2、导入 import pandas as pd as是为了方便引用起的别名 二、DateFrame 在Pandas库中,DataFrame 是一种非常重要的数据结构,它提供了一种灵活的方式来存储和…...
软件测试(平铺版本)
目录 黑盒测试: 定义: 示例:登录功能的黑盒测试 适合使用黑盒测试的情况 几种常见的黑盒测试方法: 1. 等价类划分(Equivalence Partitioning) 2. 边界值分析(Boundary Value Analysis) …...
树控件QTreeWidget
树控件跟表格控件类似,也可以有多列,也可以只有1列,可以有多行,只不过每一行都是一个QTreeWidgetItem,每一行都是一个可以展开的树 常用属性和方法 显示和隐藏标题栏 树控件只有水平标题栏 //获取和设置标题栏的显…...
Python酷库之旅-第三方库Pandas(139)
目录 一、用法精讲 626、pandas.plotting.scatter_matrix方法 626-1、语法 626-2、参数 626-3、功能 626-4、返回值 626-5、说明 626-6、用法 626-6-1、数据准备 626-6-2、代码示例 626-6-3、结果输出 627、pandas.plotting.table方法 627-1、语法 627-2、参数 …...
昇思学习打卡营学习记录:CycleGAN壁画修复
按照提示,运行实训代码 进入实训平台:https://xihe.mindspore.cn/projects 选择“jupyter 在线编辑器” 启动“Ascend开发环境” :Ascend开发环境需要申请,大家可以申请试试看 启动开发环境后,在左边的文件夹中&am…...
南京大学《软件分析》李越, 谭添——1. 导论
导论 主要概念: soundcompletePL领域概述 动手学习 本节无 文章目录 导论1. PL(Programming Language) 程序设计语言1.1 程序设计语言的三大研究方向1.2 与静态分析相关方向的介绍与对比静态程序分析动态软件测试形式化(formal)语义验证(verification) 2. 静态分析:2.1莱斯…...
使用seata管理分布式事务
做应用开发时,要保证数据的一致性我们要对方法添加事务管理,最简单的处理方案是在方法上添加 Transactional 注解或者通过编程方式管理事务。但这种方案只适用于单数据源的关系型数据库,如果项目配置了多个数据源或者多个微服务的rpc调用&…...
浏览器指纹
引言 先看下 官网 给的定义。 WebAssembly (abbreviatedWasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server …...
W外链平台有什么优势?
W外链作为一种短网址服务,具备多项功能和技术优势,适用于多种场景,以下是其主要特点和优势: 短域名与高级设置:W外链提供了非常短的域名,这有助于提高用户体验,使其在社交媒体分享时更加便捷。…...
深入理解Spring Cache:加速应用性能的秘钥
一、什么是Spring Cache? Spring Cache是Spring框架中的一部分,它为应用提供了一种统一的缓存抽象,可以轻松集成各种缓存提供者(如Ehcache、Redis、Caffeine等)。通过使用Spring Cache,开发者可以在方法上…...
C语言入门基础题(力扣):完成旅途的最少时间(C语言版)
1.题目: 给你一个数组 time ,其中 time[i] 表示第 i 辆公交车完成 一趟旅途 所需要花费的时间。 每辆公交车可以 连续 完成多趟旅途,也就是说,一辆公交车当前旅途完成后,可以 立马开始 下一趟旅途。每辆公交车 独立 …...
基于LORA的一主多从监测系统_0.96OLED
关联:0.96OLED hal硬件I2C LORA 在本项目中每个节点都使用oled来显示采集到的数据以及节点状态,OLED使用I2C接口与STM32连接,这个屏幕内部驱动IC为SSD1306,SSD1306作为从机地址为0x78 发送数据:起始…...
C#系统学习路线
分享一个C#程序员的成长学习路线规划,希望能够帮助到想从事C#开发的你。 我一直在想,初学者刚开始学习编程时应该学些什么?学习到什么程度才能找到工作?才能在项目中发现和解决Bug? 我不知道每位初学者在学习编程时是…...
UI开发:从实践到探索
UI开发:从实践到探索 参考博客文章:https://blog.jim-nielsen.com/2024/sanding-ui/ 在现代web开发中,用户界面(UI)的重要性不言而喻。一个优秀的UI不仅能提升用户体验,还能直接影响产品的成功。 UI开发…...
操作系统 | 学习笔记 | 王道 | 3.1 内存管理概念
3 内存管理 3.1 内存管理概念 3.1.1 内存管理的基本原理和要求 内存可以存放数据,程序执行前需要先放到内存中才能被CPU处理—缓和cpu和磁盘之间的速度矛盾 内存管理的概念 虽然计算机技术飞速发展,内存容量也在不断扩大,但仍然不可能将所有…...
Unity射线之拾取物体
实现效果: 可以移动场景内物品放置到某个位置。通过射线检测,点击鼠标左键,移动物体,再点击左键放下物体。 效果: 移动物体 实现思路: 通过射线检测,将检测到的物体吸附到摄像机前的一个空物…...
Python的numpy库矩阵计算(数据分析)
一、创建矩阵 import numpy as np#创建矩阵anp.arange(15).reshape(3,5) bnp.arange(15,30).reshape(3,5) 使用arrange和reshape创建的二维数组就可以看成矩阵。 此时a和b存储的是: [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] [[15 16 17 18 19]…...
R语言的基本语句及基本规则
0x01 赋值语句 使用 “<-” 或 “” 进行赋值。例如: x <- 5 # 将数值 5 赋值给变量 x y 10 # 另一种赋值方式0x02 输出语句 使用 print() 函数输出内容。例如: print("Hello, R!") print(x)0x03 注释语句 任何在 #之后的内容在…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
