1、定义
python函数以关键字def标识
def test(name): print 'hello %s'%(name) name=raw_input('please input your name: ') test(name)
PS:在python中代码块以缩紧的方式进行标识,所以缩进对齐的语句为一个代码块,这比像C++\java使用{}进行标识的方法方便不少,但是也对一些代码对齐不规范的同学带来一些麻烦
def 函数名(参数列表): 函数体
2、参数列表
python在函数中的参数与C++类似,没有特殊说明说明是传值参数,即改变函数内部的局部变量,函数外的变量值是不会改变的
def test(num): num+=1 print num num=1 test(num) print num
当我们想使用参数改变外部变量是应该怎么办呢?
1)使用函数返回值改变
def test(num): num+=1 print num return num num=1 num=test(num) print num
2)给函数参数传入一个列表或字典
def test(num): num[0]=num[0]+1 print num[0] num=[1] test(num) print num[0]
为什么我们传入一个变量不会改变,而传入一个列表,列表的值就改变了呢?
其实是这个样子的,我们函数中的num列表和函数外的num列表引用的是同一个列表,所以在函数内部修改时,函数外部变量所引用的列表也跟着改变(怎么这么别扭呢?)PS:这是不是和我们在c++中传引用和指针差不多呢?
3、关键字参数和默认值参数
在上面的介绍中,函数的传参都是按照函数参数列表中的位置顺序决定的,当我们把传参的顺序改变是,函数就不会完成预期的工作。
关键字参数在函数传参是为每一个参数指定一个名字,这样无论在参数列表中的顺序是什么样子的,都会匹配到实际的参数(还是这么别扭呢?)
def test(first,second): res=first-second return res print test(1,2) print test(2,1) print test(first=1,second=2) print test(second=2,first=1)
默认值参数指在函数定义中在参数列表中设置参数额度默认值,当我们在使用函数时如果传入了新的值则使用新值,如果未传入参数,则使用默认值
def test(first=1,second=2): res=first-second return res print test(1,2) print test()
4、函数传列表、字典
在python中可以使用*(**)传递参数,可以传递多个参数,把*后面的参数当作一个列表(字典)处理
def test(*list): print list print list[0]+list[4] num1=1 num2=2 num3=3 num4=4 num5=5 test(num1,num2,num3,num4,num5)
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/er_plough/article/details/47275955