整理------函数

函数参数顺序

位置参数 > *args > 默认值参数 > **kwargs
 
动态参数的另⼀种传参⽅式  :  在实参位置上给⼀个序列,列表,可迭代对象前⾯加个*表⽰把这个序列按顺序打散
l = [11,22,33,44]
s = "臣妾做不到"
def fun(*args):
    print(args)     
fun(*l)       #fun打印结果为:      (11, 22, 33, 44)
fun(*s)       #fun打印结果为:     ('臣', '妾', '做', '不', '到')
在形参的位置上的* 表⽰把接收到的参数组合成⼀个元组
如果是⼀个字典, 那么也可以打散. 不过需要⽤两个*
def fun(**kwargs):
    print(kwargs)
dic = {'a':1, 'b':2}
fun(**dic)      #   {'a': 1, 'b': 2}
函数的注释:
def chi(food, drink):
"""
这⾥是函数的注释, 先写⼀下当前这个函数是⼲什么的, ⽐如我这个函数就是⼀个吃
:param :param food: 参数food是什么意思
:param :param drink: 参数drink是什么意思
:return :return: 返回的是什么东东
 """
print(food, drink)
return "very good"
命名空间
在python解释器开始执⾏之后, 就会在内存中开辟⼀个空间, 每当遇到⼀个变量的时候, 就把变量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内存, 表⽰这个函数存在了, ⾄于函数内部的变量和逻辑, 解释器是不关⼼的. 也就是说⼀开始
的时候函数只是加载进来, 仅此⽽已, 只有当函数被调⽤和访问的时候, 解释器才会根据函数内部声明的变量来进⾏开辟变量的内部空间. 随着函数执⾏完毕, 这些函数内部变量占⽤的空间也会随着函数执⾏完毕⽽被清空
命名空间分类:
1. 全局命名空间--> 我们直接在py⽂件中, 函数外声明的变量都属于全局命名空间
2. 局部命名空间--> 在函数中声明的变量会放在局部命名空间
3. 内置命名空间--> 存放python解释器为我们提供的名字, list, tuple, str, int这些都是内置命名空间
加载顺序:
1. 内置命名空间
2. 全局命名空间
3. 局部命名空间(函数被执⾏的时候)
取值顺序:
1. 局部命名空间
2. 全局命名空间
3. 内置命名空间
我们可以通过globals()函数来查看全局作⽤域中的内容, 也可以通过locals()来查看局部作
⽤域中的变量和函数信息
print(globals())    #{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00466590>, '__spec__': None, 
            '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/ZYP/PycharmProjects/python_ui/test_tools/test.py', '__cached__': None}
def func(): a = 10 print(locals()) #{'a': 10} func()
对于可变数据类型可以直接进⾏访问. 但是不能改地址. 说⽩了. 不能赋值
l = [11,22,33,44]
def fun():
    l.append(55)
    print(l)    #      [11, 22, 33, 44, 55]
fun()
print(l)         #      [11, 22, 33, 44, 55]

猜你喜欢

转载自www.cnblogs.com/Aline2/p/11262557.html