python学习之路 - python的函数

news2025/1/11 21:06:25

目录

  • 一、python函数
    • 1、函数介绍
    • 2、函数的定义
    • 3、函数的参数
    • 4、函数的返回值
    • 5、函数说明文档
    • 6、函数的嵌套调用
    • 7、变量的作用域
    • 8、综合案例
    • 9、函数与方法的区别
  • 二、python函数进阶
    • 1、函数多返回值
    • 2、函数多种传参方式
        • a、位置参数
        • b、关键字参数
        • c、缺省参数
        • d、不定长参数
    • 3、匿名函数
        • a、函数作为参数传递
        • b、lambda匿名函数

一、python函数

1、函数介绍

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

name = "这是字符串"
length = len(name)
print(length)

能直接调用len方法,则len()是python内置的函数

2、函数的定义

a、基本语法

def 函数名(传入参数):
	函数的内容
	return 返回值

b、案例
定义简单的函数并调用

#定义函数
def output_content():
    print("hello")

#调用函数
output_content()

如果不调用函数,函数的内容不会执行,只有调用后才会执行
要先定义函数,后调用函数。没有定义函数前无法调用

3、函数的参数

a、基本介绍
功能:在函数进行计算的时候,接收外部提供的数据
多个参数之间用逗号分隔开

def 函数名(参数1,参数2,参数3):
	函数的内容
	return 返回值

b、案例
创建一个函数,传入两个数字,打印两个数字的和

def get_sum_num(x , y):
    print(f"和为{x + y}")
    
get_sum_num(1,2)

函数定义中,提供的x,y称为形式参数(形参),表示函数要两个参数
函数调用中,提供的1,2称为实际参数(实参),表示函数执行时使用的参数

4、函数的返回值

a、基本介绍
函数在完成事情之后,最后要返回给调用者的结果

def 函数名(参数):
	函数的内容
	return 返回值

变量 = 函数名(参数)

b、案例
定义一个函数,将2数相加的内容返回给调用者并打印

def get_sum_num(x,y):
    return x + y

result = get_sum_num(1,2)
print(f"结果为:{result}")

c、补充
思考:如果定义的函数没有使用return语句返回数据,那么函数有返回值吗?

  • 实际上是有的,这时会返回特殊的字面量None,类型为<class ‘NoneType’>
  • None表示的是空的,无实际意义的意思,函数返回None,也就表示没有返回有意义的内容,也就是返回了空的意思
  • 在if判断中,None等同于False,可以联合if判断函数是否有返回内容
  • 在定义变量时,暂时不需要变量有具体值时,可以用None代替。如name = None

5、函数说明文档

a、基本语法
函数是纯代码语言,想要理解含义就需要一行行的阅读代码
我们可以给函数添加说明文档,辅助理解函数的作用

def func(x,y):
    """
    func函数可以接收2个参数,并返回两个参数的相加值
    :param x: 参数1
    :param y: 参数2
    :return: 返回的两个值的和
    """
    return x + y

result = func(1,2)

在pycharm中,当鼠标悬停到函数调用的传参时,会出现说明文档
在这里插入图片描述

6、函数的嵌套调用

a、基本语法
在一个函数中调用另一个函数,就是函数的嵌套调用

b、案例
在函数a中调用b输出内容

def fun_b():
    print("b")

def fun_a():
    print("a")
    fun_b()
    
fun_a()

7、变量的作用域

  • 局部变量
    定义:定义在函数体内部的变量,即只在函数体内部生效
    作用:在函数体内部临时保存数据,当函数完成后,则销毁局部变量
def func():
	num = 100
	print(num)

# 这个num就是局部变量
  • 全局变量

定义:在函数体内、体外都能生效的变量

num = 100
def func_a():
	print(num)

def func_b():
	print(num)

# 这个nun就是全局变量
  • 思考:看如下代码,试想,最后会输出多少呢?
num = 100
def func_a():
    num = 200
func_a()
print(num)

最后是会输出100,因为func_a方法中的num是一个局部变量,只会影响函数内部的值

  • 思考:如果我们想在函数内部作用全局变量呢?

可以使用global关键字,定义全局变量

num = 100
def func_a():
    global num
    num = 500

func_a()
print(num)				这时就会输出500

8、综合案例

案例要求:开发一个存款取款的函数,定义4个函数,共有4个功能,分别为查询余额1、存款2、取款3、退出4,用户分别输入对应的数字则进入对应的功能,用户未输入4前程序要永久运行

bol = True
name = ""
total_num = 5000000

# 存款函数
def add_money():
    global total_num
    put_num = int(input("请输入存款金额:"))
    total_num += put_num
    print(f"{name}您好,您的余额为:{total_num}元")

# 取款函数
def get_money():
    global total_num
    put_num = int(input("请输入取款金额:"))
    total_num -= put_num
    print(f"{name}您好,您的余额为:{total_num}元")

# 查询余额函数
def check_money():
    print(f"{name}您好,您的余额为:{total_num}元")

#主函数
def main():
    global bol
    global name
    name = input("请输入您的姓名:")
    while bol:
        print(f"{name}你好,请选择操作\n查询余额\t[输入1]\n存款\t[输入2]\n取款\t[输入3]\n退出\t[输入4]")
        num = input("请输入您的选择:")
        if num == "1":
            check_money()
        elif num == "2":
            add_money()
        elif num == "3":
            get_money()
        else:
            bol = False
main()

9、函数与方法的区别

函数的定义方式:

def add(x,y):
	return x + y

方法的定义方式:

class Student
	def add(x,y):
		return x + y

函数和方法功能一样,有传入参数,也有返回值,只是使用时不同。
使用函数时:

num = add(1,2)

使用方法时:

student = Student()
num = student.add(1,2)

二、python函数进阶

1、函数多返回值

多个返回值用逗号分隔开

def fun1():
    return 1,'hello',True

x,y,z = fun1()
print(x)		结果为1
print(y)		结果为hello
print(z)		结果为True

2、函数多种传参方式

a、位置参数

传参的位置固定,自动匹配参数值

def fun1(name,age,sex):
    print(f"姓名:{name},年龄:{age},性别:{sex}")
fun1("张三",18,"男")

结果为:姓名:张三,年龄:18,性别:男
b、关键字参数

调用函数时通过键值对的形式传参

def fun1(name,age,sex):
    print(f"姓名:{name},年龄:{age},性别:{sex}")
fun1(age=18,sex="男",name="张三")

结果为:姓名:张三,年龄:18,性别:男
c、缺省参数
  • 缺省参数也叫默认参数,定义函数如没有传入值,则提供参数的默认值
  • 有默认值的参数需要写到无默认值参数的后面
def fun1(name='李四',age=18,sex='女'):
    print(f"姓名:{name},年龄:{age},性别:{sex}")
fun1(sex="男",name="张三")

结果为:姓名:张三,年龄:18,性别:男
d、不定长参数
  • 不定长参数也叫可变参数,用于不确定调用时需要传递参数的个数
  • 分为位置传递不定长参数和关键字传递不定长参数
# 位置传递不定长参数
def fun1(*args):
    print(args)				此时的数据类型为元组
fun1('张三',18,'男')
结果为:('张三', 18, '男')		需要以直接传入的方式传参

# 关键字传递不定长参数
def fun1(**kwargs):
    print(kwargs)			此时的数据类型为字典
fun1(name='张三',age=18,sex='男')		需要用key-value的形式传参
结果为:{'name': '张三', 'age': 18, 'sex': '男'}

3、匿名函数

a、函数作为参数传递

函数本身也能作为参数传入另一个函数种

def fun1(fun2):
    result1 = fun2		在一个函数种调用参数传入的另一个函数
    print(result1)

def fun2(x , y):
    return x + y

fun1(fun2(1,2))			调用时传入函数名和函参数
b、lambda匿名函数
  • 特点:

    • lambda可以定义匿名函数,就是无名称的函数
    • 有名称的函数可以重复使用,匿名函数只能使用一次
    • lambda定义的匿名函数函数体只能写一行,无法写多行
  • 基本语法:lambda 入参: 函数体(一行代码)

def fun1(fun2):
    result1 = fun2(1,2)
    print(result1)
fun1(lambda x,y:x+y)		参数为x和y,函数体为x+y

结果为:3

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

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

相关文章

Visual Studio 调试时加载符号慢

什么是调试符号 编译程序时生成的一组特殊字符&#xff0c;并包含有关变量和函数在生成的二进制文件中的位置以及其他服务信息的信息。 该数据集可用于逐步调试程序或检查第三方代码。 调试符号可以添加到可执行文件或库中&#xff0c;但是大多数现代编译器将它们存储为单独的…

fabricjs 实现图像的二值化功能

一、效果图 二、图像二值化的作用 二值化是图像处理中常用的一种方法&#xff0c;其作用是将灰度图像转换为二值图像&#xff0c;即将图像中的像素点根据其灰度值分成两类&#xff1a;黑色和白色。这种处理方法可以帮助我们更清晰地识别图像中的目标&#xff0c;简化图像的复杂…

Lumerical 光纤模式仿真

Lumerical 光纤模式仿真 引言正文步骤 1------创建光纤的纤芯设置名称,位置及尺寸参数设置材料参数旋转结构使其朝向 x 方向放置步骤2------创建包层结构设置名称,位置及尺寸参数设置材料参数旋转结构使其朝向 x 方向放置设置透明度,是我们能够看到纤芯结构设置 FDE Solver设…

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——4Bin模型转化过程

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——4Bin模型转化过程 ​ 大家好&#xff0c;经过前几期的介绍&#xff0c;对于X3派上的Yolo模型部署&#xff0c;我们已经可以进行到最后一步了 ​ 今天给大家带来&#xff0c;转模型的关键步骤&#xff0…

苹芯科技发布新AI模型,引领全球轻量级AI应用革命

苹芯科技&#xff0c;一家在全球AI技术领域中不断创新的公司&#xff0c;于2月28日宣布推出其最新研发的轻量级AI模型。这款新模型旨在为开发者和企业提供更高效、更易访问的人工智能工具&#xff0c;尤其强调在数据敏感和计算资源受限的环境下的应用潜力。 在谷歌刚刚推出Gemm…

普元MDM主数据管理系统与微软Dynamic CRM系统(新加坡节点)集成案例

一、项目背景 某工程机械集团是中国工程机械产业奠基者、开创者和引领者&#xff0c;是工程机械行业具有全球竞争力、影响力的千亿级龙头企业。公司主要指标始终稳居中国工程机械行业第1位 客户需要将物料和配件等主数据和海外系统进行对接&#xff0c;由SAP PO在中间对接海…

【开发视角】大模型 RAG 检索增强生成究竟是什么

【大白话讲懂】大模型 RAG 检索增强生成 话先说在前面&#xff0c;本文不讲不会讲太多原理&#xff0c;仅面向工程开发&#xff0c;从工作流程的宏观角度进行梳理&#xff0c;旨在快速上手。 RAG 是什么 基本定义 让我们先来解释名词&#xff0c;看看宏观框架。 RAG 的意思…

Opencv调用yolov5的onnx文件时报错记录

Opencv调用yolov5的onnx文件时报错记录 报错内容&#xff1a; Error: Unspecified error (> Node [Powai.onnx]:(onnx_node!/model.24/Pow) parse error: OpenCV(4.6.0) F:\opencv-4.6.0\opencv-4.6.0\modules\dnn\src\onnx\onnx_importer.cpp:601: error: (-215:Assertio…

C++ vector的基本使用(待补全)

std::vector 是C标准模板库(STL)中的一个非常重要的容器类&#xff0c;它提供了一种动态数组的功能。能够存储相同类型的元素序列&#xff0c;并且可以自动管理存储空间的大小&#xff0c;以适应序列大小变化&#xff0c;处理元素集合的时候很灵活 1. vector的定义 构造函数声…

西安电子科技大学2025届毕业生生源信息

2025届本科毕业生专业分布一览表 2025届硕士毕业生专业分布一览表 2025届博士毕业生专业分布一览表 2025届本科毕业生生源地分布 左右滑动查看更多 2025届硕士毕业生生源地分布 2025届博士毕业生生源地分布

小红书笔试-选择题

HTTP/2.0默认长连接。选B ABC 一个类可以实现多个接口&#xff0c;一个接口可以继承一个或多个接口&#xff1a; 这是正确的。Java 支持多重继承的变体&#xff0c;即一个类可以实现多个接口&#xff0c;以获取多个接口中定义的方法。同时&#xff0c;一个接口可以通过 extends…

假如家里太大了,wifi连不上了怎么办

最近有个土豪朋友抱怨&#xff0c;他家里太大了&#xff0c;一个路由器的Wi-Fi信号根本无法覆盖他们家的每个房间&#xff0c;都没办法上网看奥运会比赛了。&#xff08;还好我是穷人&#xff0c;就没有这种烦恼T_T&#xff09;。 然后我问他为何不用一个路由器作主路由器&…

安卓常用控件ListView

文章目录 ListView的常用属性ListView的常用APIListView的简单使用 ListView是一个列表样式的 ViewGroup&#xff0c;将若干 item 按行排列。它是一个很基本的控件也是 Android 中最重要的控件之一。它可以实现多个 View 的垂直排列并支持滚动显示效果。 ListView的常用属性 常…

数论——绝对素数、素数筛法、埃氏筛法、欧拉筛法、最大公约数

绝对素数 绝对素数是指一个素数在其十进制表示下&#xff0c;无论是从左向右读还是从右向左读&#xff0c;所得到的数仍然是素数。 例如&#xff0c;13 是一个素数&#xff0c;从右向左读是 31&#xff0c;31 也是素数&#xff0c;所以 13 是一个绝对素数。 #include <io…

小红书无货源选品逻辑和爆品思路(图文解析)

了解用户的购物习惯、需求偏好以及日常搜索行为&#xff0c;是选品的重要前提。选品不是嘴巴一张这么简单的事情&#xff0c;是需要通过长期积累及网感来分析。记住&#xff1a;人-货-场&#xff0c;这个原则。比如明知道小红书上的年前女性用户多&#xff0c;你偏偏来卖一台挖…

悠易科技周文彪:创始人专注度很重要,一旦战略分散无法形成合力 | 中国广告营销行业资本报告深访④

周文彪&#xff08;悠易科技CEO&#xff09; 问&#xff1a;近年来广告营销行业主要的融资事件发生在营销技术领域。您对此有何评论&#xff1f; Roy&#xff1a;Adtech最早从2007年前后开始发展&#xff0c;差不多十年的时间&#xff0c;因为广告技术帮助企业成长&#xff0c…

【时时三省】unity test 测试框架 使用 code blocks 移植(核心文件:unity.c, unity_fixture.c)

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 目录 1&#xff0c;移植介绍 2&#xff0c;使用 Code::Blocks 17.12 创建工程 3&#xff0c;搬移文件入工程目录 4&#xff0c;更改代码 5&#xff0c;向工程添加文件 6&#xff0c;运…

解锁PDF新姿势:2024年PDF转图片工具精选

随着数字化办公的普及和文档处理需求的日益增长&#xff0c;PDF转图片工具已成为日常工作中不可或缺的一部分。这些工具不仅帮助用户轻松地将PDF文件转换为图片格式&#xff0c;还提供了丰富的编辑、转换和批量处理功能&#xff0c;极大地提高了工作效率。 1.福昕PDF转换大师&…

数据结构实验报告-栈

实 验 三 报 告 一、实验目的 1.掌握栈的定义、特点、逻辑结构&#xff0c;理解栈的抽象数据类型。 2.熟练掌握顺序栈的结构类型定义、特点和基于顺序栈的基本运算的实现。 3.熟练掌握链栈的结构类型定义、特点和基于链栈的基本运算的实现。 4.理解递归算法执行过程中栈的…

ssh网络协议(服务名sshd,端口22)

目录 前言 配置文件&#xff08;/etc/ssh/sshd_config&#xff09; 配置文件内容 自己可以添加的设置&#xff1a; 注意&#xff01;&#xff1a; ssh连接登录演示 scp文件传输 登录验证方式 密码验证登录 秘钥验证登录 配置ssh密钥对验证登录 生成密钥对&#xff…