【版权声明】

| 作者:月之眼

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

| 如需转载请联系作者

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


 函数作为参数传入 

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

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

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

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


 lambda表达式 

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

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

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


综合应用

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

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

求列表中的偶数项

求列表中小于某个值的项

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

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


往期精彩文章回顾:

  • 【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等等)

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

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

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

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

欢迎你们加入我们的战队

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

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

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

  1. python文件之间的相互调用_一行 Python 代码能实现什么丧心病狂的功能?

    python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器Cpython运行效率太差. "一行代码让python的运行速度提高100倍" ...

  2. python文件之间的相互调用_用Python创建功能模块——截取字符串模块

    用Python创建模块 本篇文章小编给大家分享在Python如何创建属于自己的模块,实现更多的功能! 一.模块 模块是什么?简单来说,当程序的功能很多.代码量很大时,我们可以编写一个实现一定功能的py ...

  3. python文件之间的相互调用_「Python 系列」 Python 生成器函数详解

    Python的生成器函数提供了一种强大的机制来管理数据和计算资源,但是对于Python的新手来说,它们不一定直观.在本文中,我将分解生成器的机制,同时还介绍我希望是一个有启发性的示例:用于管理和流传输 ...

  4. 多个python文件相互调用_用 python提取两个文件之间的内容

    我有两个文件: 一个文件叫exemple_data.csv 里面包含3个id,每个id一行 ZINC04203483 ZINC26895155 ZINC03651026 一个文件叫exemple.sd ...

  5. python字典调用_【python Dict】 python 字典操作

    python字典 是一个无序.以键值对存储的数据类型,数据关联性强.唯一一个映射数据类型.键:必须是可哈希(不可变的数据类型:字符串.数字.元组.bool)值,并且是唯一的 None: none 是一 ...

  6. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  7. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  8. python中的静态方法如何调用_关于Python中如何使用静态、类、抽象方法的权威指南(译)...

    对于Python中静态.类.抽象方法的使用,我是一直很迷糊的.最近看到一篇技术文章对这方面解释的很好,在此翻译一下,加深印象,也为有需要的同学提供一个方便. Python中方法是如何工作的: 方法即函 ...

  9. c调用python第三方库_用 Python ctypes 来调用 C/C++ 编写的第三方库

    看到一篇简洁的文章--如何用Python ctypes调用C++(ctypes调用C没这么多麻烦事),不敢独享... 如果需要用 Python 调用 C/C++ 编写的第三方库(这些第三方库很可能就是 ...

最新文章

  1. 曹长树:江湖小虾米的侠客行——我的大数据能力修炼得道之路 | 提升之路系列...
  2. 算法炒房三月亏20多亿!房地产巨头大翻车!
  3. 使用类前置声明的好处-结合Qt 4一个主窗口实例讲解
  4. DBCP针对不同数据库的validationQuery
  5. IDEA查找接口实现类及快速实现接口的方法及常用快捷键
  6. .Net/C# 实现真正的只读的 Hashtable 类型的属性 (ReadOnly Hashtable Property)
  7. uoj #111. 【APIO2015】Jakarta Skyscrapers
  8. 连锁行业信息化的现状与问题
  9. Eclipse打开目标文件夹
  10. html文件怎么用影音先锋打开,先锋影音怎么用
  11. springboot jpa 实体类继承
  12. 基于C#的“密码学”实验演示系统的设计与实现、.NET下的RSA编程、各种密码学算法的C# GUI编程实现
  13. “晨光”老矣,尚能饭否?
  14. osgEarth示例分析——osgearth_manip
  15. 计算机项目教学法探讨,基于项目教学法的非计算机专业计算机教学的设计和探讨...
  16. HZNUOJ 2058 凯撒密码
  17. RedisTemplate hash操作如何使用string类型
  18. Java是剑客,.NET是刀客
  19. 【01月18日】【精彩电影合集】【10部】【亲测】【Lsyq5647发布】
  20. Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915解决办法

热门文章

  1. php可以用scanf,C/C++中 使用scanf和printf如何读入输出double型数据。
  2. 执行计划中cpu耗时_面试被问怎么排查遇到的系统CPU飙高和频繁GC,到底该怎么回答?...
  3. 网页设置页数/总页数_图书分配问题(分配最小页数)
  4. Spring Boot集成Redis,这个坑把我害惨了!
  5. Spring IoC?看这篇文章就够了...
  6. Visual Studio项目版本转换器(c#项目版本转换器 v1.0)
  7. 2021年广州如何申请失业补助金最全攻略
  8. Vue + SpringBoot跨域
  9. centos配置网络笔记
  10. 2019 CCPC - 网络选拔赛 A题^^