Python中的函数

函数

目的:为了提高编写的效率以及代码的重用

函数的创建和调用

  • 创建:

    1. 用def来定义一个函数
    2. 可以有return 值 也可以没有
  • 调用:直接使用函数名

  • 示例:

    def max_num(x: float, y: float) -> float:
        """
        求两个数的最大值
        :param x: 传入的第一个数值
        :param y: 传入的第二个数值
        :return: 两个数的最大值
        """
        z = x if x > y else y
        return z
    
    
    print(max_num(1.2, 2.3))
    print(help(max_num))

    测试:
    在这里插入图片描述

注:对于一个自己使用的函数模块可以不需要写help

函数中的全局变量和局部变量

全局变量和局部变量

  • 全局变量: 函数外面声明的变量

  • 局部变量: 函数里面声明的变量

  • 如果要在函数内部修改全局变量,分为2种情况:

    1. 不可变数据类型(): 必须先global声明为全局变量,才能继续修改
    2. 可变数据类型(list,set, dict): 直接修改
  • 示例:
    代码:

    a = 5
    li = ['name', 'westos', 'age']
    
    
    def fun():
        li.append('result')
        print('修改后的列表', li)
        global a
        a = 10
        print('修改后的a=', a)
    
    
    fun()

    测试:
    在这里插入图片描述

形参和实参

形参: 定义函数时的参数, 可以任意命名的
实参: 调用函数时的参数

  • 形参的分类
    1. 必选参数: 必须要传递的参数
    2. 默认参数: 可以传递也可以不传递的值,如果不传递使用默认值
    3. 可变参数: 可以接受1个,2个…任意值得参数, *args, args存储的数据类型是元组
    4. 关键字参数:传入多个key-value, **kwargs接收,用字典存储的
      # 1. 必选参数
      def max_num(x, y):          # x,y是形参
          return x if x > y else y
      
      result = max_num(10, 20)    # 10, 20是实参
      print(result)
      # 2. 默认参数:
      def square(x, y=2):  # 接收2个参数,x和y, 如果只传递一个值,那么y使用默认值。
          return x ** y
      result = square(10, 3)
      print(result)
      
      # 3. 可变参数*args, args存储的数据类型是元组
      def sum_num(*args):
          """求传入的所有值的和, 有可能是2,3,4,5.。。100个数值"""
          # print("args:", args)
          return  sum(args)
      result1 = sum_num(1, 2, 3)
      result2 = sum_num(1, 2, 3, 4, 5)
      print(result1, result2)
      
      # 4. 关键字参数: 传入多个key-value, **kwargs接收,用字典存储的
      def info(name, country='china', **kwargs):
          """录入学生信息, 姓名必须填, 国家默认是中国, 其他得特点/特长/爱好可以自行填写"""
          print(name)
          print(country)
          print(kwargs)
      
      info(name="westos", CET6=True, RHCE=True, hobbies=['coding', 'Linux','Python'])
      测试:
      在这里插入图片描述

匿名函数(lambda)

格式 :lambda 函数传入的参数:函数的返回值

  • 常用示例:
print(list(map(lambda x: x ** 2, [1, 2, 3, 4, 5, 6, 7])))

测试:在这里插入图片描述

递归函数

示例:

  • 需求: 用Python实现数的阶乘

  • 代码:

    def fact(n):
        if n == 1:
            return 1
        return n * fact(n - 1) 
    
    result = fact(3)
    print(result)
  • 测试在这里插入图片描述

函数实例:

  1. 冒泡排序法
    代码:

    def mao_pao(li):
        for i in range(len(li)-1):
            for j in range(len(li)-i-1):
                if li[j+1] < li[j]:
                    larger = li[j]
                    li[j] = li[j+1]
                    li[j+1] = larger
        return li
    
    
    list_num = [random.randint(1, 100) for i in range(10)]
    print(list_num)
    print(mao_pao(list_num)[::-1])

    测试:在这里插入图片描述

  2. 快速排序法
    代码:

    import random
    
    
    def ks(li):
        if len(li) >= 2:
            key = li[0]
            left = []
            right = []
            li.remove(key)
            for i in li:
                if i < key:
                    left.append(i)
                else:
                    right.append(i)
            return ks(left) + [key] + ks(right)
        else:
            return li
    
    
    num = [random.randint(1, 1000) for i in range(10)]
    print(num)
    print(ks(num)[::-1])

    测试:在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值