一、函数定义
#
def function1():
function_suite
二、函数调用
#def function3(): print "测试函数"function3()#运行结果:#测试函数
三、函数返回值
#def function2(): print "测试函数" return True rr = function2() # 测试函数返回值print rr#运行结果:#测试函数#True#1、函数遇到return则不继续执行#2、返回值可传递给调用者#3、return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None
四、参数传递
#def function4(a): # 定义函数时写的参数叫形参 print "测试参数传递 %s" % a return Truerr = function4("test") # 调用函数时写的参数内容叫实参数print rr#如果有多个实参,出拿地参数时必须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
五、关键字参数
#def function4(a, b): print a, bfunction4(b = "hello", a = "world")#运行结果:#world hello#1、指定形参传实参时可以不按照顺序写#2、使用关键字参数允许函数调用时参数的顺序与声明时不一致
六、缺省参数
#def function4(a, b="hello"): print a, bfunction4("abd")function4("abc", "edf")#运行结果:#abd hello#abc edf#1、如果没有为形参传实际参数,则参数使用默认值。#2、该种情况下,指定默认值得参数一定要写在后面,不然会报错。
七、动态参数1(不定长参数)
#def function(*a): # 可以和普通参数一起声明 print a, type(a)function(1,2,3,"a","b","c")#运行结果#(1, 2, 3, 'a', 'b', 'c') <type 'tuple'>#1、函数可接受任意多个参数,函数默认会把所有参数放在一个元组中,每个参数作为元组的一个元素#2、缺省参数的值如果没有传入,则被认为是默认值
八、动态参数2
#def function(**a): print a, type(a)function(AA = "aa", BB = "bb")#运行结果#{'AA': 'aa', 'BB': 'bb'} <type 'dict'>#1、传入的参数必须以key = value的形式传递,可传递任意多个,函数会把传进来的参数放在字典中保存,每个参数作为字典的一组元素
九、动态函数3
#def function(k, *a, **b): print k print a, type(a) print b,type(b)function(1,2,3,"a","b",("hello", "world"), AA = "aa", BB = "bb")#运行结果:# 1# (2, 3, 'a', 'b', ('hello', 'world')) <type 'tuple'># {'AA': 'aa', 'BB': 'bb'} <type 'dict'>#1、此种情况任何参数都可以传递,但是如果有普通的形参(k),传递的第一个参数一定会给k。#2、此种情况 **b一定要放在最后,*a放在**b之前
九、全局变量与局部变量
#建议全局变量全大写:局部变量全小写#局部变量:在函数内声明的变量,函数内部使用#全局变量:在全局下声明的变量,所有人都可以用 #默认情况函数可以调用全局变量,不可以修改全局变量 #如果函数内要修改全局变量,可用global声明该变量为全局变量,后在修改def func1(): a = 30 print aa = 10func1()print a#运行结果:#30#10# 以上结果说明默认情况下在函数内部不能对全局变量进行修改。
def func1(): global a a = 30 print aa = 10func1()print a#运行结果#30#30#如果在函数内部修改全局变量,需要在函数内部用global关键字声明该变量为全局变量。
本文出自 “学无止境” 博客,请务必保留此出处http://20120809.blog.51cto.com/10893237/1975699