码迷,mamicode.com
首页 > 其他好文 > 详细

再探函数----参数

时间:2020-07-13 13:18:13      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:通过   赋值   strong   print   ble   war   多少   markdown   账号   

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。

 

 

 

 

 

   

 

再探函数----参数

标签:通过   赋值   strong   print   ble   war   多少   markdown   账号   

原文地址:https://www.cnblogs.com/jun-001/p/13284356.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!