欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python学习之路5 - 函数

程序员文章站 2024-02-24 13:48:46
...
函数

定义方式:

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

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