• Python学习----函数


    函数

    函数:组织好的,可重复使用的,用来实现特定功能的代码段
    函数定义格式:(注意冒号和空格标识代码块)
    参数不需要可以省略,返回值不需要可以省略。
    先定义,后调用。要是调用写在定义之前,编辑器会报错

    def 函数名(参数):
    函数体
    return 返回值

    基础定义:
    在这里插入图片描述
    函数的形参和实参,与java含义一样

    因为Python是弱类型语言,有返回值直接return就行,外部调用直接接收返回值即可。不需要想java那样定义返回值类型,接收类型还必须和返回值一样。
    在这里插入图片描述
    如果函数中没有return语句,那么函数有返回值吗
    结果是有的
    Python中有一个特殊的字面量,None,起类型是 NoneType’>
    无返回值的函数,实际上就是返回了:None这个字面量。
    你也可以主动返回 None。 return None
    在这里插入图片描述
    用途:用在if判断上 , None等同于false。申明无内容变量 name = None (Python中变量在定义时必须赋初值,但是你现在没有初值时,就可以使用None代替)

    函数的说明文档

    作用:就是解释说明函数的含义,辅助理解函数的作用。就像java的注释,但是在Python中有一个单独的函数说明文档这个东西
    输入单个双引号,然后回车,编辑器自动补全
    PyCharm编辑器中,鼠标悬停函数调用,会有函数说明
    在这里插入图片描述
    函数的嵌套调用: 函数A 调用 函数B

    变量的作用域

    和java含义一样
    局部变量:定义在函数体内部的变量,只在函数体内部生效。在外面无法进行调用(注意:需要和for循环进行区别,在for循环外部可以读取for循环内部的变量,这儿是说的函数体内部)
    全局变量: 定义在函数体外面,可以在函数体内部使用,这个变量的作用域在定义之后的代码中都可以使用。

    global 关键字

    情景:
    在这里插入图片描述
    在test_2函数中 的num 相当于又定义了一个 局部变量,在 24行代码执行时,它会优先使用局部变量,当局部变量不存在时,再去寻找全局变量,所以在test_2函数中修改全局变量不成功。
    那么我想在test_2方法中想修改 num的值,那么在全局变量num定义时 使用global关键
    在test_2方法中使用global关键字进行说明,你这个变量是全局变量
    在这里插入图片描述

    函数的多返回值

    按照返回值的顺序,写对应顺序的多个变量接收即可
    语法:
    def 函数名():
    函数体
    return 返回值1,返回值2

    x , y = 函数名()
    x = 返回值1 , y = 返回值2
    变量直接使用逗号隔开,支持不同类型的数据return

    在这里插入图片描述

    函数参数

    函数中有4种常见参数使用方式
    位置参数
    关键字参数
    缺省参数
    不定长参数

    位置参数:
    调用参数的时候根据函数定义的参数位置来传递参数
    传递的参数和定义参数的顺序及个数必须一致

    def user_info(name, age, gender):
    	print(f"你的名字{name},年龄是{age},性别是{gender}")
    
    user_info('Tom',20,'')
    
    • 1
    • 2
    • 3
    • 4

    关键字参数:
    函数调用时通过 “键=值” 形式传递参数
    作用:可以让函数更加清晰,容易使用,同时也清除可参数顺序的要求

    def user_info(name, age, gender):
    	print(f"你的名字{name},年龄是{age},性别是{gender}")
    
    # 关键字传参数
    user_info(name = '小明' , gender = '男' , age = 18)
    
    # 可以和位置参数混用,但是位置参数必须在前,且匹配参数的顺序
    user_info('小红' , gender = '女' , age = 19)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    缺省参数(默认参数)

    # 默认值设置的时候必须放在最后面
    def user_info(name, age, gender = '男'):
    	print(f"你的名字{name},年龄是{age},性别是{gender}")
    
    # 调用的时候不传参数就使用默认值,传了就使用传递的参数
    
    • 1
    • 2
    • 3
    • 4
    • 5

    不定长参数(可变参数)
    不定长参数:也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参数也可以)的场景
    不定长参数的类型: 位置传递,关键字传递

    位置传递不定长
    传递的所有参数都会被args变量收集,它会根据传进参数的位置,将其合并为一个元组(tuple),args是元组类型,这就是位置不定长传递
    在这里插入图片描述

    关键字传递不定长
    参数是 : 键 = 值 形式,所有键值对都会被参数接收,同时会根据键值对组成字典
    在这里插入图片描述

    函数作为参数传递

    这是一种计算逻辑的传递,而非数据的传递。
    这个和java的接口有点像,我调用接口方法,但是具体的实现是实现类完成的。
    就像如下代码,将函数作为参数传递,我在使用的时候不知道具体逻辑怎么实现,只管使用就行了。
    问:为什么不使用函数的调用?这样逻辑更改test_func也需要更改代码,这样我只需要更改调用的传参就行。
    在这里插入图片描述

    Lambda 匿名函数

    有名称函数可以重复使用,匿名函数只能使用一次
    def 关键字,可以定义 命名函数, lambda 关键字可以定义 匿名函数
    匿名函数语法:
    lambda 传入参数:函数体(一行代码)
    lambda是关键字,表示匿名函数定义
    传入参数表示匿名函数的形式参数, 如 : x,y表示接受2个形式参数
    函数体,就是函数的执行逻辑,要注意,只能写一行代码,无法写多行代码
    lambda不用谢return,默认是将结果return回去
    在这里插入图片描述

  • 相关阅读:
    【前端】JavaScript基础
    JAVA毕业设计的健身房管理系统计算机源码+lw文档+系统+调试部署+数据库
    python 打开exe
    Lecture1:从图像分类引出概念
    Client引入Eureka报Completed shut down of DiscoveryClient问题原因及解决方式
    大数据面试重点之kafka(四)
    OpenCV(四十):图像分割—漫水填充
    SpringBoot学习笔记(4)——B站动力节点
    python使用百度AipOCR来实现图像文字识别
    2024华为OD机试真题-出租车计费 、靠谱的车-(C++/Python)-C卷D卷-100分
  • 原文地址:https://blog.csdn.net/m0_48639280/article/details/127772684