python中的函数
语法: def 方法名(参数1,参数2,参数3........):
函数内容从冒号开始,并且缩进
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
函数调用:直接 方法名(参数1,参数2.....)如果有参数,方法名()无参数
# 定义函数
def printme( str ):
"打印任何传入的字符串"
print str;
return;
# 调用函数
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");
可更改(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没有动,只是其内部的一部分值被修改了。
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
def ChangeInt( a ):
a = 10
b = 2
ChangeInt(b)
print b # 结果是 2
def changeme( mylist ):
"修改传入的列表"
mylist.append([1,2,3,4]);
print "函数内取值: ", mylist
return
# 调用changeme函数
mylist = [10,20,30];
changeme( mylist );
print "函数外取值: ", mylist
实例中传入函数的和在末尾添加新内容的对象用的是同一个引用,故输出结果如下:
函数内取值: [10, 20, 30, [1, 2, 3, 4]]
函数外取值: [10, 20, 30, [1, 2, 3, 4]]
必备参数:必备参数需以正确的顺序传入函数,调用时的数量和声明时一样。
def printme( str ): "打印任何传入的字符串" print str; return; #调用printme函数 printme(); #报错,必须传入一个参数
关键字参数:使用关键字参数允许函数调用时参数的顺序与声明时不一致
def printme( str ): "打印任何传入的字符串" print str; return; #调用printme函数 printme( str = "My string");
或者
def printinfo( name, age ):
"打印任何传入的字符串"
print "Name: ", name;
print "Age ", age;
return;
#调用printinfo函数
printinfo( age=50, name="miki" );
缺省参数:调用函数时,如果缺省参数的值没有被传入,则被认为是默认值
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 );