Python中的函数及相关操作

本文详细介绍了Python中的函数,包括函数的定义、复用性、可维护性和可读性的提升。讲解了函数创建的语法,如def关键字、参数传递、默认参数、关键字参数和不定长参数的使用。还提到了匿名函数lambda和递归函数的概念,以及它们的特点和调用过程。通过实例展示了如何创建和调用函数,以及不同参数类型的使用。
摘要由CSDN通过智能技术生成

函数

  • 定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
  • 为什么需要函数:
    • 复用代码;
    • 隐藏实现细节;
    • 提高可维护性;
    • 提高可读性,便于调试;
函数的创建
  • 语法格式:
    def 函数名(形式参数):
        函数体
    
  • 函数代码块以def关键词开头,后接函数标识符名称和圆括号();
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数;
    • 默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的;
  • 函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明;
  • 函数内容以冒号:起始,并且缩进;
  • 函数体中的return[表达式]用于结束函数,选择性地返回一个值给调用方,不带表达式的return相当于返回None;
函数的调用
  • 语法格式:
    变量=函数名(位置参数)
    
  • 在调用列表时使用*在列表名前,可将列表中每个元素都转换为位置参数;
  • 在调用字典时使用*在字典名前,可将字典中每个键值对都转换为关键字参数;
  • 声明函数时,参数中星号*可以单独出现;如果单独出现星号*后的参数必须用关键字参数传入。
    • 举例
      def f(a,b,*,c):
          return a+b+c
      f(1,2,c=3)
      //正常运行,返回值为6
      f(1,2,3)
      //报错
      
参数类型
  • 必需参数;
    • 须以正确的顺序传入函数。调用时的数量必须和声明时的一样;
    • 在调用函数时,不传参数就会报错;
  • 关键字参数
    • 关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值;
    • 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值;
  • 默认参数
    • 在编写函数时对关键字赋值,如果调用时没有重新赋值,那么函数将以编写时的值进行操作;
    • 举例:
      def printinfo(name="Lee",age=24):
         "打印任何传入的信息"
         print("姓名:",name)
         print("年龄:",age)
         return
      
      此时调用函数时如果不传入新的参数,则输出:
      姓名:Lee
      年龄:24
      
  • 不定长参数
    • 此类函数能处理比当初声明时更多的参数;
    • 不定长位置参数同时只能存在一个;
    • 当定义函数内有两种不定长参数存在时,位置参数(元组)在前,关键字参数(字典)在后;
    • 语法格式:
      • 生成元组:
        • 是位置实参:形式为值;
        def functionname([formal_args,] *var_args_tuple ):
           "函数说明"
           function_suite
           return [expression]
        
        • 加了星号*的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
        • 举例
          def printinfo( arg1, *vartuple ):
             "打印任何传入的参数"
             print ("输出: ")
             print (arg1)
             print (vartuple)
           
          # 调用printinfo 函数
          printinfo( 70, 60, 50 )
          
          输出结果为:
          70
          (60, 50)
          
          • 也可不对元组传输变量,在此情况下,该元组为空元组;
      • 生成字典:
        • 是关键字实参:形式为键值对;
        • 与生成元组类似,加了两个星号**的参数会以字典的形式导入;
匿名函数
  • 使用lambda来创建;
  • 所谓匿名,即不再使用def语句这样标准的形式定义一个函数;
    • lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数;
    • lambda函数不等同于C或C++的内联函数;
  • 语法格式:
    lambda [arg1 [,arg2,.....argn]]:expression
    
    • 举例:
      x = lambda a : a + 10
      print(x(5))
      
      输出结果为:15
递归函数
  • 定义:一个函数在函数体内调用了该函数本身,这个函数就称为递归函数。
  • 组成部分
    • 递归调用;
    • 递归终止条件;
  • 调用过程
    • 每递归调用一次函数都会在栈内存分配一个栈帧;
    • 每执行完一次函数,都会释放相应空间;
  • 优缺点
    • 优点:思路和代码简单;
    • 缺点:占用内存多,效率低下;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世澈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值