再探函数----参数
1.函数是
2,函数参数有四种。分别是
1,普通参数(定长参数也叫位置参数)
2,不定长参数
3,关键字参数
4,不定长关键字参数
2-1,普通参数:普通参数也叫位置参数,每个位置相对应
先来看一个例子:我们想要实现三个数相加
如果我们要实现多次可能就需要:
如果这个时候你能够想到循环,说明对于基础还是有所掌握的,但是如果我们后面可能还会用到,而不是这一个地方,我们可以考虑函数来实现
我们需要用到几次,就调用函数几次就可以了,然而这其实并不是参数
真正的参数是括号里面的,看下面的一个例子
这个括号里的abc就是普通参数了
但是如果这个时候要计算4个数或者更多的数了,运行就会报错了
2-2,不定长参数:参数不知道有多少,任意个参数
先看一下
第一行,首先定义了一个calc_sum函数,后面的*args是语法格式
语法格式就是*加上不定长参数,这个args是我们前辈平时默认的写法,你可以随便命名比如*s *b ,但是还是建议写上args
第二行,打印出args的和,这个args你可以直接打印,你会发现是一个元组
第三行,我们调用这个函数,此时这个函数里面我们就可以随便写多少个参数了
其实我们最开始就接触到了不定长参数,我们最熟悉的print函数
可以看到第一个参数objects带了*号,为不定长参数——这也是为什么print()函数可以传递任意数量的参数。其余四个为默认参数,我们可以通过修改默认值来改变参数
2-3:关键字参数:
关键字参数与位置参数很很像,只是在调用函数的时候我们把位置改变了
结果其实是一样的
2-4:不定长关键字参数:
下面的代码看一看:
第一行我们定义了一个connect的函数,**kwargs代表一个不定长关键字参数,语法格式是**两个星号加参数名字,名字也是你随便起的
第二行,我们打印一个账号和后面一个叫user的参数
第三行,我们打印一个密码和一个叫passwd的参数
所有参数的命名都是自己起,尽量还是以前的一些规范
第四行我们给这些参数赋值
最后会得到:
3,参数的变量作用域:分为局部变量和全局变量,函数里面的变量往往只在那个函数里面有用,称为局部变量
程序中的变量并不是在哪个位置都可以被使用的,使用权限决定于这个变量是在哪里赋值的
来简单的看一看这个代码:
重点看第9行
两个变量rent是全局变量,而variable_cost则是上一个函数的变量
你一运行会发现报错
我们得知道:
一个在函数内部赋值的变量仅能在该函数内部使用(局部作用域),它们被称作【局部变量】,如cost()函数里的variable_cost。
在所有函数之外赋值的变量,可以在程序的任何位置使用(全局作用域),它们被称作【全局变量】,如第一行的rent
如果要解决这个问题,暂提供两种方法,
1,把局部变量直接变成全局变量
,2,global语句,
它可以将局部变量声明为全局变量,仔细看第四行代码。
我们只需要在函数下面加一个
其他所有的代码都不变,就可以实现了
global语句一般写在函数体的第一行,它会告诉Python,“我希望variable_cost是个全局变量,所以请不要用这个名字创建一个局部变量”。所以sum_cost()函数内部现在可以直接使用声明后的全局变量variable_cost。