码迷,mamicode.com
首页 > 编程语言 > 详细

Python回顾与整理9:函数和函数式编程

时间:2016-04-13 00:43:59      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:函数   python   函数式编程   

0.说明


        无论在什么编程语言中,函数都不可或缺,充分利用函数的特性,可以大大减少我们程序中的代码量。




1.什么是函数


        所谓函数,英文名为function,其实就是表示为实现一定功能的一段代码,显然,如果需要多次实现某一功能时,使用函数就是把重复代码放入其中,既节省空间,又有助于保持一致性(主要是修改代码时)。


(1)函数vs过程

        两者都是可以被调用的实体,过程是简单、没有返回值、特殊的函数。在Python中,过程就是函数,因为解释器会隐匿地返回默认值None。


(2)返回值与函数类型

        在C语言中,如果定义的一个函数没有返回值,则默认返回`void`,并且同时还要在定义函数时声明函数的类型(即返回值为void的函数类型)。

        在Python中,并不需要定义函数的返回值类型,函数可以返回不同类型的值,而如果没有返回值,则默认返回None:

>>> def hello():
...     print ‘hello world!‘
... 
>>> res = hello()
hello world!
>>> res
>>> print res
None
>>> type(res)
<type ‘NoneType‘>

        另外需要注意的是,跟C语言一样,Python也只能返回一个值或对象,但也许你会看到下面这样的情况:

>>> def foo():
...     return ‘xpleaf‘, ‘clyyh‘
... 
>>> res = foo()

        执行没有报错,似乎真的可以返回多个对象!但其实,它真的返回了一个对象:

>>> res
(‘xpleaf‘, ‘clyyh‘)
>>> type(res)
<type ‘tuple‘>

        即在上面的函数中,其实是隐式地返回了一个元组,只是看起来像是返回了多个对象而已。显然,Python的这种特性要比C语言的灵活很多。关于返回值数量,可总结如下:

返回的对象的数目Python实际返回的对象
0None
1object
>1tuple




2.调用函数


(1)函数操作符

        其实就是使用圆括号来调用一个函数。


(2)关键字参数

        指的是在调用函数时,可以通过给指定参数传值,而不需要按照原来函数定义参数的顺序来传值。

        定义如下一个函数:

def net_conn(host, port):
    net_conn_suite

        可以有如下调用方式:

  • 标准调用(非关键字参数调用)

# 给参数传递值时,必须按照原来参数定义的顺序传递值
net_conn(‘www.xpleaf.com‘, 80)
  • 关键字参数调用

# 按照顺序给参数传递值
net_conn(host=‘www.xpleaf.com‘, port=80 )

# 不按照顺序给参数传递值
net_conn(port=80, host=‘www.xpleaf.com‘)


(3)默认参数

        默认参数就是声明了默认值的参数,因为给参数赋予了默认值,所以在调用函数时,不向该参数传入值也是允许的,后面会有讨论。


(4)参数组

        通过一个把元组(非关键字参数)或字典(关键字参数)作为参数部分传递给函数,可以在Python中执行一个没有显式定义参数的函数。如下:

func(*tuple_grp_nonkw_args, **dict_trp_kw_args)

        当然也可以给出其它形参,包括标准的位置参数(既不是默认参数也不是关键字参数,即按照函数定义时参数的位置来给相应的参数传递值)和关键字参数(函数调用时指定给哪一个参数传递值,其实就是所谓关键字参数了),函数调用的完整语法如下:

func(positional_args, keyword_args, *tuple_grp_nonkw_args, **dict_grp_kw_args)







本文出自 “香飘叶子” 博客,转载请与作者联系!

Python回顾与整理9:函数和函数式编程

标签:函数   python   函数式编程   

原文地址:http://xpleaf.blog.51cto.com/9315560/1763071

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