• 函数基础


    函数的定义

      def+函数(参数):                                     # 定义了之后,可以在任何需要它的地方调用

    #函数定义 
    #def k():
    #     """计算s1的长度"""
    #     s1 = "hello world"
    #     n = 0
    #     for i in s1:
    #         n+=1
    #     print(n)#此时只是简单的打印,而没有将变量的值返回给函数k
    
    #函数调用 k()
    # k()                 #k()得到的结果是None
     

    函数的调用

    #函数定义
    
    # def k():
    #     """计算s1的长度"""
    #     s1 = "hello world"
    #     n = 0
    #     for i in s1:
    #         n+=1
    #     print(n)
    #     return n     #return将n的值返回给函数k
    
    #函数调用  
    k()

    返回值



    返回值的3种情况
        #(1)没有返回值 —— 返回None
            # 不写return
            # 只写return:结束一个函数的继续
            # return None -- 不常用
        #(2) 返回1个值
            # 可以返回任何数据类型
            # 只要返回就可以接收到
            # 如果在一个程序中有多个return,那么只执行第一个
        #(3)返回多个值
            # 用多个变量接收:有多少返回值就用多少变量接收
            # 用一个变量接收: 得到的是一个元组
    exp:(1)# def func():
      #     l = ['阿猫','阿狗']
      #     for i in l:
      #         print(i)
      #         if i=='阿猫':
      #             return     #此时return后面的语句都不执行被中断了
      #     print('='*10)
      # ret = func()
      # print(ret)
    2)若return改成return i,则k()可以正常接收到i返回的

    参数

     

    #没有参数
        #定义函数和调用函数时括号里都不写内容
    #有一个参数
        #传什么就是什么
    #有多个参数
        #位置参数
    
    # def my_len(s):  #自定义函数只需要0个参数,括号内's'为接收参数,形式参数,形参              #横线上面的是定义函数
    #     for i in s:                               #形式参数:在定义函数时用来接收的
    #         print(i)
    #     return i  #返回值
    ------------------------------------------------------------------------------------------------------------------
    # n = my_len('哈哈哈') #传递参数:传参,括号内'哈哈哈'为实际参数(实参)
    # n = my_len([1,2,3,4,5])                       #传递参数:在调用函数时传递的参数
    # print(n)                                                                          #横线下面的是调用函数
    #定义函数的时候:
    位置参数 : 直接定义参数
      默认参数,关键字参数 :参数名 = '默认的值'
      动态参数 : 可以接受任意多个参数
              参数名之前加*,习惯参数名args,    ,接收的是按照位置传参的值,组织成一个元组
              参数名之前加**,习惯参数名kwargs  ,接受的是按照关键字传参的值,组织成一个字典
       顺序:位置参数,*args,默认参数,**kwargs
    调用函数的时候
       按照位置传 : 直接写参数的值
       按照关键字: 关键字 = 值

    动态参数:
    # def sum(*args):
    #     n = 0
    #     for i in args:
    #         n+=i
    #     return n
    # #
    # print(sum(1,2))              #args由位置参数组成
    # print(sum(1,2,3))
    # print(sum(1,2,3,4))
    -----------------------------------------------------------------------
    # def func(**kwargs):
    #     print(kwargs)
    #
    # func(a = 1,b = 2,c =3)       #kwargs由关键词参数组成
    # func(a = 1,b = 2)
    # func(a = 1)
    
    #def func(*args,default = 1,**kwargs):
    #     print(args,kwargs)
    # func(1,2,3,4,5,default=2,a = 'aaaa',b = 'bbbb',)
    #结果显示   (1, 2, 3, 4, 5) {'a': 'aaaa', 'b': 'bbbb'}


    #动态参数的另一种传参方式
    # def func(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值。
    #     print(args)
    exp:
    # def func(*args):
    #     return (args)
    # print(func('1,2,3,4,5')
    
    func(*l)  #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散
    
    (1)# def func(l):
    #     return (l)
    # l = [3]
    # print(func(*l))
    
    结果显示:3
    
    (2)# def func(*l):     如果在变量加上*  则可以将打散的序列则合成元祖。
    #     return (l)
    # l = [1,2,3,4,5]
    # print(func(*l))
    结果显示:(1, 2, 3, 4, 5)

     函数的注释

    # def func():
    #     '''
    #     这个函数实现了什么功能
    #     参数1:
    #     参数2:
    #     :return: 是字符串或者列表的长度
    #     '''

    默认参数的陷阱:
    
    
    def qqxing(l = []):    列表是可变数据类型
    #     l.append(1)
    #     print(l)
    # qqxing()     #[1]
    # qqxing()     #[1,1]
    # qqxing()     #[1,1,1]
    
    # 如果默认参数的值是一个可变数据类型,那么每一次调用函数的时候,如果不传值就共用这个数据类型的资源。

     

  • 相关阅读:
    Embeded Linux 之 PHY
    Embeded Linux之网络子系统
    语言之内联函数
    Embeded Linux之海思UART
    Windows 之samba问题
    Embeded linux 之 CIFS 文件操作源码分析
    zookeeper 都有哪些使用场景?
    如何保证分布式系统中接口调用的顺序性?
    分布式系统中接口的幂等性该如何保证?比如不能重复扣款?
    Redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗?
  • 原文地址:https://www.cnblogs.com/liusouthern/p/8118669.html
Copyright © 2020-2023  润新知