在Python编程实例中,这个部分我们将谈论函数的使用。

一个函数在程序中是一段代码,函数有具体的任务。使用方法的有:

1. 减少重复代码

2. 将复杂的问题分解为简单的片段

3. 提高代码的清晰度

4. 重复利用代码

5. 隐藏信息

函数在Python中是“一等公民”。这意味着函数在Python中与其他对象有着同等的地位。函数可以分配给变量,存储在集合中或者作为参数传递。这给语言带来了很大的灵活性。

函数有两种基本类型,已经创建好的函数和用户自定义的函数。已创建的函数作为Python语言的一部分,例如:dir(),len()或者abs().用户自定义函数是以关键字def创建的。

定义函数:

一个函数用关键字def创建。这个函数的语句块必须缩进。

def function():
 pass
#!/usr/bin/python
"""
The ret.py script shows how to work with
functions in Python.
author: Jan Bodnar
ZetCode, 2011
"""
def showModuleName():
    print _ _doc_ _
def getModuleFile():
    return _ _file_ _
a = showModuleName()
b = getModuleFile()
print a, b

紧接着关键字后面的是函数名,函数名后面是双括号和冒号。缩进的语句组成了函数体。

这个函数会被需要的时候执行。我们称调用函数。如果我们调用一个函数,函数体中的语句将被执行。他们不会执行直到被调用。

myfunc()

为了调用一个函数,我们在函数名后加上双括号

脚本顶端的字符被称为问档字符。它记录了当前脚本。这个放置Python代码的文件被称为module。我们定义了两个函数。第一个函数将打印module的文档字符。第二个将返回module的路径。函数可能返回一个值也可以不返回。如果明确的不返回一个值,他们将隐式地返回一个None值。“_ _doc_ _"和"_ _file_ _" 是特殊的语句属性。注意,属性左右两边分别有两个下划线。

执行

$ ./ret.py 

The ret.py script shows how to work with
functions in Python. 
author: Jan Bodnar
ZetCode, 2011

None ./ret.py

函数的定义必须在他们被使用之前,否则解释器将为报一个NameError的错误。

#!/usr/bin/python
def f1():
    print "f1()"
                                                                    
f1()
#f2()
def f2():
    print "f2()"

在上面的例子当中我们定义了两个函数。f2()被注释了。函数的调用不可以在它的定义之前。

#f2()
def f2():
    print "f2()"

调用 f2() 只能在它的定义之后,如果不注释我们将会得到一个NameError。

在哪里定义函数

函数可以定义在一个module里,一个class中或者另一个函数中。函数定义在一个class中被称为method(方法)。

#!/usr/bin/python
class Some:
    @staticmethod
    def f():
        print "f() method"
def f():
    print "f() function"
                 
def g():
    def f():
        print "f() inner function"
    f()      
                     
Some.f()
f()
g()

在这个例子中,我们定义了f()函数在所有可能的位置。

class Some:
    @staticmethod
    def f():
        print "f() method"

一个静态的方法被定义在一个Some class中

def f():
    print "f() function"

转载于:https://blog.51cto.com/lijingiscute/1226863