Loading

Python学习之路5 - 函数

函数

定义方式:

def func():
    "这里面写函数的描述"
    这里写代码
    return x    #如果没有返回值就叫"过程",函数和过程的区别就是有无返回值

实例

def fun1():
    "这里是测试"
    print('这是第一个函数')
    return 0

fun1() #调用函数

函数传参

def test(x,y,z):
    print(x)
    print(y)
    print(z)

test(3,3,5) #这样传的参数叫做位置参数, 位置是一一对应的
test(x=5,y=4,z=3) #这样传的参数叫做关键参数, 位置可以不用一一对应

这里需要注意的是,关键参数是不能写在位置参数前面的。
例如 test(x=4,5,5) 这样x是用了关键参数,y和z用了位置参数,这样就是错的。
但是 test(3,y=4,z=6) 这样位置参数x在关键参数y和z的前面,这样就是可以的。
同理 test(3,z=6,y=4) 这样也是可以的。

参数组
如果我要传入的参数数量不固定,就在形参列表里写 *变量名 来实现。

def test(*args):
    print(args) #打印出来的是一个元组

test(3,3,5) #这样我传多少个参数都没问题了
test(*[3,4,5,6,6,4]) #这是第二种传值方式

传入字典

如果我想传入字典就在形参的位置用 **变量名 来实现

def test(**args):
    print(args) #打印出来的是一个字典

test(name='vector',age=3)

高阶函数(满足下列条件之一就是高阶函数)

a:把一个函数名当作形参传给另一个函数(在不修改被装饰函数源代码的情况下修改其功能,但是调用方式变了)

def bar():
	print('this is bar...')
bar()
print('----------------------------------')
def test(func): #在这里增加了功能
	print(func)
test(bar)  #但是这里修改了调用方式

b:返回值中包含函数名(不修改函数的调用方式,而修改函数功能)

def bar():
	print('this is bar...')
bar()
print('----------------------------------')
def test(func):   #在这里增加了功能
	print(func)
	return func		#这里返回了函数地址
bar = test(bar)   #将函数地址赋给一个变量,该变量和传入函数同名
bar()		#这个变量加上括号,就可以当函数用了,同时又没有修改函数的调用方式

嵌套函数

x = 1
def test1():
	def test2():
		def test3():
			x = 3
			print(x)
		test3()
	test2()
test1()

像这样在一个函数里面再定义一个函数就叫做嵌套函数。

posted @ 2017-09-12 21:39  腿儿爷  阅读(155)  评论(0编辑  收藏  举报