python学习笔记之五:函数初体验

    使用python编程不可能只停留在一行一行输入的感觉。python感觉使用C/C++的思路是很好理解的。函数就是面向过程的主要部分,而python的函数怎么使用呢?

函数

def add(x,y):
	return x+y
a = add(1,2)
b = add("1","2")
print(a,b)

    结果是3,"12"。这就是普通的python函数,由于其变量的灵活性,C++的重载直接就简简单单了。格式需要特别注意4个空格或者是tab键,很容易报错,毕竟没有大括号{},想要简单就得付出代价。

高阶函数

    什么是高阶函数?统统搞不清,但感觉就是函数指针啊!可以使用一个变量直接赋值函数名,调用函数的方法,而且定义时的函数名竟然可以再被赋值,不再指向原来的函数,感觉好变态,这样会不会容易出错啊。

def add(x,y):
	return x+y

f = add			#这个感觉就是函数指针,将f指向函数的开头
print(f(1,3))	#可以
add = 1
print(add)		#python可以进行将函数名重新赋值的变态操作!一切皆对象?!
print(f(1,3))	#当然还是可以使用的

    上面只是函数指针的初级调用,函数指针也可以当参数是肯定的。

def add(x,y):
	return x+y
def dec(x,y):
	return x-y
	
def show(x,y,fuc):
	return fuc(x,y)

print(show(1,2,add))
print(show(1,2,dec))

结果是3 -1.是正常操作,使用起来确实方便。本来应该就这些的,但是看廖雪峰的python教程还有一些有趣的高阶函数的使用方法,感觉是很有用,你直接去看他的吧。我只是学习写写自己的感悟。

下面介绍几个使用高阶函数这一个特性的方法:

map(对一个参数直接作用),reduce(对两个参数直接作用),filter(过滤),sorted(排序)。

num = [1,2,3,4,5,6,7,8,9,10]
def mapfunc(x):
	return x *2
r = map(mapfunc,num)
print(r)			#直接打印会给地址。
print(list(r))		#这样可以打印出来。是将每个值进行了乘以2的结果


def reducefunc(x,y):
	return x+y
from functools import reduce
r = reduce(reducefunc,num)	#相当于reducefunc(((1,2),3),4...)
print(r)

def filterfunc(x):
	if x%2 == 0:
		return True
r = filter(filterfunc,num)		#将返回是true的留下来!过滤作用。
print(list(r))

num1 = [4,5,-63,2,1,-7,8,-9,0]
print(sorted(num1))				#正常排序,默认key
print(sorted(num1,key=abs))		#传入key参数abs取绝对值后排序
def keyfunc(x):
	if x >0:
		return -x
	else:
		return x
print(sorted(num1,key=keyfunc))		#传入自定义key参数取返回值排序

结果:

<map object at 0x0000000002237B38>
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
55
[2, 4, 6, 8, 10]
[-63, -9, -7, 0, 1, 2, 4, 5, 8]
[0, 1, 2, 4, 5, -7, 8, -9, -63]
[-63, -9, 8, -7, 5, 4, 2, 1, 0]

总结

    整体体验下来感觉的到,python的高阶函数使用特别的灵活,好像是把十分厉害的大炮,零件都有了,会玩的能玩的很好,不会玩的就很丑了,我确信高阶函数一定有很多妙用!



猜你喜欢

转载自blog.csdn.net/qq_37887537/article/details/79790066
今日推荐