(八) Python函数

来源:互联网 发布:淘宝同城鲜花速递 编辑:程序博客网 时间:2024/06/04 19:48

     函数不仅是C/C++等高级语言的基本功能单元,而且也支持Python。Python中不仅可以调用内部函数,还可以自己定义函数。

     一、定义函数

例子:

#FileName:function.pydef Hello():    print 'Hello World!' #函数体Hello() #调用函数    

输出:

>>> ================================ RESTART ================================>>> Hello World!

函数通过def关键字定义。def关键字后跟一个函数的名称,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾,告诉Python接下来是缩进的一个代码块(亦称函数体)。

     二、调用函数

      调用函数是指运行函数里的代码,或是直接调用Python内置的函数,否则代码永远也运行不出来。

例子(1):

#FileName:function.pydef Print():    print "Love ,promised between the fingers."    print "Every man hath his weak side. "     print "Good advice is harsh to the ear."    print    Print() #调用函数

输出:

>>> ================================ RESTART ================================>>> Love ,promised between the fingers.Every man hath his weak side. Good advice is harsh to the ear.

例子(2): 

>>> int (45.6)45>>> a = int #变量a指向int函数>>> a(45.6) #变量a调用int函数45

例子(1)表述的是自定义函数,调用函数时使用函数名和括号。例子(2)是调用内置函数数据类型转换的 int 函数。

     三、在函数中传递参数

     我们都知道函数得到的参数是我们提供给函数的值。参数在函数定义的圆括号对内指定,用逗号分割。函数中的参数名称为形参,而提供给函数调用的值称为实参。

#FileName:function.pydef Print(sentence): #sentence是形参    print sentence     print "Good advice is harsh to the ear."    print "Grasp all, lose all."    print "Handsome is he who does handsomely."    printPrint("best sentence:") #将"best sentence:"作为实参传入函数,函数中的形参sentence的值就是"best sentence:"

输出:

>>> ================================ RESTART ================================>>> best sentence:Good advice is harsh to the ear.Grasp all, lose all.Handsome is he who does handsomely.

     四、返回值return语句

      我们用return语句来返回一个函数的值,或是从一个函数返回。

#FileName:function.pydef Max(x, y):    if x > y:        return x    else:        return yprint Max(4, 5)

输出:

>>> ================================ RESTART ================================>>> 5

由上可知,Max函数返回参数中的最大值,它使用简单的if和else语句来找出较大的值,然后返回最大值。


注:没有返回值的return语句等价于return NoneNone是Python中表示没有任何东西的特殊类型。

#FileName:function.pydef Max():    pass

如果我们在定义一个空函数时,还不清楚函数的具体实现是什么,就写个pass(空语句块),让代码运行起来,如果不写pass就会出现语法错误。

      五、变量作用域

      1.局部变量:在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。    

#FileName:function.pydef Print(x): #声明形参x    x = 2 #局部变量x值    print " x = ", xx = 50 #主块程序x值Print(x)print " now x = ", x

输出:

>>> ================================ RESTART ================================>>>  x =  2 now x =  50

在函数中,我们把值2赋给形参xx是函数的局部变量。当我们在函数内改变x的值的时候,在主块中定义的x不受影响。

     2.全局变量:可以表示更大的作用域的变量,使用global关键字,可以为函数外定义全局变量赋值,也可以指定多个全局变量。 

#FileName:function.pydef Print():    global x      x = 2    print 'x = ', xx = 50Print()print 'now x =', x         

输出:

>>> ================================ RESTART ================================>>> x =  2now x = 2

global语句被用来声明x是全局变量,我们在函数内把值赋给x的时候,主块使用x的值也会发生变化。

     六、不同类型的参数值

      1.使用默认参数值:如果我们不想要为函数参数赋值,这些参数就使用默认值。我们可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。

#FileName:function.pydef Message(message, times = 1): #给形参times默认赋值为1    print message * timesMessage('hello World!') #字符串打印一次Message('Hello World~', 3) #字符串打印三次

输出: 

>>> ================================ RESTART ================================>>> hello World!Hello World~Hello World~Hello World~>>> 

注:我们在给形参赋默认值的时候,一定要只有在形参表末尾的那些参数可以有默认参数值(如def func(a,  b = 1)有效),即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。(如def func(a = 1,  b)无效)

     2.使用关键参数值:如果我们定义的函数有许多参数,只想使用其中的一部分,那我们就能通过命名的方式,也就是使用关键字的方式来给函数指定实参。

#FileName:function.pydef func(a, b = 3, c = 5):    print 'a is', a, 'and b is', b, 'and c is', cfunc(3, 7) func(25, b = 12)func(c = 25, a = 100) 

输出: 

>>> ================================ RESTART ================================>>> a is 3 and b is 7 and c is 5a is 25 and b is 12 and c is 5a is 100 and b is 3 and c is 25>>> 
关键参数值优点:1.按照顺序来给参数赋值,没有赋值的参数就使用默认值;2.我们可以给我们任意想要的参数赋值,不管参数有没有默认值。



 


0 0
原创粉丝点击