Python 函数2

返回值

通过例子函数来说明,如下(输出斐波那契数列):

#!/usr/bin/env python
# coding=utf-8

def fibs(n):
    result = [0,1]
    for i in range(n-2):
        result.append(result[-2] + result[-1])
    return result

if __name__ == "__main__":
    lst = fibs(10)
    print lst

观察fibs函数,最后有一个语句return result,意思是将变量result的值返回。返回给谁呢?这要看我们当前在什么位置调用该函数了。在上面的程序中,以lst = fibs(10)语句的方式,调用了函数,那么函数就将值返回到当前状态,并记录在内存中,然后把它赋值给变量lst。如果没有这个赋值语句,函数照样返回值,但是它飘忽在内存中,我们无法得到,并且最终还被当做垃圾被python回收了。

注意:上面的函数只返回了一个返回值(是一个列表),有时候需要返回多个,是以元组形式返回。

>>> def my_fun():
...     return 1,2,3
... 
>>> a = my_fun()
>>> a
(1, 2, 3)

如果没有使用return。事实上返回的是一个None,这种模样的函数,通常采用下面的方式,因为他们返回的是None,似乎这个返回值利用价值不高,于是就不用找一个变量来接受返回值了。

>>> def my_fun():
...     print "I am doing somthin."
...
>>> my_fun()
I am doing somthin.

return还有一个作用,结束正在执行的函数,有点类似循环中的break的作用。如下:

>>> def my_fun():
...     print "I am coding."
...     return
...     print "I finished."
... 
>>> my_fun()
I am coding.

函数中的文档

一般在每个函数名字的下面,还要比较多的说明,这个被称为“文档”,在文档中主要是说明这个函数的用途。

>>> def my_fun():
...     """
...     This is my function.
...     """
...     print "I am a craft."
... 
>>> my_fun.__doc__
'\n    This is my function.\n    '

在这个函数的名称下面,用三个引号的方式,包裹着对这个函数的说明,那个就是函数文档,doc它的内容就来自这里。

全局变量和局部变量

x = 2

def funcx():
    x = 9
    print "this x is in the funcx:-->",x

funcx()
print "--------------------------"
print "this x is out of funcx:-->",x

那么,这段代码输出的结果是什么呢?看:

this x is in the funcx:--> 9
--------------------------
this x is out of funcx:--> 2

从输出看出,运行funcx(),输出了funcx()里面的变量x=9;然后执行代码中的最后一行,print "this x is out of funcx:-->",x

特别要关注的是,前一个x输出的是函数内部的变量x;后一个x输出的是函数外面的变量x。两个变量彼此没有互相影响,虽然都是x。从这里看出,两个x各自在各自的领域内起到作用。

把那个只在函数体内(某个范围内)起作用的变量称之局部变量

全局变量的例子如下:

x = 2
def funcx():
    global x    #跟上面函数的不同之处
    x = 9
    print "this x is in the funcx:-->",x

funcx()
print "--------------------------"
print "this x is out of funcx:-->",x

以上两段代码的不同之处在于,后者在函数内多了一个global x,这句话的意思是在声明x是全局变量,也就是说这个x跟函数外面的那个x同一个,接下来通过x=9将x的引用对象变成了9。所以,就出现了下面的结果。

this x is in the funcx:--> 9
--------------------------
this x is out of funcx:--> 9

你可能感兴趣的:(Python 函数2)