函数(一)

在前面的学习中我们接触到了两个有用的函数,type(object)用来判断object的类型,id(object)用来输出object在内存中的位置。

所谓的函数,就是专门实现某种计算功能的一组语句的集合,使用一个“函数名字”管理,可以通过函数名字,重复执行这个计算任务。

这个执行过程就叫做函数调用,函数调用是使用“函数名加上()”来实现的,()也叫做函数调用操作符。

>>>anInt = 3
>>>type(anInt)
<type 'int'>

type(object)是python内置函数,不需要我们自己定义就直接使用,python内置了需要有用的内置函数。

#python 内置函数
#Built-in Functions   
abs()                 divmod()    input()       open()       staticmethod() 
all()                 enumerate() int()         ord()        str() 
any()                 eval()      isinstance()  pow()        sum() 
basestring()          execfile()  issubclass()  print()      super() 
bin()                 file()      iter()        property()   tuple() 
bool()                filter()    len()         range()      type() 
bytearray()           float()     list()        raw_input()  unichr() 
callable()            format()    locals()      reduce()     unicode() 
chr()                 frozenset() long()        reload()     vars() 
classmethod()         getattr()   map()         repr()       xrange() 
cmp()                 globals()   max()         reversed()   zip() 
compile()             hasattr()   memoryview()  round()      __import__() 
complex()             hash()      min()         set()        apply() 
delattr()             help()      next()        setattr()    buffer() 
dict()                hex()       object()      slice()      coerce() 
dir()                 id()        oct()         sorted()     intern() 

python也支持自定义函数,使用关键字def来定义函数。

def func_name(argument)
    print 'def a function'
    print argument

func_name 函数名的命名法则和变量的命名法则一样。

以字母(大写字母,小写字母)或者下划线(_)开头。

后面可以由字母,数字或者下划线组成,其他的字符都是非法的。

关键字不可以做为函数名字。

第一行称为函数头以冒号(:)结束,其余部分称为函数体,函数体由任意语句组成。

在python中采用缩进来表示函数头和函数体之间的逻辑关系。

python约定采用4个空格来缩进。

定义中()中argument是表示参数,可以在函数体内使用。参数是可选,也可以不定义。

>>>def show_msg():
...        print 'hello'  # ... python 次提示符

>>>def show_msg_name(name):
...        print name

>>>def show_msg_name_defult(name = 'mfh'):
...        print name

>>def show_person(name, age=10):    
...        print name,   # , 逗号 抑制换行符的输出
...        print age


>>>show_msg()

hello
>>>show_msg_name('mfh')
mfh

>>>show_msg_name_defult()
mfh
>>>show_msg_name_defult('peter')
peter

>>>show_person('mfh')
mfh 10
>>>show_person('mfh', 20)
mfh 20

定义函数的参数时还可以提供一个默认值。具有默认值的参数必须放在没有默认值参数的右边,否则语法错误。

每个函数都会有一个返回值。使用关键字return 返回,没有明确指定返回值的将默认返回None。

def test_return_value(value1, value2):
    return value1 + value2        
    
test_return_value(1, 2)

3
>>>def show_msg():
...        pass # pass 是null(空)操作,不执行任何语句,只起到占位的作用

>>>print show_msg()

None

>>>print show_msg

<function test at XXXXXX>  # XXXXXX一串表示函数地址的数字

>>>type(show_msg)

<type 'function'>

函数和变量一样必须先定义才能使用。函数就是类型为function的对象,函数名只是指向这个对象引用。

我们也可以把函数当做一般的“变量”那样使用。

>>>def show_msg():
...        print 'I am show_msg'

>>>anthor_name = show_msg #注意没有(),带()表示函数调用,会执行函数中的的代码,将返回值赋值给anthor_name
>>>anthor_name()
I am show_msg

show_msg 和 anthor_name 都指向同一个函数对象。anthor_name 是show_msg的一个别名。

关键字return还可以中断正常的执行流程。解释器遇到return后函数执行返回将不在执行函数体内return后面的语句。

>>> def test():
...        print 'first'
...        return
...        print 'second'

>>> test()
first

 总结:

函数:为了完成某种计算任务的一组语句的集合,用一个“名字”来管理,可以通过这个名字反复执行这些语句。

函数调用:执行函数的语句,叫做函数调用。形式上为函数名加上()。

参数:函数体可以接受外部的变量,在函数定义时指定参数的个数和默认值。

返回值:每个函数都有一个返回值,使用关键字return加上要返回值的值表达,如果没有显示指定返回值,默认为None。

内置函数:随着Python解释器一起发布的常用函数,比如type()和id()。

函数对象:函数定义时创建的一个值,函数名字只是引用这个值。

函数别名:可以创建多个变量指向(引用)已经定义好的函数对象,这些对象作为已经创建的函数别名存在。

20130710 修订,增加总结。 

原文地址:https://www.cnblogs.com/mengfanhao/p/3148508.html