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 );












 

posted on 2017-10-22 14:11  步行者811  阅读(163)  评论(0编辑  收藏  举报

导航