c# python 相互调用_【GhPython】Python如何使用“委托”和lambda表达式

【版权声明】

| 作者:月之眼

| 首发于大水牛参数化设计平台

| 如需转载请联系作者

| 如果觉得文章不错,欢迎分享 


 函数作为参数传入 

在python中函数是能作为参数输入函数的。这个有点类似于C#中的委托,将一个函数封装到一个委托对象里,再将这个委托对象传入函数进行调用。这里写一个简单的C#案例,大概理解“委托”的概念就行。

c7a0e71af614599c2512017ffeb4e1c4.png

下面我们来看看python如何实现上面的效果。

539a43f345884e2d689f01ffc95d90b5.png

这里我们可以看到调用Test(list,func)函数时候,我们将一个函数传入了Test函数的第二个参数,第二个参数func直接在函数内调用了。就和C#中的“委托”调用一样。

利用委托写代码可以将代码封装的更好,不用频繁修改函数内部的代码。让代码更加的灵活。我们再看应用之前我们先看看匿名方法lambda表达式。


 lambda表达式 

有时候我们在定义一次性函数的时候(只调用一次的函数),我们就可以采用匿名函数来处理。我们将上面的C#代码进行简化,效果如下(不能理解也没事,看看就行)

ec02f1f8453213c4f46d778ff54ccfc4.png

我们再将上面的python代码进行简化。我们用lambda关键字声明了一个参数为num的匿名函数,并将这个函数赋值给了F变量名。

6f212843b7cbcdd77f07033e97ee6def.png

我们直接在调用Test函数的时候定义lambda表达式,这样看起来更像C#的lambda表达式。

b40d1e0fb0ddc75f7f3eedb0fe3ceef3.png


 综合应用 

函数有个很重要的概念就是对代码的封装,减少代码的重复使用。

这里我举个简单的例子:比如我们要写一个函数把列表中的偶数项选择出来,写另一个函数把列表中小于某个值的项选取出来。

2bc2b3dfcc20b90ca30b0ed1093e48f1.png

求列表中的偶数项

a0f5f2384eb77eb2aaccc7f74d586dc7.png

求列表中小于某个值的项

然后我们利用上面学习的“委托”和lambda表达式将上面的代码合并成一个,这样我们只需要调用的时候更改输入的条件就行了,Test函数内的代码是不需要改动的。

af87a197c0fc4cb39c0b0c9e4576bd5a.png

最后再讲一下利用列表解析将函数进行简化,关于列表解析可以查看这个链接:python列表解析

78c6950b2f197a0ccc0ae8947eb96682.png


往期精彩文章回顾:

  • 【Python】Gh如何选中Rhino中图层的物体

  • 【Python】如何循环标注

  • 【Processing教程6】----Minim的简单运用

  • 【Processing 教程 5】 ----PeasyCam 和 gHowl

  • 【Processing教程4】----library的简单运用

  • 【Processing 教程3】--Arry和For Loop

  • 【Processing 教程 2 】----- function

  • 【Processing 教程1】--界面和参数介绍

  • 【号外,号外】大家期待已久的Processing教程来啦

  • 【Python】一键标注封闭多重直线

  • 【Python】通过python删除指定名称的电池

  • 【分分钟建模系列20】如何路径分组

  • 【分分钟建模系列19】如何用RhinoPython实现“向日葵”开洞

  • 【分分钟建模系列18】如何用Rhino做垂直格栅

  • 【分分钟建模系列08】山寨一个教堂

  • 【分分钟建模系列07】做个扭转建筑

  • 【分分钟建模系列】SoftMove命令的简单应用

  • 【分分钟建模系列】手把手教你做旋转楼梯

  • 【分分钟建模系列】手把手教你做表皮

  • 【分分钟建模系列05】手把手教你做编织

  • 【分分钟建模系列06】手把手教你做个凳子

  • 【分分钟建模系列09】如何用犀牛手工做灰阶度干扰

  • 【分分钟建模10】MAD中国国家美术馆

  • 【分分钟建模教程系列11】Big的W大楼

  • 【分分钟建模教程系列12】如何做一个漂亮的楼梯

  • 【分分钟建模教程系列13】如何做曲面干扰

  • 【分分钟建模系列14】如何快速打断相交的曲线

  • 【分分钟建模系列15】如何用Grasshopper建一座桥梁

  • 【分分钟建模系列16】茶几建模

  • 【分分钟建模系列17】BIG蛇形画廊的建模案例

  • 【Bubalus_RH for Rhino6】选择“选中物体”所在的图层

  • 【Grasshopper】Anemone插件的应用


大水牛参数化设计是一个传播分享建筑数字化设计与数字化建造资讯的平台

并且会不断连载原创或转载有价值的参数化软件教程

(Rhino、Grasshopper、Python、Revit、Processing等等)

是一个视野与技术并重的数字化传播平台

我们的目标是把这个平台创造成一个拥有良好氛围的学习平台

我们将带头冲锋;我们的立场非常坚定

我们的狂怒你驾驭不住;黎明就在眼前

欢迎你们加入我们的战队

记住我们不是一个人在战斗

1f0292a9db1c2df974a824176fad9b2e.png

点击关注微信公共号,获取更多精彩内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringAOP Aspect注解实现简单日志功能

SpringAOP实现简单日志功能 AOP(Aspect Oriented Programming):面向切面编程,Spring框架的重要组成部分,利用AOP我们可以将一些公用的业务逻辑部分抽取出来,动态的插入到程序中(如日志记录、权…

chimerge算法matlab实现,有监督的卡方分箱算法

实现代码import numpy as npimport pandas as pdfrom collections import Counterdef chimerge(data, attr, label, max_intervals):distinct_vals sorted(set(data[attr])) # Sort the distinct valueslabels sorted(set(data[label])) # Get all possible labelsempty_coun…

金士顿u盘真假软件_简洁轻巧 金士顿DT80 Type-C高速闪存盘评测

从都市的高端会议到普通的日常娱乐,USB高速闪存应用于我们生产生活的方方面面。它小巧便携,稳定可靠的特点吸引了无数人去使用,同时为我们提供了诸多便利。闪存盘也就是日常生活中经常提到的U盘。大多数人对于U盘的印象是老式的USB Micro接口…

php阴影效果,如何使用css3实现文字的单阴影效果和多重阴影效果(

使用css3实现文本阴影效果的原理实现阴影效果主要是用text-shadow属性,根据W3C标准,如果我们想要在IE下兼容CSS3的阴影属性可以使用ie.css3-htc,不过按照标准InternetExplorer9以及更早版本的浏览器暂时不支持text-shadow属性。最基本的语法为…

SpringAOP+自定义注解实现日志功能

SpringAOP自定义注解实现日志功能 上篇文章讲解了springAOP实现简单日志功能,这次讲解使用自定义注解实现日志功能。具体pom、Spring、SpringMVC的配置不再进行讲解,详情点击链接查看[SpringAOP Aspect注解实现简单日志功能]。 如果你的项目使用的是sp…

promise链式调用_这一次,彻底弄懂 Promise

Promise 必须为以下三种状态之一:等待态(Pending)、执行态(Fulfilled)和拒绝态(Rejected)。一旦Promise 被 resolve 或 reject,不能再迁移至其他任何状态(即状态 immutable)。基本过程:初始化 Promise 状态(pending)执行 then(..) 注册回调处…

用MATLAB绘制国债NSS模型,[matlab]用lsqcurvefit或lsqnonlin实现NSS利率期限模型-经管之家官网!...

opt optimset(lsqcurvefit);opt.Display final;opt.MaxFunEvals20000;opt.MaxIter20000;opt.TolFun1e-140;opt.TolX1e-140;% x债券还有多久到期(年);y对应债券到期收益率。% 所有数据均来自于上海证券交易所上市的国债。x [0.0274 0.0356 0.189 0.2 0.2411 0.380…

Spring 自定义注解,配置简单日志注解

java在jdk1.5中引入了注解,spring框架也正好把java注解发挥得淋漓尽致。 下面会讲解Spring中自定义注解的简单流程,其中会涉及到spring框架中的AOP(面向切面编程)相关概念。 不清楚java注解的,可以先了解java自定义注…

visual studio 判断dropdownlist选的是什么_心理测试:五个小蓝人,你选哪个?测你是不是一个容易追求的人...

下面这张图片里,有五个小蓝人,你觉得自己会是里面的哪一个?A. 站在家里的窗户边B. 站在河边C. 坐在屋顶D. 站在树上E. 骑着鸟飞在空中测试结果选A的你容易追求指数20%。你是一个温柔细腻的人。在别人的眼里,你是一个很贴心的人。在…

java中为何输出框会无限输出,MyBatis启动时控制台无限输出日志的原因及解决办法...

你是否遇到过下面的情况,控制台无限的输出下面的日志:Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl adapter.Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl adapter.Logging initiali…

基于注解SpringAOP,AfterReturning,Before,Around__springboot工程 @Around 简单的使用__SpringBoot:AOP 自定义注解实现日志管理

基于注解SpringAOP,AfterReturning,Before,Around AOP(Aspect Oriented Programming),即面向切面编程(也叫面向方面编程,面向方法编程)。其主要作用是,在不修…

流浪地球开机动画包zip_【文娱热点】流浪地球2定档2023大年初一;迪士尼计划裁员32000人...

剧集、综艺任嘉伦、白鹿《长安如故》开机11月26日,根据小说《一生一世美人骨》古代篇改编的剧集《长安如故》开机,两位主演任嘉伦和白鹿继现代篇《一生一世》之后再演古代篇,俩人穿着棉服、梳着古装发髻现身开机仪式,心情非常好。…

matlab读气象数据,中国气象数据网

“中国气象科学数据共享服务网”的气象卫星资料与国内其他气象卫星资料发布平台的最大不同之处,在于卫星数据资源内容不同且时间序列相当完整。而且,(1)数据获取更便捷。在线获取数据无需等待邮件通知,无数据下载量限制。共享卫星资源是公益性…

spring中自定义注解(annotation)与AOP中获取注解___使用aspectj的@Around注解实现用户操作和操作结果日志

spring中自定义注解(annotation)与AOP中获取注解 一、自定义注解(annotation) 自定义注解的作用:在反射中获取注解,以取得注解修饰的类、方法或属性的相关解释。 package me.lichunlong.spring.annotation;import java.lang.annotation.Documented; …

php获取40001,php - Discord API错误#40001未经授权 - SO中文参考 - www.soinside.com

我通过OAuth2 URL(https://discordapp.com/api/oauth2/authorize?client_id398437519408103444&permissions59392&scopebot)验证我的机器人我想在我的discord服务器上发送消息到频道码:$curl curl_init();curl_setopt($curl, CURLOPT_URL, https://discor…

python 编译器pyc_有没有办法知道哪个Python版本.pyc文件被编译?

Is there any way to know by which Python version the .pyc file was compiled? 解决方案 You can get the magic number of your Python as follows: $ python -V Python 2.6.2 # python >>> import imp >>> imp.get_magic().encode(hex) d1f20d0a To ge…

php可以支持代码重用技术的命令,Linux下的编程 PHP高级技巧全放送(一)

全球超过300万个互联网网站的管理员都在使用,使得它成为最为普及的端脚本语言之一。其特点是运行速度快、稳定可靠、跨平台,而且是开放源软件。 随你使用的水平不同,PHP可以很简单,也可以很复杂,可以只使用它发送表格元…

python处理word表格格式_python---word表格样式设置

1、word表格样式的设置from docx import * document Document() table document.add_table(3, 3, style"Medium Grid 1 Accent 1") heading_cells table.rows[0].cells heading_cells[0].text 第一列内容 heading_cells[1].text 第二列内容 heading_cells[2].te…

Spring AOP——Spring 中面向切面编程

前面两篇文章记录了 Spring IOC 的相关知识,本文记录 Spring 中的另一特性 AOP 相关知识。 部分参考资料: 《Spring实战(第4版)》 《轻量级 JavaEE 企业应用实战(第四版)》 Spring 官方文档 W3CSchool Spri…

python getchar,Linux C编程学习:getchar()和getch()

getchar函数名: getchar功 能: 从stdin流中读字符用 法: int getchar(void);注解:getchar有一个int型的返回值,当程序调用getchar时程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中直到用户按回车为止(回车字符也放在缓冲区中)。当用…