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 = 0
    for i in data:
        count += 1
    print(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 +z
    print(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值,也就是False
    print('未成年,禁止进入')


'''
None用于声明无初始内容的变量
'''
name = None

4.1.5 函数的说明文档

'''
演示函数进行文档说明
'''

#定义函数,进行文档说明

def add(x,y):
    '''
    add函数可以接受两个参数,进行两数相加的功能
    :param x:形参x表示相加的其中一个数字
    :param y: 形参y表示相加的另一个数字
    :return: 返回值是两数相加的结果
    '''

    result = x + y
    print(f'两数相加结果是:{result}')
    return

add(5,6)

4.1.6 演示嵌套调用函数

'''
演示嵌套调用函数
'''

#定义函数func_b

def func_b():
    print('----2-----')

#定义函数func_a,并调用函数func_b

def func_a():
    print('----1-----')

    #嵌套调用函数func_b
    func_b()
    print('----3-----')

#嵌套调用函数func_a
func_a()

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

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

#演示局部变量

def testA():
    #定义局部变量num
    num = 100
    print(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 aaa
    aaa = 699999
    print(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 += num
    print('--------存款--------')
    print(f'你好{name},你的存款{num}成功')
    query(False)   #调用query函数查询存款

#定义取款函数
def get_money(num):
    global money  #将money在函数内部定义为全局变量
    money -= num
    print('--------取款--------')
    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)
        continue
    elif keyboard_input == '2':
        num = int(input('你想要存多少,请输入:'))
        saving(num)
        continue
    elif keyboard_input == '3':
        num = int(input('你想要取多少,请输入:'))
        get_money(num)
        continue
    else:
        print('退出')
        break

4.2 函数进阶

4.2.1  函数的多个返回值

'''
演示python多个返回值实例
'''

#演示多个变量,接受多个返回值
def test():
    return 1,2,3

x,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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

广西岑溪市火灾通报:1人死亡 AI科技助力预防悲剧

近日,广西岑溪市玉梧大道紫坭工业园一厂房发生一起令人心痛的火灾事件,造成1人不幸丧生。这起悲剧再次提醒我们,火灾的防范工作是多么的重要。在这样的背景下,我想分享一个能够有效预防类似悲剧的技术——北京富维图像公司开发的F…

C++ Qt开发:标准Dialog对话框组件

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍标准对话框QInputDialog、QFileDialog 这两种…

Java项目-瑞吉外卖Day5

视线新增套餐功能: 创建SetmealDish,SetmealDto类,与相关的mapper,service,serviceImpl,controller类。 Setmeal表示套餐,SetmealDish表示套餐对应的菜品。 交互过程: 前端请求&a…

XXE实体注入漏洞知识点

什么是XXE漏洞? XXE,即XML外部实体注入漏洞,XXE 漏洞发生在应用程序解析 XML 输入时, 没有禁止外部实体的加载 ,导致可加载恶意外部文件,造成文件读取、命令执行、攻击内网网站等危险。 XXE漏洞触发的点…

网络(九)三层路由、DHCP以及VRRP协议介绍

目录 一、三层路由 1. 定义 2. 交换原理 3. 操作演示 3.1 图示 3.2 LSW1新建vlan10、20、30,分别对应123接口均为access类型,接口4为trunkl类型,允许所有vlan通过 3.3 LSW2新建vlan10、20、30,配置接口1为trunk类型&…

索尼(ILCE-7M3)MP4文件只能播放前两分钟修复案例

索尼的ILCE-7M3是一款经典设备,其HEVC编码效果是比较不错的,因此受到很多专业人士的青睐。之前我们说过很多索尼摄像机断电生成RSV文件修复的案例,今天来讲一个特殊的,文件已经正常封装但仅能播放前两分钟多一点的画面。 故障文件…

《Linux C编程实战》笔记:文件属性操作函数

获取文件属性 stat函数 在shell下直接使用ls就可以获得文件属性&#xff0c;但是在程序里应该怎么获得呢&#xff1f; #include<sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(const char *file_name,struct stat *buf); int fstat(i…

spring 笔记四 SpringMVC 组件解析

文章目录 SpringMVC 组件解析SpringMVC的执行流程SpringMVC的执行流程SpringMVC组件解析SpringMVC注解解析 SpringMVC 组件解析 SpringMVC的执行流程 SpringMVC的执行流程 ① 用户发送请求至前端控制器DispatcherServlet。 ② DispatcherServlet收到请求调用HandlerMapping处…

图像识别完整项目之Swin-Transformer,从获取关键词数据集到训练的完整过程

0. 前言 图像分类的大部分经典神经网络已经全部介绍完&#xff0c;并且已经作了测试 代码已经全部上传到资源&#xff0c;根据文章名或者关键词搜索即可 LeNet &#xff1a;pytorch 搭建 LeNet 网络对 CIFAR-10 图片分类 AlexNet &#xff1a; pytorch 搭建AlexNet 对花进行分…

SpringBoot上传图片文件到七牛云

准备工作 maven pom.xml添加七牛云的sdk依赖 <dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk</artifactId><version>7.2.27</version></dependency>配置项 七牛云上传必要的配置有&#xff1a;acces…

四舍五入浮点数

1.题目如下&#xff1a; 2.方法一&#xff1a; 直接取出小数部分第一位来判断。 1. 先乘以10。 2. 强制类型转换为整型&#xff0c;去掉小数部分。 3. 再模10&#xff0c;相当于取出原数的小数第一位。 代码实现&#xff1a; int way1(double n) {int a (int)(n * 10);int b…

C++初学者使用Dev-C++5.11必备的小技巧

一、安装的软件是英文怎么办?陈老师来帮你解决! 步骤1:打开软件,不用我交了吧,看见一个单词长的像 Tools,看见了吧 步骤2:对,找到那个红色框子框起来的单词,最长的那个 步骤3:对,继续选择红色框子里的简体中文/Chinese,不是下面那个,注意,不要选错哟 步骤4:点击…

【️Java和C++主要的区别有哪些?各有哪些优缺点?】

✅Java和C主要的区别有哪些&#xff1f;各有哪些优缺点&#xff1f; ✅Java和C分别代表两种类型的语言✅ C是编译型语言✅ Java是解释型语言✅ 两者更多的主要区别如下&#xff1a; ✅知识拓展✅Java与C的参数方法有什么区别&#xff1f; ✅Java和C分别代表两种类型的语言 Java…

LeetCode day24

LeetCode day24 今天主打一个快乐happy(▽ʃ♡ƪ)&#xff0c;主要是今天写哈夫曼树被经典文件读取坑麻了&#xff08;为啥绝对路径能读取&#xff0c;相对不行。罢了&#xff09; 一个中等题&#xff0c;但是咋感觉很小学捏。。。 2177. 找到和为给定整数的三个连续整数 相…

消息队列有哪些应用场景?

分布式系统不同模块之间的通信&#xff0c;除了远程服务调用以外&#xff0c;消息中间件是另外一个重要的手段&#xff0c;在各种互联网系统设计中&#xff0c;消息队列有着广泛的应用。从本文开始&#xff0c;专栏进入分布式消息的模块&#xff0c;将讨论消息队列使用中的高频…

C++入门篇

呀哈喽&#xff0c;我是结衣。 了解完C的发展历程&#xff0c;我们当然也要会用C啊。今天这篇博客就是来帮助我们来入门C的&#xff0c;当然要入门C当然也要先学会C语言啦。在我学习C的过程中我会一直把C博客更新下去的。 C关键字 我们都知道C语言是有32个关键字的&#xff0…

Linux之进程(四)(进程地址空间)

目录 一、程序地址空间 二、进程地址空间 1、概念 2、写时拷贝 3、为什么要有进程地址空间 四、总结 一、程序地址空间 我们先来看看下面这张图。这张图是我们在学习语言时就见到过的内存区域划分图。 下面我们在Linux下看一看内存区域是不是也是这么划分的。 可见在Li…

EIS(防抖):meshflow算法

视频防抖的应用 对视频防抖的需求在许多领域都有。 这在消费者和专业摄像中是极其重要的。因此&#xff0c;存在许多不同的机械、光学和算法解决方案。即使在静态图像拍摄中&#xff0c;防抖技术也可以帮助拍摄长时间曝光的手持照片。 在内窥镜和结肠镜等医疗诊断应用中&…

Linux下C++程序瘦身

目录 一.前言二.如何瘦身三.如何读取调试信息文件四.其他 一.前言 我们知道&#xff0c;C程序如果带着调试信息的话会比较大&#xff0c;所以一般发布版本都会去掉调试信息&#xff0c;但是我们又希望如果程序崩溃了可以使用core转储文件进行调试&#xff0c;如果不带调试信息…

[已解决】uniapp内置插件,editor富文本报错(附quill.min.js、image-resize.min.js文件)

在使用uni-app运行内置插件editor时&#xff0c;无法输入内容&#xff0c;控制台报错 原因&#xff1a;查看官网得知&#xff0c;需动态引入quill.min.js、image-resize.min.js文件 解决方法&#xff1a; 1.下载quill.min.js、image-resize.min.js到项目static/eidtor文件中 链…