函数定义 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def functionname( parameters ): "函数_文档字符串" function_suite return [expression]
函数调用:直接写函数名字(参数) def printtest(str): print(str) return
printtest('aa') 可更改(mutable)与不可更改(immutable)对象 可更改:列表和字典 不可更改:strings, tuples, 和 numbers 是不可更改的对象
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象
传不可变对象实例 #!/usr/bin/python
def ChangeInt( a ): a = 10
b = 2 ChangeInt(b) print b # 结果是 2
传可变对象实例 #!/usr/bin/python
def changeme( mylist ): "修改传入的列表" mylist.append([1,2,3,4]); print "函数内取值: ", mylist return
mylist = [10,20,30]; changeme( mylist ); print "函数外取值: ", mylist
输出结果 函数内取值: [10, 20, 30, [1, 2, 3, 4]] 函数外取值: [10, 20, 30, [1, 2, 3, 4]]
参数: 必备参数:必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。 调用printme()函数,你必须传入一个参数,不然会出现语法错误 关键字参数 #!/usr/bin/python
#可写函数说明 def printme( str ): "打印任何传入的字符串" print str; return;
#调用printme函数 printme( str = "My string");
缺省参数 调用函数时,缺省参数的值如果没有传入,则被认为是默认值 #!/usr/bin/python
#可写函数说明 def printinfo( name, age = 35 ): "打印任何传入的字符串" print "Name: ", name; print "Age ", age; return;
#调用printinfo函数 printinfo( age=50, name="miki" ); printinfo( name="miki" ); 不定长参数 你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名
#!/usr/bin/python
def printinfo( arg1, *vartuple ): "打印任何传入的参数" print "输出: " print arg1 for var in vartuple: print var return;
printinfo( 10 ); printinfo( 70, 60, 50 );
return 语句 return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None
def sum( arg1, arg2 ): total = arg1 + arg2 print "函数内 : ", total return total; total = sum( 10, 20 );