04 python函数

4.1 函数的快速开发体验

"""
演示,快速体验函数的开发和使用
"""#需求,统计字符串的长度,不使用内置函数len()str1 = 'itheima'
str2 = 'itcast'
str3 = 'python'#定义一个计数的变量
count = 0
for i in str1:count += 1
print(f'字符串{str1}的长度是:{count}')count = 0
for i in str2:count += 1
print(f'字符串{str2}的长度是:{count}')count = 0
for i in str3:count += 1
print(f'字符串{str3}的长度是:{count}')#使用函数简化过程def my_len(data):count = 0for i in data:count += 1print(f'字符串{data}的长度是:{count}')my_len(str1)
my_len(str2)
my_len(str3)

4.1.1演示函数的定义语法

'''
演示函数的定义语法
'''#定义一个语法,输出相关信息
def say_hi():print('HI 我是学习的人,学python的人')#调用函数,让函数工作
say_hi()'''
定义一个自动查核算的小函数
'''def check():print('欢迎来到延安大学!\n请出示你的健康吗及核酸证明!')#调用函数,让函数工作
check()

4.1.2 演示函数使用参数

'''
演示函数使用参数
'''#定义两数相加的函数。通过参数接受被计算的两个数字def add(x,y,z):result = x + y +zprint(f"{x}+{y}+{z}的计算结果是:{result}")#调用函数
add(1,5,99)'''
升级版定义一个自动查核算的小函数
'''def cpu(wendu):print('欢迎来到延安大学!请出示你的健康吗及核酸证明!,并测量体温')if wendu > 37.5:print(f'你的体温是{wendu},需要隔离')else:print(f'你的体温是{wendu},请进')cpu(36.6)

4.1.3定义函数返回值的语法格式

'''
演示:定义函数返回值的语法格式
'''#定义一个函数,完成2数相加功能
def add(x,y):result = x+y
#通过返回值,将相加的结果的返回给调用者return result
#函数的返回值可以通过变量接受r = add(5,6)
print(r)

4.1.4 特殊字符:None

'''
演示特殊字符:None
'''#无return语句的函数返回值def say_hi():print('你好呀')result = say_hi()
print(f'无返回值,返回的内容是{result}')
print(f'无返回值,返回的内容类型是{type(result)}')#主动返回None的函数def say_hi2():print('你好呀')return None
result = say_hi2()
print(f'无返回值,返回的内容是{result}')
print(f'无返回值,返回的内容类型是{type(result)}')'''
None用于if判断
'''def check_age(age):if age > 18 :return 'success'else:return None
result = check_age(17)if not result:#进入if 表示result是None值,也就是Falseprint('未成年,禁止进入')'''
None用于声明无初始内容的变量
'''
name = None

4.1.5 函数的说明文档

'''
演示函数进行文档说明
'''#定义函数,进行文档说明def add(x,y):'''add函数可以接受两个参数,进行两数相加的功能:param x:形参x表示相加的其中一个数字:param y: 形参y表示相加的另一个数字:return: 返回值是两数相加的结果'''result = x + yprint(f'两数相加结果是:{result}')returnadd(5,6)

4.1.6 演示嵌套调用函数

'''
演示嵌套调用函数
'''#定义函数func_bdef func_b():print('----2-----')#定义函数func_a,并调用函数func_bdef func_a():print('----1-----')#嵌套调用函数func_bfunc_b()print('----3-----')#嵌套调用函数func_a
func_a()

4.1.7  演示在函数使用时,定义的变量作用域

'''
演示在函数使用时,定义的变量作用域
'''#演示局部变量def testA():#定义局部变量numnum = 100print(num)testA()
# 出了函数体,局部变量无法使用
#print(num)'''
演示全局变量
'''#定义全局变量
num = 600
def testB():print(f'testB:{num}')def testC():print(f'testC:{num}')testB()
testC()
print(num)'''
在函数体内修改全局变量
'''
#定义全局变量
num = 900
aaa = 1800
def testB_1():# global 关键字声明a是全局变量global aaaaaa = 699999print(f'testB_1:{aaa}')def testC_1():num = 666  #局部变量print(f'testC_1:{num}')testB_1()
testC_1()
print(num)
print(aaa)

4.1.8 函数的基础使用案例

'''
演示函数综合开发案例
'''#定义全局变量moeny,name
money = 1
name = None#要求输入客户姓名
name=input('请输入姓名:')#定义查询函数
def query(show_header):if show_header:print('--------查询余额--------')print(f'你好{name},你的余额为{money}')#定义存款函数
def saving(num):global money  #将money在函数内部定义为全局变量money += numprint('--------存款--------')print(f'你好{name},你的存款{num}成功')query(False)   #调用query函数查询存款#定义取款函数
def get_money(num):global money  #将money在函数内部定义为全局变量money -= numprint('--------取款--------')print(f'你好{name},你的取款{num}成功')query(False)      # 调用query函数查询存款#定义主菜单函数
def main():print("--------主菜单--------")print(f'你好{name},欢迎来到黑马银行,请选择操作:')print('查询余额\t[输入1]')print('存款\t\t[输入2]')print('取款\t\t[输入3]')  #通过\t制表符对齐输出print('退出\t\t[输入4]')return input('请输入你的选择:')#设置无限循环,确保程序不退出while True:keyboard_input = main()if keyboard_input == '1':query(True)continueelif keyboard_input == '2':num = int(input('你想要存多少,请输入:'))saving(num)continueelif keyboard_input == '3':num = int(input('你想要取多少,请输入:'))get_money(num)continueelse:print('退出')break

4.2 函数进阶

4.2.1  函数的多个返回值

'''
演示python多个返回值实例
'''#演示多个变量,接受多个返回值
def test():return 1,2,3x,y,z = test()
print(x,y,z)

4.2.2 函数多种参数的使用方式

'''
演示多种传参的形式
'''def user_info(name,age,gender):print(f'姓名{name},年龄{age},性别{gender}')#位置参数 - 默认使用形式
user_info('TMo',20,'男')#关键字参数
user_info(name='TMo',age=20,gender='男')
user_info(age=20,name='TMo',gender='男')#可以不按照参数的定义顺序传参
user_info('TMo',age=20,gender='男')#缺省参数
def user_info(name,age,gender = '男'):   #默认参数位于最后print(f'姓名{name},年龄{age},性别{gender}')user_info('TMo',age=20)
user_info('Lili',age=10,gender='女')#不定长 - 位置不定长, *号
#不定长的形式参数会作为元组存在,接受不定长数量的参数传入
def user_info(*args):print(args,type(args))
user_info(1,2,3,4,'小米')#不定长 - 关键字不定长 ,**号
def user_info(**kwargs):print(kwargs,type(kwargs))
user_info(a=1,b=2)

4.2.3 函数作为参数传递

'''
演示函数作为参数传递
'''# 定义一个函数,接受另一个函数作为传入参数
def test_func(compute):result = compute(1, 2)print(f'compute参数类型是:{type(compute)}')print(f'计算结果是:{result}')# 定义另一个函数,准备作为参数传递另一个函数
def compute(x, y):return x + y# 调用并传入函数
test_func(compute)

4.2.4  lambda匿名函数

'''
演示lambda匿名函数
'''# 定义一个函数,接受另一个函数作为传入参数
def test_func(compute):result = compute(1, 2)print(f'compute参数类型是:{type(compute)}')print(f'计算结果是:{result}')# 通过lambda匿名函数形式,将匿名函数作为参数传入
#lambda函数只支持一行代码
test_func(lambda x, y: x + y)

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

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

相关文章

FPGA使用乘法的方式

FPGA使用乘法的方式 方法一:直接使用乘法符“*” 源代码 module multiply(input [7:0] a,input [7:0] b,output wire [15:0] result);(*use_dsp48 = "yes"*) wire [15:0] result;assign result = a*b; endmodule仿真代码 module multiply_tb();reg [7:0] a; re…

java minio通过getPresignedObjectUrl设置(自定义)预签名URL下载文件的响应文件名之minio源码改造方案

Minio预签名URL自定义响应文件名之Minio源码改造 需求说明Minio源码改造一、环境准备二、下载Minio源代码三、修改源代码1.修改cmd目录下的api-router.go这个代码文件2.将filename参数值设置到响应头4.修改验证签名时是否需要带入filename参数验证 四、大功告成,编译…

残差网络中的BN (Batch Normalization 批标准化层)的作用是什么?

文章目录 什么是BN (Batch Normalization 批标准化层)一、BN层对输入信号进行以下操作:二、BN 层有什么作用? 什么是BN (Batch Normalization 批标准化层) BN层的全称是Batch Normalization层,中文可以翻译为批标准化…

如何让.NET应用使用更大的内存

我一直在思考为何Redis这种应用就能独占那么大的内存空间而我开发的应用为何只有4GB大小左右,在此基础上也问了一些大佬,最终还是验证下自己的猜测。 操作系统限制 主要为32位操作系统和64位操作系统。 每个进程自身还分为了用户进程空间和内核进程空…

Mybatis-Spring整合原理:MapperFactoryBean和MapperScannerConfigurer的区别及源码剖析

文章目录 引言MapperFactoryBean的用法和优缺点MapperScannerConfigurer的用法和优缺点MapperFactoryBean源码分析MapperScannerConfigurer源码分析Spring容器初始化流程回顾核心方法:postProcessBeanDefinitionRegistryBeanDefinitionRegistryPostProcessor和BeanF…

Java 并发编程(六)-Fork/Join异步回调

一、并发编程 1、Fork/Join分支合并框架 Fork/Join它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。Fork/Join框架要完成两件事情: Fork:把一个复杂任务进行分拆&#xff0…

下午好~ 我的论文【CV边角料】(第三期)

文章目录 CV边角料Pixel ShuffleSENetCBAMGlobal Context Block (GC)Criss-Cross Attention modules (CC) CV边角料 Pixel Shuffle Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network pixelshuffle算法的实现流…

EXCEL SUM类函数

目录 一. SUM二. SUMIF三. SUMIFS四. SUMPRODUCT 一. SUM ⏹对一列或一组单元格中的数字进行求和。 基本语法 SUM(number1, [number2], ...)✅统计所有产品的总数量 SUM(C2:C13) 二. SUMIF ⏹按照特定条件对范围内的单元格进行求和的函数。 基本语法 SUMIF(条件区域, 指定…

山西电力市场日前价格预测【2023-12-16】

日前价格预测 预测说明: 如上图所示,预测明日(2023-12-16)山西电力市场全天平均日前电价为259.00元/MWh。其中,最高日前电价为333.74元/MWh,预计出现在18:00。最低日前电价为0.00元/MWh,预计出…

C语言训练:三个字符串比较大小,实现两个整数数的交换统计二进制中1的个数

目录 一、编写程序,输入三个字符串,比较它们的大小,并将它们按由小到大的顺序输出。要求用函数、指针实现。要求:要采用函数调用,并用指向函数的指针作为函数的参数。 1.不使用函数指针作为参数,并自己模拟strcmp。 …

001 Windows虚拟机

一、虚拟机安装Windows10 选自定义安装 升级是针对你电脑上有系统的情况下,你要升级;没有系统就选择自定义。 硬盘60G 直接单击下一步就是一个盘 如果你想对磁盘进行分区 分第一个区的时候它会去创建系统的保留分区和系统分区,然后还剩20…

流量分析基础

定义: 流量分析(Traffic Analysis)是指对网络流量数据进行分析和解释,以获得有关网络中通信的信息和情报。这种技术可以用于网络安全、网络管理和网络优化等领域。 网络流量包含了许多有关网络通信的细节信息,如源IP地…

Linux c++开发-06-使用Linux API 进行文件的读写

先简单的介绍一下open,read,write 先用open接口去打开文件,flag表示打开文件的权限不同。 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);示例 结果:

经典深度学习算法【1】:K-近邻算法(KNN)概述

最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类。但是怎么可能所有测试对象都会找到与之完全匹配的训练对象呢,其次就是存在一个测试对象同时与多个训练…

迭代器的分类

迭代器的分类: 这里的前置后置递增是a和a; 这里的前值后置递减是a--和--a; 各迭代器的继承关系: 当使用双向迭代器时,可以使用随机迭代器;

THEMIS---Beta Sprint Summary Essay Blog

Which course does this assignment belong to2301-MUSE社区-CSDN社区云What are the requirements for this assignmentbeta SprintThe goal of this assignmentTo summarize the beta task progress and the teams sprintsTeam NameThemisTop-of-the-line collection of essa…

maui中实现加载更多 RefreshView跟ListView 跳转到详情页 传参(3)

效果如图 这里的很多数据是通过传参过来的的。 代码 例表页加入跳转功能&#xff1a; <ListView ItemsSource"{Binding Items}" ItemAppearing"OnItemAppearing" ItemTapped"OnItemTapped" RowHeight"70" Margin"20"…

visual studio 2019 移除/卸载项目已经如何再加载项目

文章目录 移除解决方案下的某个项目添加已移除的项目移除项目加载已卸载的项目注意事项 移除解决方案下的某个项目 在项目名称上&#xff0c;点击鼠标右键&#xff0c;弹出右键工具栏&#xff0c;找到 移除 功能。 然后鼠标左键点击 移除。 弹出的模态框&#xff0c;选择确定…

代码随想录刷题题Day15

刷题的第十五天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day15 任务 ● 513.找树左下角的值 ● 112. 路径总和 113.路径总和ii ● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历…

MYSQL备份和恢复

数据库的备份和恢复&#xff1a; 备份&#xff1a;完全备份 增量备份 完全备份&#xff1a;将整个数据库完整的进行备份 增量备份&#xff1a;在完全备份的基础之上&#xff0c;对后续新增的内容进行备份 备份的需求&#xff1a; 在生产环境中&#xff0c;数据的安全至关重…