04 python函数

news2024/12/23 0:39:31

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)

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

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

相关文章

【高级网络程序设计】Block1总结

这一个Block分为四个部分,第一部分是Introduction to Threads and Concurrency ,第二部分是Interruptting and Terminating a Thread,第三部分是Keep Threads safety:the volatile variable and locks,第四部分是Beyon…

RabbitMQ不公平分发问题分析及问题解决

1.不公平分发 1.1 不公平分发策略是什么? 在 RabbitMQ 中,不公平分发(Unfair Dispatch)是指当多个消费者(Consumers)同时订阅同一个队列(Queue)时,消息的分发机制是不公…

把文化注入品牌,五粮液荣获“全国企业文化优秀成果特等奖”

执笔 | 萧 萧 编辑 | 扬 灵 12月15日,以“塑造优秀企业文化,凝聚企业发展力量”为主题的全国企业文化年会(2023)首次在长江首城、中国酒都、中国动力电池之都宜宾盛大举行。 凭借“弘扬和美文化,谱写高质量发展新篇章”成果…

2018年AMC8数学竞赛真题的典型考点和详细解析

从战争中学习战争最有效。前几天,六分成长分析了2023年、2022年、2020、2019年的AMC8的典型考题、考点和详细答案解析。今天继续为大家分享2018年的AMC8的五道典型考题。 欢迎您查看历史文章了解之前各年的真题解析,本系列会持续更新,直到大家…

Linux:进程地址空间

目录 1.程序地址空间 2.进程地址空间 1.程序地址空间 我们在讲C/C语言的时候,32位平台下,我们见过这样的空间布局图 我们来验证一下这张图的正确性: int un_gval;int init_gval100;int main(int argc, char* argv[],char* env[]){//代码…

Nat. Mach. Intell. | 通过深度神经网络联合建模多个切片来构建一个三维全生物体空间图谱

今天为大家介绍的是来自Angela Ruohao Wu 和Can Yang团队的一篇论文。空间转录组学(ST)技术正在革新探索组织空间结构的方式。目前,ST数据分析通常局限于单个二维(2D)组织切片,这限制了我们理解在三维&…

【ArkTS】入门

代码结构分析 struct Index{ } 「自定义组件:可复用的UI单元」 xxx 「装饰器:用来装饰类结构、方法、变量」 Entry 标记当前组件是入口组件(该组件可被独立访问,通俗来讲:它自己就是一个页面)Component 用…

【后端学前端】第四天 css动画 垂直轮播效果(css变量、位移缩放动画、动画延迟)

1、学习信息 视频地址&#xff1a;css动画 垂直轮播效果&#xff08;css变量、位移缩放动画、动画延迟&#xff09;_哔哩哔哩_bilibili 2、源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title…

QT for Android安卓编译环境搭建+首次编译3个大坑

1、安装 编译环境能否搭建成功&#xff0c;主要是看各个依赖软件的版本是否匹配。依赖的软件有3个&#xff1a;JDK、安卓SDK、安卓NDK。 我的qt版本是5.14.1&#xff0c;我亲测以下版本可以成功让编译安卓&#xff1a; QT5.14 JDK1.8.0 安卓SDK26.1 安卓NDK20.1 在QT-&g…

爬虫 scrapy ——scrapy shell调试及下载当当网数据(十一)

目录 一、scrapy shell 1.什么是scrapy shell&#xff1f; 2.安装 ipython 3.使用scrapy shell 二、当当网案例 1.在items.py中定义数据结构 2.在dang.py中解析数据 3.使用pipeline保存 4.多条管道的使用 5.多页下载 参考 一、scrapy shell 1.什么是scrapy shell&am…

VBA即用型代码手册之工作薄的创建及保存

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

python封装执行cmd命令的方法

一、前置说明 在自动化时&#xff0c;经常需要使用命令行工具与系统进行交互&#xff0c;因此可以使用python封装一个执行cmd命令的方法。 二、代码实现 import subprocess import timefrom common.exception import RunCMDError from common.logger import loggerclass Cmd…

Nat Med | 白血病患儿持续存在CD19 CAR-T细胞的转录特征

今天给同学们分享一篇实验文章“Transcriptional signatures associated with persisting CD19 CAR-T cells in children with leukemia ”&#xff0c;这篇文章发表在Nat Med期刊上&#xff0c;影响因子为82.9。 结果解读&#xff1a; 研究队列和实验概述 作者研究了15例高…

网络编程day2作业

1.tcp实现通信 服务器&#xff1a; //tcp服务端#include <head.h>#define SERPORT 8888 #define IP "192.168.125.6"int main(int argc, const char *argv[]) { //1.创建套接字int sfdsocket(AF_INET,SOCK_STREAM,0);//2.绑定struct sockaddr_in ser;ser.sin…

java --- 集合进阶

目录 一、单列集合顶层接口 Collection 1.1 基本方法 1.2 Collection 的遍历方式 二、list集合 1.2 ArrayList Vector 底层结构 1.3 LinkedList ArrayList 和 LinkedList 比较 三、set接口 3.1、Set 接口和常用方法 3.2 HashSet HashSet 底层机制&#xff08;HashMap…

虚拟机Linux(Centos7)安装Docker

如果没有安装虚拟机的&#xff0c;可以参考这篇VMware虚拟机安装Linux操作系统&#xff08;CentOS7&#xff09; 文章目录 0.安装Docker1.CentOS安装Docker1.1.卸载&#xff08;可选&#xff09;如何看自己的虚拟机上是否安装过docker&#xff1f; 1.2.安装docker1.3.启动docke…

pytest之allure测试报告02:allure具体使用方法

一、allure包含的方法 二、allure使用教程 &#xff08;1&#xff09;用例中写入allure方法 allure.epic("数据进制项目epic") allure.feature("手机号模块feature") class TestMobile:allure.story("杭州的手机号story")allure.title("测…

多层记忆增强外观-运动对齐框架用于视频异常检测 论文阅读

MULTI-LEVEL MEMORY-AUGMENTED APPEARANCE-MOTION CORRESPONDENCE FRAMEWORK FOR VIDEO ANOMALY DETECTION 论文阅读 摘要1.介绍2.方法2.1外观和运动对其建模2.2.记忆引导抑制模块2.3. Training Loss2.4. Anomaly Detection 3.实验与结果4.结论 论文标题&#xff1a;MULTI-LEVE…

重磅!大模型(LLMs)排行榜清单发布!

目前&#xff0c;人工智能领域呈现出一片蓬勃发展的景象&#xff0c;大型模型成为了激发这一繁荣的关键引擎。 国内不仅涌现了众多大模型&#xff0c;而且它们的发展速度之快令人瞩目。这种全面拥抱大型模型的态势为整个人工智能生态系统赋予了新的活力&#xff0c;让我们对国…

栈——OJ题

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、最小栈1、题目讲解2、思路讲解3、代码实现 二、栈的压入、弹出序列1、题目讲解2、思路讲解…