其他分享
首页 > 其他分享> > 今日总结03

今日总结03

作者:互联网

  今天学习了函数的参数,参数分为形参与实参。所谓形参就是在函数定义时传入的函数名,而实参则是在调用时传入的值,但并不仅仅只有明确的值而是只要最后的结果是值都行,可以是调用函数,变量名当然也可以是具体的值。形参分为位置形参与默认形参,位置参数顾名思义就是按照顺序依次进行定义的变量名,而且必须被传值一个不能多一个也不能少;默认参数就是在函数定义时将定义的变量名进行赋值,再传值时可传可不传,如果传就是自己传的,如果不传那就是已经默认的值,虽然默认值可以是任意类型,但不推荐使用可变的是数据类型。因为调用函数想要得到的应该是可以预料的值,而不是在函数外对可变类型进行操作导致的该类型进行的改变。默认形参表示的是函数名绑定的时某个值的内存地址,若是可变类型就会产生上述问题。;然后是位置形参与默认形参之间的混用,要注意位置形参必须在默认形参之前。

  接着是实参,又分为位置实参与关键字实参,位置实参是在调用函数时传入的值,必须是按照顺序一次进行传,必须一个不多一个不少并且按照顺序与形参一一对应;关键字实参不强调顺序但必须要带上形参中的变量名;在两种混合使用时必须把位置实参放在关键字实参,并且不能重复赋值。

  接着是不确定数量的参数,不确定数量说明在调用时传入参数的数量长短不一,而传入的实参要对应着函数里的形参来进行接收。该参数分为位置参数与关键字参数,对于位置参数分为三种情况,第一当是位置形参时,*+变量名表示接受接受溢出的形参,并将溢出的实参存为元组赋值给变量名;第二则是当成位置实参,*+任意可以通过for循环得到的数据类型,表示将其打散分别赋值给形参;第三则是两种混合使用,既有位置形参又有位置实参,使用方法与单独使用是一致的。

  接着是不确定数量的参数中的关键字参数,第一当成是关键字形参**+变量名,可以将溢出的关键字实参转换成字典类型,分别存储key和value;第二种则是当成为关键字实参,**+字典类型,在传入到形参中也是要打散成key = value这种格式,然后传入到形参当中;第三则是关键字形参与实参的混合使用,同样与单独使用上述一致。

1 def real(x,y,z):   
2     print(x,y,z)
3 
4 def func(*args,**args): #args=(1,) kwargs={'z':3,'y':2}
5     real(*args,**args)

  #index(*(1,),**{'z':3,'y':2})
  # index(1,z=3,y=2)

7 func(1,z=3,y=2)

  还有一些需要了解的参数知识。

  接着学习了名称空间与作用域,我们知道变量名是存在栈区的,而所谓名称空间就是将栈区进行分区,分为全局范围与局部范围,而全局范围又包括内置名称空间和全局名称空间,两个空间都是有且只有一块空间,内置名称空间就是系统内部存的变量,比如print,input等内置的函数名,在python解释器启动时就已经创建在python解释器关闭则销毁;全局名称空间存放的则是除函数内置的变量与内置的函数名其它都存放在全局空间,python文件执行时(python运行的第三阶段)产生,python文件运行结束后销毁;局部范围包括局部名称空间,它可以有n个空间,存的是函数内定义的变量,在函数调用时产生在函数调用结束后进行销毁。有了名称空间后每个空间可以设置相同的变量名,在查找变量名时是在当前所在位置向上一层一层地查找,直到查找到想要的变量名。具体的查找要具体分析。

  最后是作用域,也就是作用范围。分为全局作用域(内置名称空间、全局名称空间)和局部作用域(局部名称空间),全局作用域全局存活,且全局有效,被所有函数共享;局部作用域则是临时存活且局部有效,只在函数内共享。

over!!                                                                                14:55

                                                                                  2022/7/20

 

标签:总结,03,函数,形参,参数,空间,今日,实参,变量名
来源: https://www.cnblogs.com/hahakken/p/16498029.html