python学习笔记----函数(五)

news2024/10/5 18:23:57

一、函数介绍

  • 在 Python 中,函数是一个组织好的、可重用的代码块,用来执行一个单一的、相关的动作。函数提供了代码的模块化和代码复用的能力。它可以接受输入参数,并可以返回一个结果。函数在 Python 编程中是基本的构建块之一。

二、函数的定义

函数的定义:

  • 先定义函数
  • 后调用函数
  • 参数不需要,可以省略
  • 返回值不需要,可以省略
def 函数名(传入参数):
    函数体
    return 返回值

示例:

# 定义一个函数,输出相关信息
def say_hello():
    print("hello")

# 调用函数
say_hello()


三、函数的参数

在 Python 中,函数的参数是用来传递信息或数据给函数的变量。通过使用参数,函数可以接收外部的输入值,这些输入值在函数调用时被指定,使函数更具通用性和灵活性。

# 定义两数相加的函数,通过参数接收被计算的2个数字
def add(x, y):
    result = x + y
    print(f"{x}+{y}的计算结果是:{result}")

# 调用函数
add(1,2)

语法解析:

  • 函数定义中,x和y,称之为:形式参数(形参),表示函数声明将要使用2个参数
  • 参数之间使用逗号分隔
  • 函数调用中,1和2,称之为:实际参数(实参),表示函数执行时真正使用的参数值
  • 传入的时候,按照顺序传入数据,使用逗号分隔

三、函数的返回值

3.1 什么是函数的返回值

  • 函数的返回值是指函数完成执行后传回给调用者的数据。返回值使得函数不只是执行操作,还可以产生结果并将其传递给其他程序的部分。这种机制是函数编程的核心部分,它允许函数与外部代码交互、传递数据和表达式的结果。
  • 函数中的 return 语句用于结束函数执行并指定返回值。return 可以跟任何数据类型的对象,包括数字、字符串、列表、字典、元组、布尔值或更复杂的对象。如果函数内部没有 return 语句,或者 return 语句没有跟随任何值,函数默认返回 None。

3.1函数返回值的语法

def 函数名(传入参数):
    函数体
    return 返回值

示例:

# 定义一个函数,完成两数相加功能
def add(a, b):
    return a + b

r = add(1, 2)
print(r)

3.2函数返回值之None类型

  • 在 Python 中,如果一个函数没有显式地使用 return 语句返回数据,或者 return 语句后没有跟任何值,那么这个函数依然有返回值,但这个返回值默认是 None
  • None 是 Python 的一个特殊数据类型,用来表示空值或无值的状态。它通常用于标示某些东西不存在或未定义。

示例:

def print_hello():
    print("Hello, world!")

result = print_hello()
print(result)  # 输出 None


四、函数的说明文档

  • 函数是纯代码语言,想要理解其含义,就需要一行行去阅读理解代码,效率比较低
  • 我们可以给函数添加说明文档,辅助理解函数的作用。

语法:

def func(x, y):
    """
    :param x: 形参x的说明
    :param y: 形参y的说明
    :return: 返回值的说明
    """
    函数体
    return 返回值
# 定义函数,进行文档说明
def add(x, y):
    """
    add函数可以接收2个参数,进行两数相加的功能
    :param x: 形参x表示相加的其中一个数字
    :param y: 形参y表示相加的另一个数字
    :return:  返回值是两数相加的结果
    """
    result = x + y
    return result

  • 在pycharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档

在这里插入图片描述


五、变量的作用域

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

5.1局部变量

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

示例:

# 演示局部变量
def test_a():
    num = 100
    print(num)

test_a()
print(num) # 报错:name 'num' is not defined.

示例中变量num是定义在test_a函数内部的变量,在函数外部访问则立即报错

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

5.2全局变量

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

示例:

# 演示全局变量
num = 200

def test_a():
    print(f"test_a: {num}")

def test_b():
    print(f"test_b: {num}")

test_a()
test_b()
print(num)

5.3 global关键字

思考:test_a()函数需要修改全局变量num的值为500,如何修改程序?

num = 200
def test_a():
    num = 500
    print(f"test_a: {num}")

def test_b():
    print(f"test_b: {num}")

test_a()
test_b()
print(num)

在这里插入图片描述

  • 当你在 test_a() 函数中设置 num = 500 时,你实际上是在函数的局部作用域内创建了一个新的变量 num,它只在 test_a() 函数内有效。这个变量是局部变量,它与全局作用域中的 num 是两个完全不同的变量,即使它们的名字相同。
  • test_b() 函数内部没有定义局部变量 num,所以当你尝试打印 num 时,Python 查找这个变量名会回退到外部作用域,也就是全局变量 num,其值为 200。
  • 最后的 print(num) 语句也是在全局作用域中执行,因此它访问的是全局变量 num,值同样为 200。

global关键字

  • 如果你希望 test_a() 函数修改全局变量 num,你需要在该函数内部使用 global 关键字来声明 num:
  • 在这个修改后的版本中,所有的输出都将是 500,因为 test_a() 现在修改了全局作用域中的 num 变量。

示例

num = 200
def test_a():
    global num
    num = 500
    print(f"test_a: {num}")

def test_b():
    print(f"test_b: {num}")

test_a()
test_b()
print(num)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1632934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端入门:HTML(CSS边距,塌陷)

1.CSS边距 auto:浏览器自动计算的边距 length:以px,pt,cm等为单位指定边距,pt代表的是磅,1磅0.376毫米。 %:以父元素宽度的百分比来指定边距。 其中,length和%都可以取负值,表示减少外边距的空间大小。 …

面向对象练习题【从零开始学Java】

Java零基础系列课程-JavaSE基础篇 Lecture:波哥 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。…

Docker有哪些常见命令?什么是Docker数据卷?

喜欢就点击上方关注我们吧! 哈喽,大家好呀!这里是码农后端。上一篇我们介绍了Docker的安装以及腾讯云镜像加速源的配置。本篇将带你学习Docker的常见命令、数据卷及自定义镜像等相关知识。 1、什么是镜像与容器? 利用Docker安装应…

RS0104YQ功能和参数介绍以及规格详情

RS0104YQ功能和参数介绍以及规格详情-公司新闻-配芯易-深圳市亚泰盈科电子有限公司 RS0104YQ 是一款由润石科技(Runic Semiconductor)生产的肖特基整流器。肖特基整流器是一种半导体器件,它利用金属-半导体接触形成的肖特基势垒来实现整流功…

华为校招机试 - 满二叉搜索树查找(20240424)

在线OJ测试 题目详情 - 满二叉搜索树查找 - HydroOJ 题目描述 给定 (2^n) - 1 个不同的整数(1 ≤ n ≤ 10,n 为整数),构建一棵平衡满二叉搜索树。 二叉搜索树定义如下: 节点的左子树只包含小于当前节点的数节点的右子树只包含大于当前节点的数所有左子树和右子树自身必…

手把手教你在本机安装Stable Diffusion秋叶整合包

因为网上讲部署的文章挺多的,所以本来不打算写这个,但是有些网友提出了要求,另外我也准备总结下在AI绘画方面的一些经验,从经验完整性上考虑,还是得有这部分的内容。 整合包对非技术出身的同学比较友好,因为…

Linux学习(一)

笔者给各位读者的建议是每天背 30 个在电脑上看到的不认识的单词 1) 文件系统 提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了组织管理数据的方式。 …

银河麒麟V10 ARM64 离线安装 新版Docker

查询当前发行版本 nkvers下载最新版本 卸载旧依赖 卸载已经安装的老版本 yum remove docker \containerd.io \docker-runc \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine \docker-compo…

kubernetes 1.30.0 Containerd 离线搭建

准备 准备两台主机 主机名IPCPU架构mx-text-01192.168.0.222ARM64mx-text-02192.168.0.223ARM64 主机要求: 2Core 2G RAM 配置主机名映射 添加映射 192.168.0.222 mx-test-01 192.168.0.223 mx-test-02cat /etc/hosts关闭SELinux setenforce 0sed -i s/^SELI…

电商独立站||跨境电商独立站网站搭建|功能系统搭建||API接口接入

搭建多语言跨境电商独立站系统 前台主要功能模块 短信接口 第三方登陆 支付方式 会员中心 代购订单列表 - new 会员签到 -1000(1) new 支付密码 ---1000 国内流程 -----5000 new 订单运单多退少补 -1000 未付款运单取消功能 - 修改运单运输方式 -----1000 年费会员 -----3000 …

TimeoutException,带宽影响连接超时

在做压测试过程中发现本机测试正常,线上服务器报错如下: io.lettuce.core.RedisCommandTimeoutException: Command timed out after 15 second(s) 查看公网带流量情况: 服务器带宽 服务器的公网带宽配置为10Mbps,当服务器的出网…

解决Blender导出FBX文件到Unity坐标轴错误的问题

发现Blender的模型导入到Unity里面有问题,简单研究了下发现是坐标系不同,Unity使用的是左手坐标系,Blender使用的是右手坐标系 。 下面直接将如何解决 首先忽略Blender的右手坐标系以及Z轴朝上的事,依照unity坐标系情况修改模型物体的旋转,以Blender猴…

Linux服务器安装Anaconda并运行Python程序

目录 1. Linux服务器安装Anaconda1.1 下载Anaconda安装包1.2 安装Anaconda 2. 添加Conda环境变量3. Conda常用操作3.1 创建虚拟环境3.2 激活环境3.3 删除环境3.4 其他常用命令 4. 安装合适版本的Pytorch5. Linux服务器运行Python程序5.1 前端运行5.2 后台挂载5.3 后台进程 6. 一…

苹果和OpenAI再续前缘,iOS 18会是颠覆级的吗?|TodayAI

据彭博社最新报道,苹果公司已经与人工智能领域的先锋企业OpenAI重启了对话,双方目前正在讨论一项可能的合作,以将OpenAI的生成式人工智能技术整合到苹果即将推出的iOS 18操作系统中。这一举措表明,苹果正加速其在人工智能技术上的…

第G9周:ACGAN理论与实战

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 上一周已经给出代码,需要可以跳转上一周的任务 第G8周:ACGAN任…

什么是视频号小店?小店怎么做?详细玩法流程来了

大家好,我是电商笨笨熊 视频号小店成了今年电商市场又一热门项目; 作为腾讯推出的电商,不少人曾说过,视频号小店会成为下一个风口; 那么视频号小店到底是什么,值得投入吗,又该怎么做呢&#…

[华为OD]C卷 给定一个数组,数组中的每个元素代表该位置的海拔高度 山脉的个数 200

题目: 给定一个数组,数组中的每个元素代表该位置的海拔高度。0表示平地,>1时表示属于某个 山峰,山峰的定义为当某个位置的左右海拔均小于自己的海拔时,该位置为山峰。数组起始位 置计算时可只满足一边…

AI助力后厨可视化智慧监管,让“舌尖安全”看得见

一、背景与需求分析 夏天是食物易腐败的季节,高温容易引发食品安全问题。在后厨环境中,食品安全问题可能涉及食品加工、后厨环境、食品是否被污染等方面,而不合格的食品安全管理可能导致食品中毒事件等风险,损害消费者的健康和餐…

偏微分方程算法之五点菱形差分法

目录 一、研究目标 二、理论推导 三、算例实现 四、结论 一、研究目标 上个专栏我们介绍了双曲型偏微分方程的主要算法及实现。从今天开始,我们在新的专栏介绍另一种形式偏微分方程-椭圆型的解法。 研究目标选取经典的二维椭圆型方程(也称泊松Poisso…

半导体制造工艺之分类浅述

半导体制造工艺分为逻辑制程(也叫逻辑工艺)和特殊制程(也叫特色工艺)。 1、逻辑工艺概述 随着集成电路行业沿着摩尔定律不断发展,晶体管数量增加的同时,工艺节点不断缩小。先进逻辑工艺是相对的概念,2005年全球先进逻辑工艺的工艺节点在65/55纳米,现在则变为3纳米。中…