● 函数的定义
1.关键字: def
● 参数传递方式
1.定长参数:
如:
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
#调用printinfo函数
printinfo( age=50, name="miki" )
printinfo( name="miki" )
就是正常的传递, 加个默认值就是默认参数; python的定长参数有个特性就是可以设置关键字参数, 就是调用的时候可以指定参数名
进行赋值,这样就不用再管参数的传递顺序, python会自动根据参数名匹
配.
2.不定长参数
如:
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: " print arg1
for var in vartuple:
print var
return
# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )
关键词:*, 就是有个参数已*关键字开头, 就可以接受后面传递的所有没有申明的参数
标注: *单星号标识接受的数据格式是元组, 传递参数是不用传递参数名; **双星号标识接受的数据格式是字典, 传递参数用传递参数名
● 参数传递的变量对象
1.可更改的对象:
list,dict 等则是可以修改的对象
类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的变量也会受影响
2.不可更改的对象:
strings, tuples, 和 numbers 是不可更改的对象
类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,
只是修改另一个复制的对象,不会影响 a 本身
标注: python中的元组这个复杂性变量也属于不可变对象参数类型
● 匿名函数
1.关键字: lambda
如:
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )print "相加后的值为 : ", sum( 20, 20 )
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )print "相加后的值为 : ", sum( 20, 20 )
标注:lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限
的代码逻辑.
●返回
1.关键字: return
python 中的return返回也会打断代码, return后面没值时返回none
●变量作用域
1.全局变量&&局部变量
函数体内的属于局部变量, 外部的属于全局变量