• python基础--解包、renturn、全局变量


    1.打包

    * 的作用:在函数定义中,收集所有的位置参数到一个新的元组,并将这个元组赋值给变量args

    def f(*args):
       print(args)
    
    if __name__ == '__main__':
        f(1,2,33)
    
    #运行结果为:(1, 2, 33)

    ** 的作用:在函数定义中,收集关键字参数传递给一个字典,并将这个字典赋值给变量kwargs

    def f(**kwargs):
        print(kwargs)
    
    if __name__ == '__main__':
        f()
    
    #运行结果为:{}
    
    if __name__ == '__main__':
         f(a=1,b=2,c=3)
    #运行结果为:{'a': 1, 'b': 2, 'c': 3}

    2.解包

    * 的作用:在函数调用中,* 能够将元组或者列表解包成不同的参数

    def func(a, b, c, d):
        print(a, b, c, d)
    
    if __name__ == '__main__':
        args = (1, 2, 3, 4)
        func(*args)
    #运行结果为:1 2 3 4
    
        args = [1, 2, 3, 4]
        func(*args)
    #运行结果为:1 2 3 4   

    ** 的作用:在函数调用中,**会以键/值的形式解包一个字典,使其成为独立的关键字参数

    def func(a, b, c, d):
        print(a, b, c, d)
    
    if __name__ == '__main__':
        kwargs = {"a": 1, "b": 2, "c": 3, "d": 4}
        func(**kwargs)
    
    #运行结果为:1 2 3 4

    3.return的作用

    调用函数之后,要拿到一个返回值,进行后续的一个操作

    如果函数没有返回值,默认就是None

    当执行函数时,遇到return,会终止函数的调用

    #无return的情况:

    def fun():
        print("执行打印动作")
    
    if __name__ == '__main__':
        res = fun()
        print(type(res))
        print(res==None)
    #运行的结果为:
    执行打印动作
    <class 'NoneType'>
    True

    #有return的情况:

    def fun():
        print("我执行了fun")
        return 'ok'#执行到该return语句时,函数终止,后边的语句不再执行
        print("我执行了fun")
    
    if __name__ == '__main__':
        fun()   #函数调用
        print(fun())  #输出函数调用
    
    #运行的结果为:我执行了fun
    #运行的结果为:
    我执行了fun
    ok

    4.变量--全局变量&&局部变量

    • 全局变量:定义在函数外的变量称之为全局变量,他的作用域范围为全局
    • 局部变量:定义在函数内部的变量称为局部变量,他的作用域范围为函数内,也就是出了函数外就无效
    a = 6
    
    def fuc():
        a = a * 5
        print(a)
    
    fuc()
    
    #执行结果
    Traceback (most recent call last):
      File "F:/workspace/python基础/认识python/lession9.py", line 15, in <module>
        fuc()
      File "F:/workspace/python基础/认识python/lession9.py", line 12, in fuc
        a = a * 5
    UnboundLocalError: local variable 'a' referenced before assignment
    
    Process finished with exit code 1

          在python的函数中等于号左边表示定义了一个局部变量,待赋值,而上面的例子中就相当于你定义了一个局部变量a,但还没赋值就拿来进行运算,自然就会报错。所以,全局变量中在函数中使用的时候也要注意下避免出现这样的情况,你要拿来运算的时候完全可以再定义另外一个变量如b = a*3 这样就没问题了

    a = 6
    
    def fuc():
        b = a * 5
        print(b)
    
    fuc()
    #运行结果为:30
    
    ##############声明一个全局变量################
    
    a = 6
    
    def fuc():
        global a
        a = a * 5
        print(a)
    
    fuc()
    #运行结果为:30
  • 相关阅读:
    django错误参考
    Pyhton模块学习
    jmeter
    SQL SERVER 2008
    touch的属性
    Sql Server Alter语句
    安装LoadRunner提示缺少vc2005_sp1_with_atl..
    sql语句
    数据库的知识
    十天学会<div+css>横向导航菜单和纵向导航菜单
  • 原文地址:https://www.cnblogs.com/crdhm12040605/p/15130340.html
Copyright © 2020-2023  润新知