做为计算机代码的一种抽象方式,函数在Python中扮演了极为重要的角色。今天给你们介绍Python函数的定义、参数的传入以及调用方式。其中函数参数的传入方式为本节重点内容。Python函数的参数形式包括必选参数、默认参数、可变参数、命名关键字参数以及关键字参数。五类参数可单独传入也可组合传入。python
>>>> 函数
Python 函数的定义code
Python中使用def语句来定义函数,而后依次写出函数名、括号、括号内的参数以及最后不能忘记的冒号,函数体需另起一行在缩进块中编写,最后返回值用return语句执行。看一例求绝对值的自编函数:对象
def f_abs(x):
if x >=0:
return x
else:
return -xci
固然,若是你已经经过pycharm将f_abs保存为abstest.py文件的话,能够经过cmd在当前文件目录下启动Python而后直接导入函数模块来调用f_abs函数:pycharm
C:\Users\Administrator>F:
F:\>cd pythoncode>python
>>> from abstest import f_abs
>>> f_abs(-1.0923)
-1.0923cmd
另外咱们在编写函数时也能够对函数作参数个数和参数类型的检查,函数也能够返回多个值,但其本质是一个tuple。it
>>>> io
函数的参数传入test
函数参数传入的灵活性使得Python函数十分强大,函数参数除了必选参数以外,还包括默认参数、可变参数、命名关键字参数以及关键字参数。函数参数传递顺序为必选参数>默认参数>可变参数>命名关键字参数>关键字参数。
必选参数:
先定义一个求平方的函数:
def power(x):
return x*x
power(-10)
100
可见求平方函数定义起来很方便,但若是咱们想求x的更高次幂的话,恐怕这个函数就得改改了,咱们须要两个必选参数才能搞定:
def power(x,n):
s = 1
while n >0:
n = n-1
s = s*x
return s
power(10,3)
1000
默认参数:
当咱们从新定义power函数时,原先的只传入一个必选参数的函数就已经失效了,这时候咱们就须要默认参数来帮忙了,将参数n的值定义为默认值2:
def power(x,n=2):
s = 1
while n >0:
n = n-1
s = s*x
return s
>>> power(10)
100
>>> power(10,2)
100
从上述例子咱们能够看出,默认参数的使用能够简化函数的调用。必选参数在前,默认参数在后,当传入多个参数时,变化大的参数放前面,变化小的参数可做为默认参数放后面,最重要的一点是,默认参数必须指向不变对象!这是设置默认参数时须要注意的。
可变参数:
咱们对一组数的平方求和定义一个函数,即a2+b2+c2+...利用可变参数咱们能够编写函数:
def jisuan(*numers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
由上面的命令可见可变参数仅仅须要在参数前加上一个*号就可完成对其定义,参数numbers接受的数据类型为一个list或者tuple。当咱们已有一个list或者tuple时,咱们能够直接将其看成可变参数传入函数中去:
>>> nums = [2,3,5]
>>> jisuan(*nums)
38
关键字参数:
与可变参数能够传入任意个参数不一样的是,关键字参数能够传入任意个含参数名的参数,这样key-value格式显然是以dict的数据类型传入的。且看示例:
def player(name,team,**kw):
print('name:',name,'team:',team,'other:',kw)
player('Harden','Rockets',city = 'Houston')
name: Harden team: Rockets other: {'city':'Houston'}
显而易见的一点是,关键字参数增长了函数的灵活性,除去必选参数外,用户可经过关键字参数输入任何想要的参数。和可变参数相似的是,咱们也能够先定义一个dict,而后将其做为关键字参数传入函数中去:
>>> info = {'city': 'Golden states'}
>>> player('Curry','Worriors',**info)
name: Curry team: Worriors other: {'city':'Golden states'}
命名关键字参数:
经过关键字参数,咱们能够传入任意不受限制的参数,但若是咱们想要限制关键字参数的名字,可使用命名关键字参数,例如只接受city和age做为关键字参数,定义方式以下:
def palyer(name,team,*,city,age):
print(name,team,city,age)
命名关键字参数须要一个*做为分隔,*后面的参数均为命名关键字参数,这与关键字参数的**大不相同。但若是在此以前函数已有可变参数的话,再定义命名关键字参数的话就不须要*做为分隔符了。示例以下:
def palyer(name,team,*tec,city,age):
print(name,team,tec,city,age)
须要注意的是,命名关键字参数必需连同参数名一块儿传入函数中,不然的话Python将会报错。
>>> player('Parker','Spurs',city = 'San Antonio',age = 32)
Parker Spurs San Antonio 32
须要说明的一点是,各种参数能够组合传入函数当中,只是须要注意传入的顺序:必选参数>默认参数>可变参数>命名关键字参数>关键字参数。
>>>>
函数的调用
当咱们定义好函数后,相应的函数调用也就十分简单了,直接使用函数名便可完成调用。固然,并非每一个函数都须要咱们去自定义,Python基础模块和各种库里面内置了大量函数,咱们可直接调用,这一点和R也是相似的。看几个Python函数的例子:
>>> abs(-0.3)0.3>>> max(3,0,8,3)8>>> int(10.24)10