python学习笔记之五:函数初体验
发布日期:2021-06-30 10:12:19 浏览次数:2 分类:技术文章

本文共 1636 字,大约阅读时间需要 5 分钟。

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

函数

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

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

高阶函数

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

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

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

def add(x,y):	return x+ydef 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 *2r = map(mapfunc,num)print(r)			#直接打印会给地址。print(list(r))		#这样可以打印出来。是将每个值进行了乘以2的结果def reducefunc(x,y):	return x+yfrom functools import reducer = reduce(reducefunc,num)	#相当于reducefunc(((1,2),3),4...)print(r)def filterfunc(x):	if x%2 == 0:		return Truer = filter(filterfunc,num)		#将返回是true的留下来!过滤作用。print(list(r))num1 = [4,5,-63,2,1,-7,8,-9,0]print(sorted(num1))				#正常排序,默认keyprint(sorted(num1,key=abs))		#传入key参数abs取绝对值后排序def keyfunc(x):	if x >0:		return -x	else:		return xprint(sorted(num1,key=keyfunc))		#传入自定义key参数取返回值排序

结果:

[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的高阶函数使用特别的灵活,好像是把十分厉害的大炮,零件都有了,会玩的能玩的很好,不会玩的就很丑了,我确信高阶函数一定有很多妙用!

转载地址:https://islet.blog.csdn.net/article/details/79790066 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:snowboy在树莓派3b无缘故被自动唤醒
下一篇:python学习笔记之四:list的高级操作

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月07日 00时02分36秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【python3学习笔记】斜杠和双斜杠运算符的区别 2019-04-30
【深度学习笔记】torch.nn.Sequential(* args) 与 torch.nn.Module 2019-04-30
【深度学习笔记】用torch.nn.Sequential()搭建神经网络模型 2019-04-30
【深度学习笔记】用torch.nn.ModuleList搭建神经网络 2019-04-30
【解决错误】AttributeError: module ‘scipy.misc‘ has no attribute ‘imread‘ 2019-04-30
【解决错误】复现RCAN的时候遇到了ImportError: cannot import name ‘_update_worker_pids’ from ‘torch._C’ 2019-04-30
【解决错误】ModuleNotFoundError: No module named ‘skimage‘ 2019-04-30
【深度学习笔记】pytorch的点乘(dot product) 2019-04-30
【深度学习笔记】残差 2019-04-30
【错误解决】cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\sr 2019-04-30
【python学习笔记】读取指定文件夹中的图片,结合边缘保留滤波EPF 2019-04-30
【工具和环境】Linux下安装pycharm 2019-04-30
【Accumulation】The last two sentences of the abstract 2019-04-30
【Accumulation】The definition of SISR 2019-04-30
【工具与环境】Windows下安装Sublime Text 3 2019-04-30
【解决错误】ValueError: some of the strides of a given numpy array are negative. 2019-04-30
【工具与环境】Excel中批量插入行 2019-04-30
【个人实验注意事项】 2019-04-30
【解决错误】ModuleNotFoundError: No module named ‘tqdm‘ 2019-04-30
【解决错误】ModuleNotFoundError: No module named ‘PIL‘ 2019-04-30