python函数,,函数是组织好的,可重


函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创见函数,这被叫做用户自定义函数。

你可以定义一个由自己想要功能的函数,以下是简单的规则:

函数代码块以def关键词开头,后接函数标识符名称和圆括号()。

任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

函数内容以冒号起始,并且缩进。

Return[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

函数语法如下

deffunctionname(parameters):"函数_文档字符串"function_suitereturn[expression]

例子:

[root@pythonday3]#catprint_fun.py#!/usr/bin/envpythondefprintme(string):#自定义一个函数名叫printme,有一个参数stringprintstring#打印参数stringprintme(‘Thisisthefirstfunction.‘)#将括号中的字符串交给函数printme处理printme(‘ThisisPython.‘)#运行结果[root@pythonday3]#pythonprint_fun.pyThisisthefirstfunction.#我们给定的字符串正常出输出来了ThisisPython.

按值传递参数和按引用传递参数

所有参数(自变量)在Python里都是按引用传递。如果你在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。例如:

defchangeme(mylist):mylist.append([1,2,3,4])#将传入的mylist增加一个元素print"getnuminfunctionchangeme",mylist#打印mylistmylist=[10,20,30]#定义一个列表mylistchangeme(mylist)#调用函数changemeprint‘getnumfromglobal‘,mylist#最后打印一次mylist#整个代码执行过程会打印2次mylist,一次是在函数内部,一次是在函数外部[root@pythonday3]#pythonfun2.pygetnuminfunctionchangeme[10,20,30,[1,2,3,4]]getnumfromglobal[10,20,30,[1,2,3,4]]

命名参数函数

[root@pythonday3]#catfun3.py#!/usr/bin/envpythondefprintinfo(name,age):#定义一个函数,有2个参数print"Name:",nameprint"Age:",ageprintinfo(age=50,name="miki")#调用函数,指定参数的值#运行结果[root@pythonday3]#pythonfun3.pyName:mikiAge:50

函数的缺省参数

[root@pythonday3]#catfun4.py#!/usr/bin/envpythondefprintinfo(name,age=35):#函数的2个默认参数,其中age拥有一个默认值35print"Name:",nameprint"Age:",ageprintinfo(age=50,name="miki")#给定2个参数printinfo(name="miki")#这里只给定一个参数name,参数age将使用默认值35#运行结果[root@pythonday3]#pythonfun4.pyName:mikiAge:50Name:mikiAge:35#这个值是使用的默认参数的值

函数的不定长参数

[root@pythonday3]#catfun5.py#!/usr/bin/envpythondefprintinfo(arg1,*vartuple):#定义了一个不定长函数print"output:"printarg1#打印第一个参数arg1forvarinvartuple:#循环打印后面的参数vartupleprintvarprintinfo(10)#只给定一个参数printinfo(70,60,50)#给定3个参数,其中第一个参数arg1=70#运行结果[root@pythonday3]#pythonfun5.pyoutput:10#只给定一个参数的输出结果output:70#给定3个参数的输出结果6050

匿名函数

用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。

Lambda函数能接收任何数量的参数但只能返回一个表达式的值,同时只能不能包含命令或多个表达式。

匿名函数不能直接调用print,因为lambda需要一个表达式。

lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数。

虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

ambda函数的语法只包含一个语句,如下:

lambda[arg1[,arg2,.....argn]]:expression

如下实例:

[root@pythonday3]#catfun_lambda.py#!/usr/bin/python#定义一个lambda函数,有2个参数arg1和arg2,对这2个参数进行+操作sum=lambdaarg1,arg2:arg1+arg2#将lambda赋值给sumprint"Valueoftotal:",sum(10,20)#sum接受了2个参数10,20print"Valueoftotal:",sum(20,20)#sum接受了2个参数20,20#运行结果[root@pythonday3]#pythonfun_lambda.pyValueoftotal:30Valueoftotal:40

return语句

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下例便告诉你怎么做:

[root@pythonday3]#catfun_return.py#!/usr/bin/envpythondefsum(arg1,arg2):#函数接受2个参数total=arg1+arg2#2个参数的和赋值给totalprint"Insidethefunction:",totalreturntotal#将total的值return出去total=sum(10,20)#给sum函数赋予2个值10和20,将函数的整个运行结果赋值给totalprint"Outsidethefunction:",total#最后打印函数外部的total的值#运行结果[root@pythonday3]#pythonfun_return.pyInsidethefunction:30Outsidethefunction:30

变量和局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:

[root@pythonday3]#catfun6.py#!/usr/bin/envpythontotal=0#Thisisaglobalvaribale.#这是定义个一个全部变量,初始值为0defsum(arg1,arg2):total=arg1+arg2#函数sum内部的变量totalprint"Insidethefunctionlocaltotal:",totalreturntotal#将total的值return出去sum(10,20)#给sum函数赋予2个值print"Outsidethefunctionglobaltotal:",total#最后打印total,由于函数sum内部rerurn的结果没有赋予给任何变量,所有这里的total将会使用全局变量total#运行结果[root@pythonday3]#pythonfun6.pyInsidethefunctionlocaltotal:30Outsidethefunctionglobaltotal:0


本文出自 “ly36843运维” 博客,请务必保留此出处http://ly36843.blog.51cto.com/3120113/1682268

python函数

评论关闭