python再谈函数

1、关键字参数

Python中调用函数时,函数参数的传递是比较灵活的,可以按照位置来匹配,也可以按照参数来匹配。
文字不太好说明,直接上代码。

#定义函数

def test(a,b):产

print("a=",a,',b=',b)

#主程序

x,y=2,3

test(x,y)#第一种匹配方式

test(b=y,a=x)#第二种匹配方式

其运行结果如下:

由本例可以看出:
第一种匹配方式,test(x,y)是我们之前常用的,也是其他编程语言里面用的匹配方式,按位置匹配,把x的值传递给a,把y的值传递给b。
第二种匹配方式,test(b=y,a=x)与test(x,y)的作用是一样的,也是把x的值传递给a,把y的值传递给b,但可以看到,这种方式与第一种方式不同,它是把形参名也放在这里了,在调用时就明确哪个值给哪个形参。这种叫关键字参数

2、默认值参数

Python中也有默认值参数,与其他语言中的类似。
如下列代码,代码含义请看注释。

def test(a='hello',b='cj'):#定义函数,函数参数提供默认值。

print("a=",a,',b=',b)

x,y=2,3

test()#均用默认值

test(b=y)#a用默认值

test(x)#b 用默认值

test(x,y)#给定值

其运行结果如下:

--------------------------代码太长,休息一会儿

--------------------------这是广告开始的分割线

---------------------------这是广告结束的分割线

---------------------------------------接着,来......

3、任意个数参数

有时候,在定义函数时,不能确定到底有多少个参数,可以用任意个数参数。
任意个数参数,只需要在参数前面加*或者**。
例1:

def  test(*par):

print("number of pars: %d" %len(par))

print("type of par: %s" %type(par))

for p in par:

print("par is:%s" %p)

test('lay','zcj','xi','zhang')

其运行结果为:
例2:

def  test(**par):

print("number of pars: %d" %len(par))

print("type of par: %s" %type(par))

print(par.keys())

print(par.values())

test(name1='lay',name2='zcj',name3='xi',name4='zhang')

其运行结果如下:
从例1和例2可以看出,*和**都能够接受0到多个任意个参数。
*表示将没有匹配的值都放在同一个元组中。
**表示将没有匹配的值都放在一个字典中。

4、变量的作用域

Python中的变量也分局部变量和全局变量。
局部变量就是在函数内部定义的变量,它只能在该函数内起作用。
全局变量是在函数外部定义的,作用域是整个程序。全局变量可以在函数里直接使用,但如果要改变全局变量的值,需要用global关键字。
例:

x=0

def f1():

print('f1中的x=',x)

f1()

print('运行f1后x=',x)

def f2():

global x

x=3

print('f2中的x=',x)

f2()

print('运行f2后x=',x)

其运行结果如下:
(0)

相关推荐