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
原文地址:https://www.cnblogs.com/crdhm12040605/p/15130340.html