python学习之路 - python的函数

目录

  • 一、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 + yresult = 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 + yresult = 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 = 100print(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 numnum = 500func_a()
print(num)				这时就会输出500

8、综合案例

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

bol = True
name = ""
total_num = 5000000# 存款函数
def add_money():global total_numput_num = int(input("请输入存款金额:"))total_num += put_numprint(f"{name}您好,您的余额为:{total_num}元")# 取款函数
def get_money():global total_numput_num = int(input("请输入取款金额:"))total_num -= put_numprint(f"{name}您好,您的余额为:{total_num}元")# 查询余额函数
def check_money():print(f"{name}您好,您的余额为:{total_num}元")#主函数
def main():global bolglobal namename = 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 Studentdef add(x,y):return x + y

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

num = add(1,2)

使用方法时:

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

二、python函数进阶

1、函数多返回值

多个返回值用逗号分隔开

def fun1():return 1,'hello',Truex,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 + yfun1(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.rhkb.cn/news/391463.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2024年华数杯C题老外游中国】(完整题解+代码+完整参考论文)

请问 352 个城市中所有 35200 个景点评分的最高分&#xff08;Best Score&#xff0c;简称 BS&#xff09;是多少&#xff1f;全国有多少个景点获评了这个最高评分&#xff08;BS&#xff09;&#xff1f;获评了这个最高评分&#xff08;BS&#xff09;景点最多的城市有哪些&am…

代码坏味道有24种?我看未必

微信公众号&#xff1a;牛奶 Yoka 的小屋 有任何问题。欢迎来撩~ 最近更新&#xff1a;2024/08/03 [大家好&#xff0c;我是牛奶。] 我在上一篇文章打开IDEA&#xff0c;程序员思考的永远只有两件事&#xff01;中&#xff0c;通过代码命名、重复代码、合格方法三个章节&#…

请你学习:前端布局3 - 浮动 float

1 标准流&#xff08;也称为普通流、文档流&#xff09; 标准流&#xff08;也称为普通流、文档流&#xff09;是CSS中元素布局的基础方式&#xff0c;它决定了元素在页面上的默认排列方式。这种布局方式遵循HTML文档的结构&#xff0c;不需要额外的CSS样式来指定元素的位置。…

MongoDB未授权访问漏洞

MongoDB未授权访问漏洞 mongodb数据库是由C编写&#xff0c;主要是为了提供web应可用扩展的一种高性能数据库。开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增、删、改、查高危动作)而且可以远程访问数据库。…

MySQL数据库学习笔记

1、数据库的相关概念 数据库是存储数据的仓库,数据是有组织的进行存储 (DataBase)DB. 数据库管理系统:操作和管理数据库的大型软件 DataBase Mangement System(DBMS) SQL 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。 1、Oracle 2、MySQL 3…

Face2V人脸向量开发包

Face2V SDK适用于需要人脸检测、人脸特征点和特征向量提取的应用&#xff0c;提供Web API和原生API。官方下载地址&#xff1a;Face2V SDK 。 1、目录组织 Face2V SDK开发包的目录组织说明如下&#xff1a; face2v_sdk | - core # 核心代码目录| -…

docker compose 安装 kafka

一 前置准备 创建 /data/kafkadata /data/zookeeper-1用于保存kafka和zookeeper的配置文件 kafkadata中创建三个文件夹 /kafka1 /kafka2 /kafka3&#xff0c;用于存放三个kafka节点的配置文件 zookeeper-1文件夹中创建 /conf /data /logs /datalog四个文件夹&#xff0c;用于…

【Nuxt】约定式路由和内置组件

约定式路由 手动创建&#xff1a; 或者还可以使用终端创建页面&#xff1a;nuxi-add-page npx nuxi add page about — about.vue npx nuxi add page about/index — about/index.vue <NuxtLink to"/"><button>Home</button></NuxtLink><…

对象存储及其相关概念介绍

对象存储是一种用来描述解决和处理离散单元&#xff08;这些离散单元被称作为对象&#xff09;的方法的通用术语。以下是关于对象存储的详细解析&#xff1a; 一、基本概念 定义&#xff1a;对象存储&#xff0c;也叫做基于对象的存储&#xff0c;是一种将数据以对象的形式进…

JavaScript基础——数据类型转换

显示数据类型转换 String()函数进行显示转换 Number()函数进行显示转换 Boolean()函数进行显示转换 隐式数据类型转换 算术运算隐式转化 比较操作隐式转化 赋值操作 在JavaScript中&#xff0c;数据类型转换是常见的操作&#xff0c;它允许将一种类型的数据转换为另一种…

立项技术路线选择

本章主要是简单聊聊技术路线&#xff0c;额涉及unity和虚幻&#xff0c;目的主要是给自己看的&#xff0c;记录下日期&#xff1a;2024.8.4 在今天&#xff0c;除游戏以外的厂商基本上采用c#的混合技术方案 如果需要的设备对象多。效果不需要极为精细&#xff0c;至少unity是绝…

(自用)MyLog 简单日志 .net6.0 等

appsettings.json {"LogOnOff": true //true 开启日志&#xff1b;false 关闭日志 } MyLog.cs using System.ComponentModel;namespace Namespace {/// <summary>/// 日志类型 枚举/// </summary>public enum LogType{[Description("调试日志&q…

【2024年华数杯全国大学生数学建模竞赛】C题:老外游中国 问题思路分析及Python代码实现

【2024 年华数杯全国大学生数学建模竞赛】C题&#xff1a;老外游中国 问题思路分析及Python代码实现 1 题目 最近&#xff0c;“city 不 city”这一网络流行语在外国网红的推动下备受关注。随着我国过境免签政策的落实&#xff0c;越来越多外国游客来到中国&#xff0c;通过网…

MS1112驱动开发(iio框架)

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

【Java】深度解析Java的反射机制

反射&#xff08;Reflection&#xff09; 一、 反射的基本概念二、 获取类的信息三、 获取类的成员四、 动态创建对象五、 动态调用方法六、 动态访问和修改字段 总结 一、 反射的基本概念 反射是一种运行时机制&#xff0c;允许程序在运行时检查和操作类、方法、字段等。通过…

JavaFX布局-TabPane

JavaFX布局-TabPane 常用属性paddingsidetabClosingPolicytabDragPolicy 实现方式Java实现fxml实现 组织一组tab的容器&#xff0c;可以设置关闭&#xff0c;拖拽等每个tab内容可以设置不同容器数据 常用属性 padding 内边距&#xff0c;可以单独设置上、下、左、右的内边距 …

docker部署java项目(war包方式)

场景描述:java项目war包,在开发开电脑上使用dockerfile构建镜像,上传镜像到客户服务器中使用docker加载docker镜像,然后部署。 目录 一、本地环境安装 docker git 二、服务器环境安装 docker 三、构建docker镜像(win系统) 四、注意事项 (1)系统架构 (2)使…

如何准备专利申请书的摘要部分?

如何准备专利申请书的摘要部分&#xff1f;

【EI会议征稿通知】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

重要信息 会议官网&#xff1a;www.icbase.org&#xff08;查看详情&#xff09; 中文主页&#xff1a;【往届会后3个月检索】第五届大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09;_艾思科蓝_学术一站式服务平台 会议时间&#xff1a;2024年9月2…

C++笔记---类和对象(中)

1. 类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。 一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数&#xff0c;分别为&#xff1a;构造函数&#xff0c;析构函数&#xff0c;拷贝构…