2-2-00 函数-总结
-
函数参数传递的是内存地址。
-
想重新创建一份数据再传递给参数,可以手动拷贝一份。
-
特殊:参数是动态参数时,通过*或**传参时,会将数据循环添加到参数中(类似于拷贝一份)
def fun(*args, **kwargs): print(args, kwargs) fun(*[11, 22, 33], **{"k1": 1, "k2": 2})
-
-
函数的返回值也是内存地址。(函数执行完毕后,其内部的所有变量都会被销毁,引用计数器为0时,数据也销毁)
def func(): name = [11,22,33] data = name func() def func(): name = [11,22,33] return name data = func() while True: print(data)
3. 当函数的参数有默认值 & 默认值是可变类型 & 函数内部会修改内部元素(有坑)
```python
# 内部会维护一个列表 [],只要b不传值则始终使用都是这个列表。
def func(a,b=[]):
b.append(a)
-
定义函数写形式参数时可以使用
*
和**
,执行函数时也可以使用。 -
函数名其实也是个变量,他也可以做列表、字典、集合等元素(可哈希)
-
函数名可以被重新赋值,也可以做另外一个函数的参数和返回值。
-
掌握 print 和 return的区别,学会分析代码的执行流程。
-
python是以函数为作用域。
-
在局部作用域中寻找某数据时,优先用自己的,自己没有就在上级作用域中寻找。
-
基于 global关键字可以在局部作用域中实现对全局作用域中的变量(全局变量)重新赋值。