函数定义函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 语法

def functionname( parameters ): "函数_文档字符串" function_suite return [expression]可更改(mutable)与不可更改(immutable)对象

在 python 中,==strings, tuples, 和 numbers== 是不可更改的对象,而 ==list,dict== 等则是可以修改的对象。

不可变类型:

变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。

可变类型:

变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

全局变量与局部变量

定义在函数内部的变量拥有一个局部作用域

定义在函数外的拥有全局作用域。

如果要把函数内部的变量声明为外部的全局作用域,使用global声明

传参必备参数

#可写函数说明def printme( str ): "打印任何传入的字符串" print str; return;prinme('My string')关键字参数

#可写函数说明def printme( str ): "打印任何传入的字符串" print str; return;#调用printme函数printme( str = "My string");缺省参数

#可写函数说明def printinfo( name, age = 35 ): "打印任何传入的字符串" print "Name: ", name; print "Age ", age; return;#调用printinfo函数printinfo( age=50, name="miki" );printinfo( name="miki" );不定长参数

传入列表时,加入一个星号
传入字典时,加入两个星号

# 可写函数说明def printinfo( arg1, *vartuple ): "打印任何传入的参数" print "输出: " print arg1 for var in vartuple: print var return;# 调用printinfo 函数printinfo( 10 );printinfo( 70, 60, 50 );匿名参数lambdalambda只是一个表达式,函数体比def简单很多。lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法lambda [arg1 [,arg2,.....argn]]:expression# 可写函数说明sum = lambda arg1, arg2: arg1 + arg2;# 调用sum函数print "相加后的值为 : ", sum( 10, 20 )