(八) 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 None
。None
是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
赋给形参x
。x
是函数的局部变量。当我们在函数内改变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.我们可以给我们任意想要的参数赋值,不管参数有没有默认值。
- (八) Python函数
- 八、python中的函数
- Python语言(八)函数式编程
- python学习(八)----numpy模块相关函数
- python学习(八)之递归函数
- Python学习随笔八:高阶函数
- linux下python学习笔记(八)函数2
- 八、Python的函数编程(之二)
- 基础知识(八)python文件操作相关函数
- python学习笔记(八)——函数
- Python[八]:Dictionaries
- 八皇后算法-python
- 八、Python:正则表达式
- 八皇后python实现
- 学习python(八)
- python challenge <八>
- python re(八)
- selenium-webdriver(python) (八)
- 深入分析Java Web技术内幕_第一章 学习笔记
- Java编程思想_笔记(二)
- mongo与Java之aggregate
- 七、适配器模式
- LTE中的HARQ学习(1)——基本概念
- (八) Python函数
- ls命令的简要实现
- PB技巧:DataWindw中批量删除行或恢复行
- Machine Learning 笔记
- IE浏览器兼容问题
- Google Protocol Buffers浅析(四)
- C#.NET里面抽象类和接口有什么区别?
- 在mac 10.10 上安装ruby 和 rails
- Sicily 14173. Administrative Difficulties