python学习笔记4

本文介绍了Python中的函数,包括函数的创建、分类、参数传递方式如位置实参、关键字实参、默认参数、关键字参数和命名关键字参数。还探讨了函数调用过程中的参数值变化,以及函数的返回值和全局、局部变量。最后讲解了Python中的异常处理,包括try-except结构及其变体,并列举了一些常见的Python异常类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十.函数

  1. 函数:执行特定任务以完成特定功能的一段代码

  2. 为什么需要函数
    复用代码,隐藏实现细节,提高可维护性,提高可读性便于调试

  3. 函数的创建
    语法结构:

    def 函数名(输入参数):
        函数体
        [return ...]    #不一定有return函数
    

    举例:

    def calc(a,b):       #输入参数为a和b两个参数,a和b为形参
        c=a+b
        return c        #函数返回值为参数a和b之和
    print(calc(10,20))  #调用函数,10和20为实参
    

    输出30
    形参和实参名称可以不同

  4. 匿名函数
    语法结构:

    <函数名>=lambda<参数列表>:<表达式>
    

    举例:

    f=lambda x,y:x+y
    print(f(1,2))
    

    输出3
    匿名函数用于在一行内定义一个简单的函数

  5. 函数分类

    • 来源:python标准库函数(内置函数、模块函数)、第三方库函数、用户自定义函数
    • 长度:单行(匿名函数)、多行(命名函数)
    • 嵌套:无嵌套、简单嵌套、自嵌套(递归函数)
  6. 函数调用的参数传递

    • 位置实参
      根据形参的对应位置进行实参传递
      举例:

      def calc(a,b):
          c=a/b
          return c
      print(calc(1,2))
      

      输出0.5

    • 关键字实参
      根据形参名称进行实参传递
      以上面calc函数为例

      print(calc(b=1,a=2))
      

      输出2.0

    • 默认参数
      指定参数的默认值,但输入的实参小于形参个数,即使用默认值
      举例:

      def calc(a,b=1):
          c=a+b
          return c
      print(calc(2))
      

      输出3
      (形参a的值为给定的实参2,b的值为默认参数1)

    • 关键字参数
      定义函数时在变量前加**,这些关键字参数在函数内部自动组装为一个dict(关键字参数可给定任意数量参数)
      举例:

      def person(name,age,**kw):
          print('name:',name,'age:',age,'other:',kw)
      person('bob',35,m=1,n=2)
      person('bob',35,m=1,n=2,t=3)
      

      输出

      {'m': 1, 'n': 2}
      {'m': 1, 'n': 2, 't': 3}
      
    • 命名关键字参数
      可以限制关键字参数的名字,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数
      举例:

      def person(name,age,*,city,job):
          print(name,age,city,job)
      person('jack',128,city='beijing',job='engineer')
      

      输出jack 128 beijing engineer

      但如果

      person('jack',128,'beijing','engineer')
      

      就会报错(因为没有输入关键字参数的名字)

  7. 参数补充知识

    • 在函数调用过程中,进行参数的传递,如果是不可变对象,在函数体的修改不会影响实参的值,如果是可变对象,在函数体的修改会影响实参的值
      举例:
    def fun(a):         
        a=1000           
        return a          
    b=1             
    print(fun(b))          
    print(b)
    

    输出

    1000
    1
    

    b调用函数后为1000,但其本身仍然未改变,是1

    • 当定义函数时即使用默认参数也使用可变参数,默认参数会退化为普通参数

    • 参数定义的顺序:必选参数、默认参数、可变参数、命名关键字参数、关键字参数

  8. 函数的返回值
    函数返回多个值时,结果为元组

  9. 全局变量和局部变量
    函数内定义的变量是局部变量,在函数体外部不可使用,函数外定义的变量是全局变量。
    如果要在函数内定义全局变量,使用global
    举例

    x = 1
    def f():
        global x
        x = 2
    f()
    print(x)
    

    输出2

十一.解决bug

  1. bug由来
    粗心导致的语法错误、索引越界、知识点掌握不熟练、思路不清…

  2. try-except结构
    语法结构:

    try:
        可能会出现异常的代码
    except 异常类型(可省略):
        报错后执行的代码
    

    多个except结构时,捕获异常的顺序按照先子类后父类的顺序,最大的父类是BaseException
    举例:

    try:
        a=int(input('请输入第一个数'))
        b=int(input('请输入第二个数'))
        #a和b使用int函数进行强制类型转换
        result=a/b
        print(result)
    except ZeroDivisionError:      #b为0时
        print('对不起,除数不能为0')
    except BaseException:1         
        print('对不起,您似乎没有输入整数')
    
  3. try-except-else结构
    果try块中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块

  4. try-except-else-finally结构
    无论是否异常都执行finally块

  5. python中常见异常类型

    • ZeroDivisionError:除(取模)0
    • indexError:序列中没有此索引
    • KeyError;映射中没有这个键
    • NameError:未声明/初始化对象
  6. try-except-else-finally结构
    无论是否异常都执行finally块

  7. python中常见异常类型

    • ZeroDivisionError:除(取模)0
    • indexError:序列中没有此索引
    • KeyError;映射中没有这个键
    • NameError:未声明/初始化对象
    • SyntaxError:Python语法错误;ValueError:传入无效参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值