Python基础:12函数细节

一:返回值

        当没有显式地返回元素时,Python 会返回一个None。如果函数返回多个对象,python 把他们聚集起来并以一个元组返回。

 

二:创建函数

        1:强烈推荐,在函数体之前,编写函数的文档字符串

        2:在某些语言中,函数声明和函数定义区分开的。但在Python中,将这两者视为一体,函数的子句由声明的标题行以及随后的定义体组成的。

 

        3:和其他高级语言类似,Python 也不允许在函数未声明(定义)之前,对其进行引用或者调用。下面给出几个例子来看一下:

def  foo():

        print  'in foo()'

        bar()

 

        此时如果调用函数foo(),肯定会失败,因为函数bar()还没有定义:

>>> foo()

in foo()

Traceback (innermost last): File"<stdin>", line 1, in ?

File "<stdin>", line 3, infoo

NameError: bar

 

        现在在函数foo()前给出bar()的定义:

def bar():

        print 'in bar()'

def foo():

        print 'in foo()'

        bar()

        现在可以安全的调用foo(),而不会出现任何问题:

>>> foo()

in foo()

in bar()

        甚至也可以在函数bar()前定义函数foo():

def foo():

        print 'in foo()'

        bar()

def bar():

        print 'in bar()'

 

>>> foo()

in foo()

in bar()

        这段代码是正确的因为:即使(在foo()中)对bar()进行的调用出现在bar()的定义之前,但foo()本身不是在bar()声明之前被调用的。换句话说,先声明foo(),然后再声明bar(),接着调用foo(),但是到那时,bar()已经存在了,所以调用成功。(这一点,在C语言中,是不成立的。

 

        4:除了加注释帮助理解函数之外,还有一种方式就是文档字符串。如果在函数的开头写下字符串,它就会作为函数的一部分进行存储,称为文档字符串。

 

        5:函数也具有属性,可以自定义任何函数属性,可以在函数体之外定义函数属性。比如:

def  foo():

        'foo() -- properly created doc string'

 

foo.__hehe__ = 'foohehe'

 

def  bar():

        pass

 

bar.__doc__ = 'Oops, forgot the doc strabove'

bar.version = 0.1

bar.hehe = 'barhehe'

 

三:内部函数

        在函数体内创建另外一个函数(对象)是完全合法的。这种函数叫做内部/内嵌函数。比如:

def  outer():

       print'in outer'

       def inner():

              print'in inner'

       inner()  

 

outer() 

结果是:

in outer

in inner

        内部函数在外部函数的作用域之内。如果没有任何对inner ()的外部引用,那么除了在函数体内,任何地方都不能对其进行调用。

 

五:传递函数

        在Python中,函数也是一种对象,所以,函数可以被引用的,也作为参数传入函数,以及作为列表和字典等等容器对象的元素。

        函数有一个独一无二的特征使它同其他对象区分开来,那就是函数是可调用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值