定义函数规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。示例:
def printme( str ): "打印传入的字符串到标准显示设备上" print str return函数的调用:
# 定义函数 def printme( str ): "打印任何传入的字符串" print str; return; # 调用函数 printme("我要调用用户自定义函数!"); printme("再次调用同一函数");
可变(mutable)与不可变改(immutable)对象:
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
python 传不可变对象实例
def ChangeInt( a ): a = 10 b = 2 ChangeInt(b) print b # 结果是 2
传可变对象实例:
def changeme( mylist ): "修改传入的列表" mylist.append([1,2,3,4]); print "函数内取值: ", mylist # [10, 20, 30, [1, 2, 3, 4]] return # 调用changeme函数 mylist = [10,20,30]; changeme( mylist ); print "函数外取值: ", mylist # [10, 20, 30, [1, 2, 3, 4]]
参数:
以下写法(指明了参数关键字)调用参数时可以随意调整参数位置;
def printinfo( name, age=28 ) # 函数定义 详情略 printinfo( age=50, name="miki" ); # 调用时可以改变参数顺序 printinfo( "miki",50 ); # 没有指定关键字,需要按顺序写参数
参数个数可变的情况:
def printinfo( arg1, *vartuple ): # 加*号表示支持多个参数 "打印任何传入的参数" print "输出: " print arg1 for var in vartuple: print var return; # 调用printinfo 函数 printinfo( 10 ); # 10 printinfo( 70, 60, 50 ); # 70 60 50匿名函数:
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
lambda函数看起来只能写一行
sum = lambda arg1, arg2: arg1 + arg2; # 调用sum函数 print "相加后的值为 : ", sum( 10, 20 ) # 30 print "相加后的值为 : ", sum( 20, 20 ) #40
下篇:Python2:模块