zoukankan      html  css  js  c++  java
  • 默认形参和关键字实参,收集参数,命名关键字参数,return自定义返回,全局变量和局部变量,函数名的使用---day10

    1.函数定义处(默认形参在函数的定义)

    1.1.函数的调用处(关键字实参在函数的调用处)

    2.收集参数

    (1)收集参数:
        (1) 普通收集参数
        在参数的前面加一个*,代表的是普通收集参数
        作用:收集多余的没人要的普通实参,构成一个元组
    
    (2)关键字收集参数
    在参数的前面加上两个*,代表的是关键字收集参数
    作用:收集多余的没人要的关键字实参,构成一个字典
    

      

    3.命名关键字参数

    命名关键字参数
    def func(参数1,参数2,*,参数3):
        (1) 在 * 号后面定义的参数是命名关键字参数
    def func(*args,参数,**kwargs):
        (2) 在普通收集和关键字收集参数之间的,是命名关键字参数
    如果是命名关键字参数,必须使用关键字实参的形式调用
    
    
    #(1) 定义方式一
    def func(a,b,*,c):
        print(a,b)
        print(c)
    #函数的调用处
    
    #(2)定义方式二
    def func(*args,dd,**kwargs):
        print(args)
        print(kwargs)
        print(dd)
    

      

    3.1 关于 * 和 ** 的使用方法

    在函数的定义处,* 和 **用来接收数据,*打包成一个元组,**打开成一个字典
    在函数的调用处,*和**用来解包结束,*一般应用在列表或元组,**一般用在字典
    
    # * 一个星条用处的用法
    def func(a,b,*,c,d):
        print(a,b)  #1,2
        print(c,d)  #3,4
    #函数的调用处
    func(1,2,c=4,d=4)
    lst[1,2]
    # *lst =>把列表里面的每一个元素都打散拿出来,当成参数赋值给func进行调用
    func(*lst,c=3,d=4)
    
    
    # **两个星调用处的语法
    func(1,2,c=3,d=4)
    # **dic <==> 把字典里面的键值对拿出来,转换成关键字实参的形式,当成参数赋值给func进行调用
    dic = {'c':3,'d':4}
    func(1,2,**dic)  #c=3,d=4
    
    
    #定义处的*号用法 和 调用处的*号用法,是一对相反操作
    一个用来打包,一个用来解包
    优点:控制了参数的个数
    

      

    参数的顺序
    形参顺序:
    普通形参-->默认形参-->普通收集参数-->命名关键字参数-->关键字收集参数
    
    #收集所有实参
    def func(*args,**kwargs):
        pass
    

      

    4.return自定义返回值

    return 自定义返回值
    函数可以自定义返回值,通过return,return会把这个值返回到函数的调用处
    (1) return + 返回值 后面出了可以接6大标准数据类型之外,还可以返回函数和类对象
        如果没有定义任何返回值,默认返回的是None
    (2)在函数中,如果只选了return,一位这立刻终止函数,后面的代码统统不执行
    
    (1) return + 可返回的类型
    (2) return之后意味着立刻终止函数,后面的代码不执行
    

      

    5.全局变量和局部变量

    局部变量:在函数内部定义的变量就是局部变量(局部命名空间)
    全局变量:在函数外面定义的变量,或者在函数内部用global关键字定义是全局变量(全局命名空间)
    作用域:作用的范围
        局部变量的作用的范围仅仅限定在函数的内部
        全局变量的作用的范围横跨整个文件
    生命周期:
        内置命名空间> 全局命名空间>局部命名空间
        内置变量 > 全局变量 > 局部变量
    
    #(1) 局部变量
    def func():
        #定义一个局部变量
        a =1
        #获取局部变量
        print(a)
        #修改局部变量
        a = 20
        print(a)
    func()
    print(a)  error   局部外无法获取局部内变量的值
    
    
    (2) 全局变量
    1.定义全局变量
    c =100
    2.获取全局变量
    print(c)
    3.修改全局变量
    c =200
    print(c)
    
    (3) 在函数内部定义全局变量global
    def func():
         #标记d这个变量是一个全局变量
        global d
        d = 400
        print(d)  #400
    func()
    print(d)  #400  因为在局部内声明了一个全局变量,所以在局部外也能用
    
    (4)  在函数内部可以修改全局变量
    e =500
    def func():
        global e   #声明e为全局变量
        e = 600  #修改全局变量
        print(e)  #600
    func()
    print(e)  #600
    

      

    5.1global 全局变量的作用域:

    如果函数外部有这个全局变量,在函数内部使用global关键字,可以修改全局变量
    如果函数外部没有这个全局变量,在函数内部使用global关键字,可以定义全局变量
    
    在函数内部可以直接获取全局变量
    但是无法直接修改全局变量,需要通过global
    
    f = 101
    def func():
        f = 102
        print(f)  #102  用局部自己的
    func()
    print(f)  #101
    
    f = 101
    def func():
        print(f)  #101  函数内部可以直接获取全局变量
    func()
    print(f)  #101
    

      

    6.函数名的使用

    函数名的使用
    python中的函数可以像变量一样,动态创建,销毁,当参数传递,作为返回值,也叫作第一类对象,其他语言不能比拟功能有限
    1.函数名是个特殊的变量,可以当做变量赋值
    
    def func1():
        print('我是func1')
        return 111
    res = func1()
    print(res)
    
    #动态创建函数
    print(func1)
    func = func1
    func()
    
    #动态撤销函数
    del  func()
    func()
    

      

    6.2函数名可以作为容器类型数据的元素
    def func2():
        print('我是func2')
    def func3():
        print('我是func3')
    def func4():
        print('我是func4')
        return 'func'
    lst = [func2,func3,func4]
    for i in lst:
        i()
    

      

    3.函数名可以作为函数的参数
    def myfunc(f):
        res = f()
        print(res)
    
    #f <==> func4 <==> res <==> func4()  print(res)
    myfunc(func4)
    

      

    #4.函数名可作为函数的返回值
    def myfunc2(f):
        return f
        
    f2 = myfunc2(func4)
    print(f2)
    f2()
    

      

    #__doc__  或者help查看文档
    # 模拟一个吃猪大肠的过程
    def eat_big_chang(something):
        '''
        功能:模拟一个吃猪大肠的过程
        参数:吃什么?
        返回:吃没吃完?
        '''
        print("step1=>先把{}洗一洗".format(something))
    	print("step2=>找肠子头放嘴里")
    	print("step3=>使劲嘬")
    	print("step4=>吃完了,满意的放下肠子")
    	return "真好吃~"
    res =eat_big_chang('大肠')
    print(res)
    
    #函数.__doc__  =>>获取函数的帮助文档
    print(eat_big_chang.__doc__)
    

      

    总结:

    今天讲了默认形参和关键字实参,收集参数,命名关键字参数,return自定义返回值,全局变量和局部变量一级函数名的使用。

    默认形参在函数的定义,定义处参数相当于k=v的形式,关键字在函数的调用处k=v的形式。

    收集参数:

    (1)普通收集参数:在参数的前面加上一个*,代表的是普通收集参数。作用是收集多余的没人要的普通实参,构成一个元组

    (2)关键字收集参数:在参数的前面加上两个*,代表的是关键字收集参数,作用是收集多余的没人要的关键字实参,构成一个字典

    命名关键字参数:

    (1)在*号后面定义的参数是命名关键字参数

    (2)在普通收集和关键字收集参数之间的,是命名关键字参数

    调用:必须使用关键字实参的形式调用

    * 和 **的使用方法:

    在函数的定义处,*和**用来接收数据,*打包成一个元组,**打包成一个字典

    在函数的调用处,*和**用来解包数据,*一般应用在列表或元组,**一般用在字典

    参数的顺序

    形参声明的位置顺序:

    普通形参->默认形参->普通收集参数->命名关键字形参->关键字收集参数

    return 自定义返回值

    函数可以自定义返回值,通过return,return会把这个值返回到函数的调用处。

    return后面可以跟6大数据类型同时还可以返回函数和类对象,如果没有当以返回值,默认返回的是None

    return也可以终止函数

    全局变量和局部变量:

    局部变量:在函数内部定义的变量就是局部变量(局部命名空间)

    全局变量:在函数外面定义的变量,或者在函数内部用global关键字定义的全局变量(全局命名空间)

    作用范围:

    局部变量的作用范围仅仅是限定在函数的内部

    全局变量的作用范围横跨整个文件

    生命周期的:

    内置命名空间 > 全局命名空间 >局部命名空间

    内置变量 >全局变量 >局部变量

    1.当在局部内定义一个变量,在局部外是无法获取局部内的变量的值

    2.在局部在定义一个变量,局部内没有定义变量时,可以获取局部外的变量

    3.在函数内部定义全局变量global,在局部外可以获取局部内的变量

    4.在局部外定义一个变量,然后再局部内声明这个变量为全局变量global,然后在局部内修改这个全局变量,外部调用这个变量是修改后的变量。

    函数名的使用:可以当做变量赋值,动态创建函数,动态销毁函数,函数名可以作为容器类型数据的元素,for循环遍历然后得到的变量名+()就直接可以调用函数。同时函数名也可以作为函数的参数传参,也可以作为函数的返回值。

    最后讲了一个查看函数帮助文档的用法 ------->  函数名.__doc__

  • 相关阅读:
    网络编程__【TCP传输】(重点)【Socket & ServerSocket】
    网络编程__【概述】【UDP传输】【DatagramSocket & DatagramPacket】
    How an Undocumented Immigrant From Mexico Became a Star at Goldman Sachs
    Xml Deserialize
    SQL Server 数据类型映射 (ADO.NET)
    Js基本数据类型常用方法扩展
    Sublime Text 2
    .net 开发人员的瓶颈和职业发展
    一次HTTP请求中的缓存
    中国剩余定理——POJ-1006
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/12879524.html
Copyright © 2011-2022 走看看