Loading... ## 函数定义与执行发生过程? (***) > *与定义变量一样* > 其实,就是个装代码的容器变量 > > 1. 申请内存空间,把函数体代码放进去 > 2. 将函数内存地址绑定给函数名 > 3. 打印函数名,那么得到的是该函数内存地址   > *定义函数只检测语法,不执行代码* > *调用函数时,执行代码* > >  > > ex1.语法错,定义阶段都执行不下去 > >  > > ex2.要是把foo()放到中间呢? > ::盲点:: 执行foo()时,前面的定义部分已经被执行加载到内存了,所以在执行foo后,去foo()里找到bar(),bar地址已经存在了的 > >  > > ::重点::总结:代码从上到下加载,会顺序加载def 函数名() 并创建内存空间,但是不执行;等调用函数时会执行,这时所用到的其他函数必须是已经被加载过得了,不然会报错; -> foo()放中间会报错,找不到bar ## 函数参数 仅对 注意点 进行补充 1. 关键字形参 -> 不建议设置为可变类型 ::盲点:: 如果关键字形参定义成可变类型,那么每次调用函数这个可变类型的变量值都是update的,并不是recreate的.  * 出现问题:  * 不完美解决办法: 这样限制了调用者不能传进来自带的参数  * 完美解决办法:  2. 考察你是否理解默认形参的例子: 答案自己验证!!!1  *总结:默认形参的值在定义阶段就已经赋值了* ### * 与 ** 在形参中的应用::重要::  * 位置*  * 然后赋值给紧跟其后的形参名 y  * 应用:  * 关键字**  ### * 与 ** 在实参中的应用  ::盲点::  举例:  ::记住这个格式,精妙之处::  命名关键字形参:  © 允许规范转载