作用
1、可重复使用的代码。
2、实现单一,或相关联功能的代码块。
定义函数
定义函数说明:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
# 格式
def 函数名( 参数 ):
"打印传入的字符串到标准显示设备上"
print 参数
return
函数调用
# 调用函数
函数名(参数)
# 调用二
变量名 = 函数名
变量名()
# 扩展:闭包
当在函数里面调用函数,并且返回内部函数的函数名,在外面调用内部函数。
函数传递
类型属于对象,变量是没有类型的。
# 可更改(mutable)与不可更改(immutable)对象
# strings, tuples, 和 numbers 是不可更改的对象
# list,dict 等则是可以修改的对象
a=5;a=10 # 重新生成一个10对象,然后a指向它
la=[1,2,3,4];la[2]=5 # 第三个被改动。
# 参数传递
# 整数、字符串、元组 传递的是值,在函数内修改不会影响外面(传不可变对象)
# 列表,字典 传递的是地址,函数外面会受影响(传可变对象)
参数
# 必备参数
def printme( str ): # 定义
printme(str ) # 调用
# 关键字参数
def printme( str ): # 定义
printme( str = "My string") # 调用
# 默认参数
def printinfo( name, age = 35 ): # 定义
printinfo( name="miki" ) # 调用
# 不定长参数
def printinfo( arg1, *vartuple ): 定义
# vartuple循环调出。
匿名函数
匿名函数定义说明:
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
sum = lambda arg1, arg2: arg1 + arg2 # 定义
print "相加后的值为 : ", sum( 10, 20 ) # 调用
return
返回
def sum( total ):
return total
total = sum( 10)
变量作用域
全局变量和局部变量。