更多课程 选择中心


Python培训

400-996-5531

Python入门——函数参数篇

  • 发布:梦想家小可
  • 来源: 议梦馆
  • 时间:2017-12-12 16:00

Python函数中,参数总共有5种,分别为:

位置参数

默认参数

可变参数

关键字参数

命名关键字参数

1、位置参数

这是最直观的参数,就拿print()函数来说:

print (x)

括号里的 x 就是位置参数。在所有内置函数(BIF)中,无论是字符串还是数字,只要被用在函数中,都是作为位置参数来使用的。

2、默认参数

有些时候函数中的参数值会非常多,举个例子:

def power (x,n):

s = 1

if n > 0:

n = n-1

s = s * x

return s

这样我们就定义了一个power函数,用来求x的n次方。我们每次输入的时候,两个参数都必须同时填入,否则代码解释器就会报错:

>>> power(5)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: power() missing 1 required positional argument: 'n'

假如我们操作工作中用得最多的是求x的2次方呢?每次都输入2,手也很累啊。所以,我们可以告诉解释器,这个函数,默认求2次方:

def power (x,n = 2):

s = 1

if n > 0:

n = n - 1

s = s * x

return s

可以看到,我们在函数定义过程中,直接使参数n等于2,也就是默认power函数求2次方了。但是这样并不会导致这个函数从此只能求2次方。默认参数只是在求2次方的过程中简便了输入,想要求n次方,只需要按照原来的power(x,n)格式输入就可以了。

然而默认参数有时候也并不是很好用:

def add_end(L=[]):

L.append('END')

return L

当我们调用默认参数时:

>>> add_end()

['END']

再次调用时:

>>> add_end()

['END', 'END']

>>> add_end()

['END', 'END', 'END']

问题来了,每调用一次,list中都增加一个字符串'END'。原因就在于我们把一个变量L=[]作为了默认参数。每次调用函数,变量L的默认值都会发生改变,也就是增加一个'END'。所以,使用默认参数必须指向不变对象。

3、可变参数

这个迷惑了我好久。可变参数只是意味着参数数量的可变,就好比原本的函数只允许输入固定参数量,多一个少一个都会报错。而可变参数就可以随意输入不同数量的参数。

无论是定义函数时,还是调用函数把list或tuple当作参数,所需要做的也只是在参数名前加上一个*而已。

4、关键字参数

这个和可变参数很容易搞混。可变参数仅意味着参数数量的可变,关键字参数则必须使用带参数名的参数,数量也是可变的。说简单点就是带有参数名的可变参数。

而从形态上来说,可变参数实质上是一个list或tuple;关键字参数是一个dict:

def person(name, age, **kw):

print('name:', name, 'age:', age, 'other:', kw)

其中**kw代表的就是关键字参数,使用案例如下:

>>> person('Bob', 35, city='Beijing')

name: Bob age: 35 other: {'city': 'Beijing'}

>>> person('Adam', 45, gender='M', job='Engineer') name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

5、命名关键字参数

命名关键字参数和关键字参数一样,但命名关键字参数是用来限制关键字参数的名字,即只接受指定的参数名。比如,只接受city和job作为关键字参数:

def person(name, age, *, city, job):

print(name, age, city, job)

这种参数的用法不同于关键字参数,仅需要添加一个*就可以了。*后边的参数被视作命名关键字参数。

命名关键字参数也可以和默认参数组合调用:

def person(name, age, *, city='Beijing', job):

print(name, age, city, job)

5种参数虽然都可以组合调用,但是考虑到函数接口的可理解性,还是不要使用过多的参数组合。

本文内容转载自网络,来源/作者信息已在文章顶部表明,版权归原作者所有,如有侵权请联系我们进行删除!

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Python实现一个带图形界面的爬虫
下一篇:ComputerVision 之 Python环境搭建详细教程

Python IDE推荐7个你可能会错过的Python IDE

Python面试题之Python中爬虫框架或模块的区别

2021年Python面试题及答案汇总详解

python数据分析,你需要这些工具

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省