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

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、使用场景
  1. 用在函数无返回值上

  2. 用在 if 判断上,在 if 判断中,None 等同于 False,一般用于函数中主动返回 None,配合 if 判断做相关处理

  3. 用在声明无内容的变量上,定义变量,但暂时不需要变量有具体值,可以用 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、函数概述 函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现特定功能的代码段 name "Hello World" name_length len(name)print(f"{name} 的长度为 {name_length}") # Hello World 的长度为 11len() 是Python 内置的函…...

【JavaEE】——文件IO

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;认识文件 1&#xff1a;文件的概念 2&#xff1a;文件的结构 3&#xff1a;文件路径…...

Python的pandas库基本操作(数据分析)

一、安装&#xff0c;导入 1、安装 使用包管理器安装&#xff1a; pip3 install pandas 2、导入 import pandas as pd as是为了方便引用起的别名 二、DateFrame 在Pandas库中&#xff0c;DataFrame 是一种非常重要的数据结构&#xff0c;它提供了一种灵活的方式来存储和…...

软件测试(平铺版本)

目录 黑盒测试&#xff1a; 定义: 示例&#xff1a;登录功能的黑盒测试 适合使用黑盒测试的情况 几种常见的黑盒测试方法&#xff1a; 1. 等价类划分&#xff08;Equivalence Partitioning&#xff09; 2. 边界值分析&#xff08;Boundary Value Analysis&#xff09; …...

树控件QTreeWidget

树控件跟表格控件类似&#xff0c;也可以有多列&#xff0c;也可以只有1列&#xff0c;可以有多行&#xff0c;只不过每一行都是一个QTreeWidgetItem&#xff0c;每一行都是一个可以展开的树 常用属性和方法 显示和隐藏标题栏 树控件只有水平标题栏 //获取和设置标题栏的显…...

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壁画修复

按照提示&#xff0c;运行实训代码 进入实训平台&#xff1a;https://xihe.mindspore.cn/projects 选择“jupyter 在线编辑器” 启动“Ascend开发环境” &#xff1a;Ascend开发环境需要申请&#xff0c;大家可以申请试试看 启动开发环境后&#xff0c;在左边的文件夹中&am…...

南京大学《软件分析》李越, 谭添——1. 导论

导论 主要概念: soundcompletePL领域概述 动手学习 本节无 文章目录 导论1. PL(Programming Language) 程序设计语言1.1 程序设计语言的三大研究方向1.2 与静态分析相关方向的介绍与对比静态程序分析动态软件测试形式化(formal)语义验证(verification) 2. 静态分析:2.1莱斯…...

使用seata管理分布式事务

做应用开发时&#xff0c;要保证数据的一致性我们要对方法添加事务管理&#xff0c;最简单的处理方案是在方法上添加 Transactional 注解或者通过编程方式管理事务。但这种方案只适用于单数据源的关系型数据库&#xff0c;如果项目配置了多个数据源或者多个微服务的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外链作为一种短网址服务&#xff0c;具备多项功能和技术优势&#xff0c;适用于多种场景&#xff0c;以下是其主要特点和优势&#xff1a; 短域名与高级设置&#xff1a;W外链提供了非常短的域名&#xff0c;这有助于提高用户体验&#xff0c;使其在社交媒体分享时更加便捷。…...

深入理解Spring Cache:加速应用性能的秘钥

一、什么是Spring Cache&#xff1f; Spring Cache是Spring框架中的一部分&#xff0c;它为应用提供了一种统一的缓存抽象&#xff0c;可以轻松集成各种缓存提供者&#xff08;如Ehcache、Redis、Caffeine等&#xff09;。通过使用Spring Cache&#xff0c;开发者可以在方法上…...

C语言入门基础题(力扣):完成旅途的最少时间(C语言版)

1.题目&#xff1a; 给你一个数组 time &#xff0c;其中 time[i] 表示第 i 辆公交车完成 一趟旅途 所需要花费的时间。 每辆公交车可以 连续 完成多趟旅途&#xff0c;也就是说&#xff0c;一辆公交车当前旅途完成后&#xff0c;可以 立马开始 下一趟旅途。每辆公交车 独立 …...

基于LORA的一主多从监测系统_0.96OLED

关联&#xff1a;0.96OLED hal硬件I2C LORA 在本项目中每个节点都使用oled来显示采集到的数据以及节点状态&#xff0c;OLED使用I2C接口与STM32连接&#xff0c;这个屏幕内部驱动IC为SSD1306&#xff0c;SSD1306作为从机地址为0x78 发送数据&#xff1a;起始…...

C#系统学习路线

分享一个C#程序员的成长学习路线规划&#xff0c;希望能够帮助到想从事C#开发的你。 我一直在想&#xff0c;初学者刚开始学习编程时应该学些什么&#xff1f;学习到什么程度才能找到工作&#xff1f;才能在项目中发现和解决Bug&#xff1f; 我不知道每位初学者在学习编程时是…...

UI开发:从实践到探索

UI开发&#xff1a;从实践到探索 参考博客文章&#xff1a;https://blog.jim-nielsen.com/2024/sanding-ui/ 在现代web开发中&#xff0c;用户界面&#xff08;UI&#xff09;的重要性不言而喻。一个优秀的UI不仅能提升用户体验&#xff0c;还能直接影响产品的成功。 UI开发…...

操作系统 | 学习笔记 | 王道 | 3.1 内存管理概念

3 内存管理 3.1 内存管理概念 3.1.1 内存管理的基本原理和要求 内存可以存放数据&#xff0c;程序执行前需要先放到内存中才能被CPU处理—缓和cpu和磁盘之间的速度矛盾 内存管理的概念 虽然计算机技术飞速发展&#xff0c;内存容量也在不断扩大&#xff0c;但仍然不可能将所有…...

Unity射线之拾取物体

实现效果&#xff1a; 可以移动场景内物品放置到某个位置。通过射线检测&#xff0c;点击鼠标左键&#xff0c;移动物体&#xff0c;再点击左键放下物体。 效果&#xff1a; 移动物体 实现思路&#xff1a; 通过射线检测&#xff0c;将检测到的物体吸附到摄像机前的一个空物…...

Python的numpy库矩阵计算(数据分析)

一、创建矩阵 import numpy as np#创建矩阵anp.arange(15).reshape(3,5) bnp.arange(15,30).reshape(3,5) 使用arrange和reshape创建的二维数组就可以看成矩阵。 此时a和b存储的是&#xff1a; [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] [[15 16 17 18 19]…...

R语言的基本语句及基本规则

0x01 赋值语句 使用 “<-” 或 “” 进行赋值。例如&#xff1a; x <- 5 # 将数值 5 赋值给变量 x y 10 # 另一种赋值方式0x02 输出语句 使用 print() 函数输出内容。例如&#xff1a; print("Hello, R!") print(x)0x03 注释语句 任何在 #之后的内容在…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...