• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python中函数参数的详细介绍(附实例)

python 搞代码 4年前 (2022-01-09) 21次浏览 已收录 0个评论

本篇文章给大家带来的内容是关于Python中函数参数的详细介绍(附实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Python的函数定义比较简单,借助于关键字def进行实现,但是参数的灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数、关键字参数、命名关键字参数以及参数组合,这使得函数定义出来的接口,不仅能处理复杂的参数,还能简化调用者的代码

一、位置参数

在函数定义的时候,指定参数的位置顺序。位置参数必须在被调用函数定义中的准确顺序来进行传递。

例如:计算x的n次方

def powern(x,n):    s = 1    while n >0:        s = s * x        n = n -1    return s

x

本文来源gao!%daima.com搞$代*!码$网3

与n这两个参数都是位置参数。调用函数时,必须传入且传入的两个值按照位置顺序依次赋给参数x和n,若缺省,则会报错。例如:

>>> powern(5)Traceback (most recent call last):File "<stdin>", line 1, in <module>TypeError: powern() missing 1 required positional argument: 'n'

二、默认参数

在函数定义中,为参数预先定义默认值。当在函数调用时,若没有为参数提供指定值,则使用默认值。
例如:仍旧是求x的n次方,但是默认为x的3次方。

def powern( x,n = 3):    s = 1    while n >0:        s = s * x        n = n -1    return s

执行:powern(2),相当于调用powern(2,3)
如果要求2的四次方,则需要执行:powern(2,4)

设置默认参数的好处?
默认参数可以简化函数的调用,降低调用函数的难度。无论是简单调用还是复杂调用,函数只需定义一个。
例如上述powern()的例子,当传入n的其他值时,则可以实现x的其他n次方。

但是在使用默认参数的时候,如果使用不当,也会有坑。先来了解一下可变参数和不可变参数作为函数参数时的不同:

不可变参数作为函数参数

>>> a = 1>>> def func(a):...     print('func_id:',id(a))...     a = 2...     print('after_func_id:',id(a),'id(2):',id(2))...>>> print('out_of_func_id:',id(a),'id(1):',id(1))out_of_func_id: 501962480  id(1): 501962480   # 全局变量a的id>>> func(a)            # 将全局参数a传入函数func_id: 501962480    # a=1 的idafter_func_id: 501962496  id(2): 501962496  >>> print(a)            # 退出函数,a的值仍为11

当把全局a传递给函数后,函数自动复制一份引用。执行完a=2之后,id(a)的内存地址发生变化。但是跟外层的a没有关系。

可变对象作为函数参数

>>> a = []>>> def func2(a):...     print('func2_id:',id(a))...     a.append(1)...>>> print('out_of_func2_id',id(a))out_of_func2_id 59694296>>> func2(a)func2_id: 59694296>>> print(a)[1]

变量a的类型为list,是可变对象。函数的引用指向的是可变对象,地址没有发生变化,所以函数操作后,a的内容发生了改变。
所以当再次操作func2(a)函数时,产生跟预期不一样的结果:

>>> func2(a)func2_id: 59694296    # a地址不变>>> print(a)[1, 1]        # 因为第一次执行func2(a)时,已经修改了a=[1],再次调用时,在[1]里新增

例如:

def add_end( L=[] ):  # 设置为一个list变量L(对象可变)    L.append('end')    return L>>> add_end( )['end']>>> add_end()  ['end', 'end']

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python中函数参数的详细介绍(附实例)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址