(八) Python函数

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

     一、定义函数

例子:

#FileName:function.py

def Hello():
    print 'Hello World!' #函数体
Hello() #调用函数    

输出:

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

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

     二、调用函数

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

例子(1):

#FileName:function.py

def 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.py

def 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."
    	print

Print("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.py

def Max(x, y):
    if x > y:
        return x
    else:
        return y

print Max(4, 5)

输出:

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

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


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

#FileName:function.py

def Max():
    pass

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

      五、变量作用域

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

#FileName:function.py
def Print(x): #声明形参x

    x = 2 #局部变量x值

    print " x = ", x

x = 50 #主块程序x值

Print(x)

print " now x = ", x

输出:

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

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

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

#FileName:function.py

def Print():
    global x
  
    x = 2
    print 'x = ', x

x = 50
Print()
print 'now x =', x  
       

输出:

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

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

     六、不同类型的参数值

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

#FileName:function.py

def Message(message, times = 1): #给形参times默认赋值为1

    print message * times

Message('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.py
def func(a, b = 3, c = 5):
    print 'a is', a, 'and b is', b, 'and c is', c

func(3, 7) 
func(25, b = 12)
func(c = 25, a = 100) 

输出: 

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



 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值