Day12-函数进阶

Day12-函数进阶

1.返回值

  • 1.如何确定返回值

    执行函数体的时候遇到return,return后面的值就是函数的返回值。(需要将哪个数据从函数内部传递到函数外部,就将哪个数据放在return的后面)

  • 2.怎么获取函数返回值

    获取函数表达式的值,就是获取函数的返回值(每一个函数调用的表达式都有结果,结果就是这个函数的返回值

    函数返回的值能做的事情,调用表达式都可以做

    函数调用表达式—调用函数的语句

  • 3.什么时候需要函数返回值

如果实现函数的功能产生了新的数据,就将新的数据作为返回值返回(而不是在函数内部打印这个数据)

2.return的作用

  • 1.确定函数的返回值

  • 2.提起结束函数—在执行函数体的时候,什么时候遇到return,函数什么时候结束

    def func3():
        print('========')
        print('+++++++++')
        for x in range(3):
            if x == 1:
                return 100
            print(x)
        print('hello world!')
    

3.变量的作用域

  • 1.变量的作用域

    根据变量作用域的不同,可以将变量分为全局变量和局部变量两种

  • 2.全局变量和局部变量

    • 全局变量

      Python中没有定义再函数中、类中的变量就是全局变量

      全局变量的作用域:从定义开始,到程序结束

      全局变量默认情况下保存在全局栈区间(全局栈区间结束后才会自动释放)

    • 局部变量

      定义在函数中变量时局部变量(形参是属于定义再函数中的变量)

      局部变量的作用域:从定义开始,到函数结束

      ps:每次调用函数的时候,系统都会在自动为这一个函数创建一个临时的栈区间,这个函数中产生的所有数据,默认情况下都是保存在临时栈区间中的。当函数调用结束的时候,这个临时栈区间会自动释放(里面的数据都会被销毁)

  • 3.global的用法

    • 用法1:如果想要在函数中修改一个全局变量的值,就可以在函数中变量使用前用global对变量进行说明

    • 用法2:在函数中定义全局变量,也可以使用global

      def func3():
          # 在函数里面修改全局变量的值,不会修改成功,而是定义一个新的局部变量
          m = 299
          print('函数里面的m:', m)
      
          global n
          n = 299
          print('函数里面的n:', n)
      
          global t
          t = 300
      

4.参数

  • 1.位置参数和关键字参数

    • 位置参数:以’数据1,数据2,数据3…'的形式存在,让实参对应的数据和形参对应的变量位置上一 一对应
    • 关键字参数:以’参数名1=数据1,参数名2=数据2,参数名3=数据3,…'的形式存在。
      注意:多个关键字参数可以随意交换位置,它不会影响形参和实参的对应关系
    • 3.混用:调用函数的时候位置参数和关键字参数可以一起使用,但是位置参数必须在关键字参数的前面
  • 2.参数默认值

    • 定义函数的时候,可以以’变量名=值’的形式,给形参赋默认值。已经有默认值的参数,在调用函数的时候可以不用传参。

    • 定义函数的时候,可以有的参数有默认,有的参数没有默认值,但是没有默认值的参数必须在有默认值的参数的前面

  • 3,参数类型说明

    没有默认值的参数–形参名:类型名

    有默认值的参数:默认值的类型就是对应的参数类型

    def func6(str1: str, str2='') -> int:
        pass
    
  • 4,不定长参数

    • 带*的不定长参数:

      # 案例1:定义一个函数计算多个数的和
      # sum2(19, 27, 78, 89, 2, 67)
      def sum2(*num):
          # print('num:', num)
          s = 0
          for x in num:
              s += x
          return s
      
      
      # 如果一个定长参数放在一个不定长参数的后面,那么这个定长参数必须用关键字参数传参!
      def func2(*x, y):
          pass
      
      # !!!!单独的*后面的参数必须使用关键字参数传参
      def func3(a, *, b):
          pass
      
    • 带**的不定长参数

      # 案例2:定义一个函数收集一个学生的信息(姓名、年龄、电话和各科成绩)
      def create_student(name, age, tel, **score):
          print(score)
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值