Python自定义函数的创建、调用和函数的参数详解
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 1.函数代码块以def关键词开头,后接函数标识符名称和圆括号()。 语法 复制代码 代码如下: def functionname( parameters ): "函数_文档字符串" function_suite return [expression] 默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来的。 实例 以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。 复制代码 代码如下: def printme( str ):
"打印传入的字符串到标准显示设备上" print str return 二、函数调用 如下实例调用了printme()函数: 复制代码 代码如下: #!/usr/bin/python
# Function definition is here def printme( str ): "打印任何传入的字符串" print str; return; # Now you can call printme function printme("我要调用用户自定义函数!"); printme("再次调用同一函数"); #以上实例输出结果: #我要调用用户自定义函数! 三、按值传递参数和按引用传递参数 复制代码 代码如下: #!/usr/bin/python
# 可写函数说明 def changeme( mylist ): "修改传入的列表" mylist.append([1,2,3,4]); print "函数内取值: ",mylist return # 调用changeme函数 mylist = [10,20,30]; changeme( mylist ); print "函数外取值: ",mylist #传入函数的和在末尾添加新内容的对象用的是同一个引用。故输出结果如下: #函数内取值: [10,30,[1,4]] 四、函数的参数 1.必备参数 1、必备参数 必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。 复制代码 代码如下: #!/usr/bin/python
#可写函数说明 def printme( str ): "打印任何传入的字符串" print str; return; #调用printme函数 printme(); #以上实例输出结果: #Traceback (most recent call last):
命名参数和函数调用关系紧密,调用方用参数的命名确定传入的参数值。你可以跳过不传的参数或者乱序传参,因为Python解释器能够用参数名匹配参数值。用命名参数调用printme()函数: 复制代码 代码如下: #!/usr/bin/python #可写函数说明 def printme( str ): "打印任何传入的字符串" print str; return; #调用printme函数 printme( str = "My string"); #以上实例输出结果: #My string 下例能将命名参数顺序不重要展示得更清楚: 复制代码 代码如下: #!/usr/bin/python
#可写函数说明 def printinfo( name,age ): "打印任何传入的字符串" print "Name: ",name; print "Age ",age; return; #调用printinfo函数 printinfo( age=50,name="miki" ); #以上实例输出结果: #Name: miki
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入: 复制代码 代码如下: #!/usr/bin/python
#可写函数说明 def printinfo( name,age = 35 ): "打印任何传入的字符串" print "Name: ",name="miki" ); printinfo( name="miki" ); #以上实例输出结果: #Name: miki 4、不定长参数 你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下: 复制代码 代码如下: def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串" function_suite return [expression] 加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可。如下实例: 复制代码 代码如下: #!/usr/bin/python
# 可写函数说明 def printinfo( arg1,*vartuple ): "打印任何传入的参数" print "输出: " print arg1 for var in vartuple: print var return; # 调用printinfo 函数 printinfo( 10 ); printinfo( 70,60,50 ); #以上实例输出结果: #输出: 五、匿名函数 Lambda函数能接收任何数量的参数但只能返回一个表达式的值,同时只能不能包含命令或多个表达式。 lambda函数的语法只包含一个语句,如下: 复制代码 代码如下: lambda [arg1 [,arg2,.....argn]]:expression 如下实例: 复制代码 代码如下: #!/usr/bin/python
#可写函数说明 sum = lambda arg1,arg2: arg1 + arg2; #调用sum函数 print "Value of total : ",sum( 10,20 ) print "Value of total : ",sum( 20,20 ) #以上实例输出结果: #Value of total : 30 六、关于return语句 复制代码 代码如下: #!/usr/bin/python
# 可写函数说明 def sum( arg1,arg2 ): # 返回2个参数的和." total = arg1 + arg2 print "Inside the function : ",total return total; # 调用sum函数 total = sum( 10,20 ); print "Outside the function : ",total #以上实例输出结果: #Inside the function : 30
变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下: 八、变量和局部变量 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例: 复制代码 代码如下: #!/usr/bin/python total = 0; # This is global variable. # 可写函数说明 def sum( arg1,arg2 ): #返回2个参数的和." total = arg1 + arg2; # total在这里是局部变量. print "Inside the function local total : ",total return total; #调用sum函数 sum( 10,20 ); print "Outside the function global total : ",total #以上实例输出结果: #Inside the function local total : 30 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |