python一直放弃到双数的day10
今天接着来说那个新的大知识点,函数,函数中是可以传递一个数值的,这个数值简称为参数,对于参数,他可以是任意个数和任意类型(数据类型)。参数的其中一种有位置传参,函数中的参数有几个,那么就要传入几个,传入的参数简称形参,还有一个是关键字参数,比如在传入是指定是哪个参数传入,a1 = 9·······关键字参数和位置参数可以混合使用,但位置参数一定要在前面,关键字参数在后面,两个参数个数之和等于形参,还有默认参数,在函数的参数中,其中有参数已经指定了一个数值,那么当你没有传入形参时,自动用这个默认参数代入函数中,当有形参传入,则使用形参。还有一个叫做万能参数用*args表示,代表可以接受n个参数传入,传出则为元祖,如果输入为func(*(11,22,33)),则输出为(11,22,33),其余都添加到元组中,这个主要用于不知道需要传入的参数有多少的时候,但是这个不支持关键字传参,只支持位置传参,位置传参有万能的,关键字传参当然也有万能的,在函数中,func(**kwargs)就表示所有的关键字传参,这个传参会形成一个字典存在函数中,当一个字典带着**传入期中时,输出还是为自己本来的字典比如func(**{‘k1’:1}),当然这个万能参数也是只能传关键字参数,所以,后面就有一个可以结合起来用的def func(*args,**kwargs),这个组合堪称无敌,既可以接受任意参数的数量,又可以传入位置参数和关键字参数。普遍用的也就是这个了。之后还有一个函数的作用域和函数的嵌套,作用于就好比整个函数在一个楼道中,从头开始慢慢往下走其中函数就是一个个的门,全部都要遵循从上到下的原则,一个函数相当于一个作用域,作用域和作用域之间互不干扰,在作用域中寻找一个参数如果没有,就去上一级找,找到全局作用域的时候再没有就报错,当然在一个函数中,是可以嵌套一个函数的,自己优先在自己这里找,然后去上级找,但是上级不能进函数的作用域中找,当然函数作用域中也是有一些可以修改上级甚至全局作用域的权限,比如global xxx xxx = xx,就可以修改全局作用域中的参数了,但是对自己的上级是不做任何操作的,既然全局的都可以改,当然能改上级的,nonlocal就是只改上级的。感觉小作用域比大作用域的权限还高。学习作用域可以让你在看代码的时候分清楚究竟是哪一步先开始到哪一步结束。方便自己阅读代码。
