金贝 TR-V6引闪器 影室灯引闪器 2.4G无线遥控触发器 USB接收器 摄影器材

配置参数

  • 适用机型:通用
  • 品牌:金贝
  • 类型:影棚类

查看完整参数>>

csdn上的牛人就是多,加油

下面我们将介绍几种函数的参数类型:
1.位置参数
我们首先定义一个求和的函数

 

 >>> def myfun(x,y):
 >>>     return x + y

——————————————————————————

2138com太阳集团,这里,x和y都是属于2138acom太阳集团官网,位置参数,我们按照位置顺序传入数值。一旦缺少参数,系统将会报错,这种必须传入的参数也叫必选参数

过量的参数

   >>> s = myfun(10)
   ---------------------------------------------------------------------------
   TypeError  Traceback (most recent call last)
   <ipython-input-18-135f1c06450c> in <module>()
   ----> 1 s = myfun(10)
   TypeError: sum() missing 1 required positional argument: 'y'

在运行时知道一个函数有什么参数,通常是不可能的。另一个情况是一个函数能操作很多对象。更有甚者,调用自身的函数变成一种api提供给可用的应用。

2.默认参数
现在如果我们把函数改为

对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数。这些“额外”的参数下一步再解释。

    >>> def myfun(x,y,z,h):
    >>>     return (x + y)*z

注意args和kwargs只是python的约定。任何函数参数,你可以自己喜欢的方式命名,但是最好和python标准的惯用法一致,以便你的代码,其他的程序员也能轻松读懂。

那么
之前调用的myfun就会报错,原因是之前只传了x和y,并没有传位置参数z,这个时候默认参数就派上用场了,看下面的例子
>>> def myfun(x,y,z = 1,h=0):
>>> return (x + y)*z + h
这样之前的调用结果并没有改变,之后再按照需要传入z值就可以了
1)好处
默认参数降低了函数调用的复杂度和同时增加函数调用灵活度,调用者可只关心需要关心的参数,也可以针对特殊的需要重置默认参数
2)注意点

位置参数

  • 必选参数在前,默认参数在后
  • 增加默认参数要考虑不要影响旧代码的调用结果,我们可以通过增加默认参数扩展我们的函数功能
  • 如果有多个默认参数,既可以按照顺序
    如myfun(10,20,3,8),也可以不按照顺序,当不按照顺序传入时需要把参数名称写上如
    myfun(10,20,h=8),此时 z没有传入值,默认为1
  • 牢记一点:默认参数必须指向不变对象

在参数名之前使用一个星号,就是让函数接受任意多的位置参数。

3、可变参数

>>> def multiply(*args):
… total = 1
… for arg in args:
… total *= arg
… return total

>>> multiply(2, 3)
6
>>> multiply(2, 3, 4, 5, 6)
720

1)定义
可变参数就是传入的参数个数
是可变的,可以是1个,2个甚至多个,也可以是0个
我们先来看个例子

python把参数收集到一个元组中,作为变量args。显式声明的参数之外如果没有位置参数,这个参数就作为一个空元组。

    >>> def myfun (number):
    >>>     sum = 0
    >>>     for i in number:
    >>>         sum = sum + i*i
    >>>      return sum

关键字参数

number 是一个list
或者tuple,那么我们调用的时候就需要组装成一个list或者tuple
>>> myfun([1,2,3])
>>> 14
2)用法
那么我们来看看如果换成是可变参数 会怎么样
>>> def myfun (number):
>>> sum = 0
>>> for i in number:
>>> sum = sum + i
i
>>> return sum

python在参数名之前使用2个星号来支持任意多的关键字参数。

我们可以看到,定义的方法 仅仅是增加了一个*****
号,我们调用的时候就可以这样
>>> myfun(1,3)
>>> 10
>>> myfun()
>>> 0
那么你可能会问,那如果我是个list或者tuple我还得转化成这种的传入吗?当然不用,我们可以这样做
>>> num = [1,3]
>>> myfun(*num)
*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见

相关文章

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图