一、函数的定义

  在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,比如C语言),但是在Python中,函数声明和函数定义是视为一体的。在Python中,函数定义的基本形式如下:



def function(params):
    block
    return expression/value



注意:

  (1)在Python中采用def关键字进行函数的定义,不用指定返回值的类型。

  (2)函数参数params可以是零个、一个或者多个,同样的,函数参数也不用指定参数类型,因为在Python中变量都是弱类型的,Python会自动根据值来维护其类型。

  (3)return语句是可选的,它可以在函数体内任何地方出现,表示函数调用执行到此结束;如果没有return语句,会自动返回NONE,如果有return语句,但是return后面没有接表达式或者值的话也是返回NONE。



>>> def printHello():
    print 'hello'     # 没有return 语句

    
>>> def test():
    print 'This is printed'
    return           # return 起到结束语句的作用,表示函数调用执行到此结束
    print 'This is not'

    
>>> x = test()
This is printed
>>> 
>>> def add(a,b):   # params 参数可以是零个、一个或者是多个
    return a+b

>>> print add(1,2)
3
>>>



 

二、函数的使用

  在定义了函数之后,就可以使用该函数了,但是在Python中要注意一个问题,就是在Python中不允许前向引用,即在函数定义之前,不允许调用该函数。看下面这个例子就明白了:



1 print add(1,2)
2 def add(a,b):
3     return a+b



 运行程序后的结果:

python 调用有返回值函数 python调用方法返回值_python 调用有返回值函数

在任何时候调用某个函数,必须确保其定义在调用之前

 

三、返回值

函数的返回值只有一个。那为什么有的会出现多个呢?这里的”多个“并不是多个返回值而已,比如返回一列表,里面包含很多值。举个例子就是:只能带走一个东西,但是允许把一些东西装到塑料袋里面看做一个东西带走,这是允许的。



>>> def foo():
      return ['xyz',123,'True']     # foo()返回一个列表

>>> a = foo()
>>> a
['xyz', 123, 'True']
>>> 
>>> 
>>> def bar():
      return 'ABC',456,'False'      # bar()返回一个元组(元组语法上不需要一定要带上圆括号),为了方便阅读,最好加上圆括号。

>>> b = bar()
>>> b
('ABC', 456, 'False')



 

四、函数调用



>>> def foo(x,y):
      return x,y

>>> foo(1,2)    # 标准调用
(1, 2)
>>> foo('a','b')
('a', 'b')
>>> foo(x=1,y=2)    # 参数化调用
(1, 2)