一、 定义函数:
def hello(name):
return 'hello,'+name+'!'
return 在函数中有时候不会返回任何东西,他仅仅代表函数的结束;
在函数内为参数赋予新值不会改变外部任何变量的值;
字符串(以及数字和元组)是不可变的,无法被修改,只能用新值覆盖,若将可变的数据结构如列表用作参数的时候,该数据结构可以发生变化;
二、关于引用
例如:
name=['xujie1','xujie2','xujie3'];
n=name; #此时n 和name指向了同一个列表;当对n进行相关操作时,name也是变化的,如果想避免这种情况,可以复制一个列表的副本;
三、函数参数的 关键字参数默认值
1、关键字:
#定义函数
def hello(name,greeting):
print '%s,%s!' % (greeting,name)
#使用函数
hello(name='xujie','hello');
#运行结果
hello,xujie
当参数比较多的时候,通过在往函数传值的时候,为每个参数定义一个关键字命名用于区分参数,提高函数的可读性。同时可以告诉函数,哪个参数对应哪个值,即便是是传入参数的时候 改变参数的位置,只要命名对应也可以
2、默认值:
在定义函数的时候,可以为参数定义默认值:
例如:
def hello(name=“xujie”,greeting="hello!!"):
print '%s,%s!' % (greeting,name)
在使用这个函数的时候,如果没有传值,函数则使用默认的值。
如果传值不完整,只传了一个值,只要给这个参数命名,能够让函数正确对应,其余参数使用默认值;
如果函数具有多个参数,传参时,未设置关键字时,按照位置一一对应,设置关键字,按照关键字对应的参数处理,可全部传参数,可部分传参数,未传值参数按照定义时的默认值处理;
四、可变参数
def fun(*param):
print param
使用此函数的时候可以传递多个没有关键字的参数,输出的param将会是元组形式
使用例子:
fun(1,2,3)
输出形式: (1,2,3)
对于需要对关键字参数进行可变操作 函数用一下方式定义:
def fun2(**params):
print params
此时函数的输出形式是字典形式;
使用例子:
fun2(foo=1,bar=2)
输出:{'foo':1,'bar':2}
五、上述可变参数操作的反转操作:
#定义一个函数
def add(x,y):
return x+y
#定义一个元组
param=(1,2)
#反转使用
add(*param)
对于关键字参数可以这样使用:
定义一个字典 在进行传参的时候 使用(**prams)
六、关于变量作用于的问题:
1、全局变量和函数内的局部变量是不同的作用域,每个函数的创建都会创建新的作用域,并且函数内如果改变某个变量的值,不会影响全局变量;
2、在局部作用于中读取全局变量,在命名不冲突的情况下 可以直接访问,冲突则无法访问
但是可以通过 global()['变量名'] 这个函数获取全局变量
3、重新绑定全局变量:
x=1
def change_global():
global x #通过这个方式获取全局变量
x=x+1
使用:
change_global()
x
2
 
 
 posted on 2017-07-08 21:53  徐杰  阅读(135)  评论(0编辑  收藏  举报