python基础之函数详解

来源:互联网 发布:淘宝ar扫描怎么用 编辑:程序博客网 时间:2024/04/29 06:37

函数基本定义

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性和代码的重复利用率,可以被用户调用。

定义函数语法:
def function(params):
block
return expression/value

举例:
def pri():
print “hello”
def add(a,b):
return a+b
pri()
c=add(3,4)
print c

(1)在Python中采用def关键字进行函数的定义,不用指定返回值的类型。
(2)函数参数params可以是零个、一个或者多个,同样的,函数参数也不用指定参数类型,因为在Python中变量都是弱类型的,Python会自动根据值来维护其类型。
(3)return语句是可选的,它可以在函数体内任何地方出现,表示函数调用执行到此结束;如果没有return语句,会自动返回NONE,如果有return语句,但是return后面没有接表达式或者值的话也是返回NONE。

Python函数参数

形参全称:形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数。

实参全称:实际参数,在调用函数时提供的值或者变量称作为实际参数。

def add(a,b): #a和b为形参
return a+b
c=add(2,3) #2和3为实参
print c

必备参数

须以正确的顺序传入函数,也叫做位置参数,即参数是通过位置进行匹配的,从左到右,依次进行匹配,这个对参数的位置和个数都有严格的要求。

def printme( str ):
print str;
return;
printme(); #函数调用

关键字参数

关键字参数和函数调用关系紧密,调用方用参数的命名确定传入的参数值。你可以跳过不传的参数或者乱序传参,因为Python解释器能够用参数名匹配参数值。

def printme( str ):
print str;
return;
printme( str = “My string”) #函数调用

def pri(a,b):
print a,b
pri(1,3)
pri(b=5,a=0)

缺省参数

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。

def printinfo( name, age = 35 ):
print “Name: “, name
print “Age “, age
Return
printinfo( age=50, name=”miki” )
printinfo( name=”miki” )

备注:默认参数一般放在其它参数的后面
(使用默认参数有一点要非常注意,在重复调用函数时默认形参会继承之前一次调用结束之后该形参的值)

任意个数参数

需要一个函数能处理比当初声明时更多的参数。这些参数叫做收集参数。

def printinfo( arg1, *vartuple ):
print “输出: ”
print arg1
for var in vartuple:
print var
return
printinfo( 10 )
printinfo( 70, 60, 50 )

’ * ‘和’ * * ‘表示能够接受0到任意多个参数,’ * ‘表示将没有匹配的值都放在同一个元组中,’**’表示将没有匹配的值都放在一个dictionary中。
举例:
def f(x,*args,**kwargs):
print x
print args
print kwargs

                                       输出

print f(1) ———————————————- 1 () {}
print f(1,2,3) —————————————– 1 (2,3) {}
print f(x=1)———————————————1 () {}
print f(x=1,y=2)————————————-1 () {‘y’:2}
print f(1,2,3,x=10,y=20,z=30)—————–程序错误(X进行了重复传参)
print f(1,2,3,y=20,z=30)————————-1 (2,3) {‘y’:20,’z’:30}

Python中函数是可以返回多个值的,如果返回多个值,会将多个值放在一个元组或者其他类型的集合中来返回。

匿名函数

用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
Lambda函数能接收任何数量的参数但只能返回一个表达式的值,同时不能包含命令或多个表达式。
匿名函数不能直接调用print,因为lambda需要一个表达式。

语法
lambda函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,…..argn]]:expression

fun(x+y):
return x+y
等价于: fun=lambda x,y:x+y

举例:
sum = lambda arg1, arg2: arg1 + arg2;
print “Value of total : “, sum( 10, 20 )

输出:30

举例2:求10的阶乘

print reduce(lambda x,y:x*y,range(1,11))

举例3:100以内的数之和

print reduce(lambda x,y:x+y,range(1,101))

局部变量和全局变量

局部变量在函数内部定义,拥有一个局部作用域,局部变量只能在其被声明的函数内部访问。

全局变量在函数外部定义,拥有全局作用域,全局变量可以在整个程序范围内访问。函数内部可以通过global强制定义全局变量,当函数调用时,全局变量生效。

举例:
name=”Jims”
def set1():
global name
name=”ringkee”
set1()



下节再跟大家分享Python常用的函数和内置函数哈~

0 0
原创粉丝点击