#函数(function)的参数(arguments)传递

##位置传递

##def f(a,b,c):

##    return a+b+c

##

##print(f(1,2,3))

##关键字传递

##有些情况下,用位置传递会感觉比较死板。关键字(keyword)传递是根据每个参数的名字传递参数。关键字并不用遵守位置的对应关系。依然沿用上面f的定义,更改调用方式:

##print(f(c=3,b=2,a=1))

##关键字传递可以和位置传递混用。但位置参数要出现在关键字参数之前

##print(f(1,c=3,b=2))

##参数默认值

##在定义函数的时候,使用形如a=19的方式,可以给参数赋予默认值(default)。如果该参数最终没有被传递值,将使用该默认值

##def f(a,b,c=10):

##    return a+b+c

##

##print(f(3,2))

##print(f(3,2,1))

#包裹传递

##定义函数时,我们有时候并不知道调用的时候会传递多少个参数。这时候,包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会非常有用。

##包裹传递的关键在于定义函数时,在相应元组或字典前加*或**

##包裹位置传递

##def func(*name):

##    print (type(name))

##    print (name)

##

##func(1,4,6)

##func(5,6,7,1,2,3)

##两次调用,尽管参数个数不同,都基于同一个func定义。在func的参数表中,所有的参数被name收集,根据位置合并成一个元组(tuple),这就是包裹位置传递

##包裹关键字传递

##def func(**dict):

##    print (type(dict))

##    print (dict)

##

##func(a=1,b=9)

##func(m=2,n=1,c=11)

##在dict前加**

##解包裹

##*和**,也可以在调用的时候使用,即解包裹(unpacking)

def func(a,b,c):

print (a,b,c)

args = (1,3,4)

func(*args)

##所谓的解包裹,就是在传递tuple时,让tuple的每一个元素对应一个位置参数。在调用func时使用*,是为了提醒Python:我想要把args拆成分散的三个元素,分别传递给a,b,c

##对词典的解包裹

dict = {'a':1,'b':2,'c':3}

func(**dict)

##在传递词典dict时,让词典的每个键值对作为一个关键字传递给func

##混合

##在定义或者调用参数时,参数的几种传递方式可以混合。但在过程中要小心前后顺序。

##基本原则是,先位置,再关键字,再包裹位置,再包裹关键字,

##并且根据上面所说的原理细细分辨

##lambda函数

##func = lambda x,y: x + y

##print (func(3,4))

##lambda生成一个函数对象。该函数参数为x,y,返回值为x+y。函数对象赋给func。func的调用与正常函数无异

##以上定义可以写成以下形式

##def func(x, y):

##    return x + y

##print (func(3,4))

##函数作为参数传递--函数可以作为一个对象,进行参数传递

##def test(f, a, b):

##    print ('test')

##    print (f(a, b))

##test(func, 3, 5)

##也可以如下写

##test((lambda x,y: x**2 + y), 6, 9)

##map()函数 --- Python的内置函数。它的第一个参数是一个函数对象

##re = map((lambda x: x+3),[1,3,5,6])

##这里,map()有两个参数,一个是lambda所定义的函数对象,一个是包含有多个元素的表。

##map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中。

##map通过读入的函数(这里是lambda函数)来操作数据(这里“数据”是表中的每一个元素,“操作”是对每个数据加3)。

re = map((lambda x,y: x+y),[1,2,3],[6,7,9])

##map()将每次从两个表中分别取出一个元素,带入lambda所定义的函数

##filter()函数

#第一个参数也是一个函数对象。它也是将作为参数的函数对象作用于多个元素。如果函数对象返回的是True,则该次的元素被储存于返回的表中。filter通过读入的函数来筛选数据。同样,在Python 3.X中,filter返回的不是表,而是循环对象

def func(a):

if a > 100:

return True

else:

return False

print filter(func,[10,56,101,500])

python function函数_Python34-06-函数(function)相关推荐

  1. Python的程序结构[4] - 函数/Function[2] - 匿名函数

    匿名函数 / Anonymous Function 匿名函数是一种不需要绑定函数名的函数 (i.e. functions that are not bound to a name).匿名函数通过 la ...

  2. python function at 0x00000_《fluent python》第七章 函数装饰器和闭包

    前言 函数装饰器用于在代码中"标记"函数,以某种方式增强函数的行为. 想理解与掌握这一功能必须先理解闭包:除此之外,闭包还是回调式异步编程和函数式编程风格的基础 装饰器 装饰器是可 ...

  3. python在另一个函数中使用其他函数的变量_在另一个函数中访问函数的变量,如function() . var in python...

    我在寻找一种正确的方法来访问另一个函数中的函数变量时遇到了一些问题 . 我正在制作远程操作类工具,因此我需要处理接收的命令[如'exit'或'nircmdc.exe'或'telnet'等] . 下面的 ...

  4. R语言构建xgboost模型:自定义损失函数(目标函数、loss function、object function)、评估函数(evaluation function)

    R语言构建xgboost模型:自定义损失函数(目标函数.loss function.object function).评估函数(evaluation function) 目录

  5. R语言构建xgboost模型使用早停法训练模型(early stopping):自定义损失函数(目标函数,loss function)、评估函数(evaluation function)

    R语言构建xgboost模型使用早停法训练模型(early stopping):自定义损失函数(目标函数.loss function.object function).评估函数(evaluation ...

  6. boost源码剖析之:泛型函数指针类boost::function(rev#3)

    boost源码剖析之:泛型函数指针类boost::function(rev#3) 刘未鹏 C++的罗浮宫(http://blog.csdn.net/pongba)   Note: 并非新作,03年曾放 ...

  7. 使用Spring Cloud Function框架进行面向函数的编程

    Spring Cloud Function是来自Pivotal的Spring团队的新项目,它致力于促进函数作为主要的开发单元.该项目提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像Am ...

  8. function $(id) {}表示什么函数

    function $(id) {}表示什么函数 一.总结 1.就是简写,不然每次打document.getElementById很烦 二.问题 function $(id) { return docu ...

  9. 如何保存一个函数_如何表达一个“分段函数”之学习Matlab Function模块

    前言 本节内容介绍用"Matlab Function Model"实现"分段函数" 1.   先介绍MATLAB Function 模块 如下图所示可以获得 M ...

  10. 虚函数(Virtual Function)与 纯虚函数(Pure Virtual Function)

    1>虚函数(Virtual Function) 1.1>Base Class #ifndef Animal_h #define Animal_h #include <string&g ...

最新文章

  1. photoshop小结
  2. c++中类的定义与头文件的关系
  3. 【数据竞赛】Kaggle竞赛宝典国内外竞赛方案汇总
  4. Linux中如何让进程(或正在运行的程序)到后台运行?[zz]
  5. go中使用sqlite
  6. 传统东方韵味尽显|国潮国风包装样机
  7. 判断数组、集合list、string、int、double等是否为空,判断是否为值类型
  8. IntelliJ IDEA开发工具插件GsonFormat插件安装使用
  9. Python获取京东商城的商品分类,并将分类保存到csv
  10. related、relative和relevant表示相关意思时的区别
  11. 大二〕一直在寻找 生而为人的意义(转载)
  12. Vivado IP核之浮点数乘除法 Floating-point
  13. 防封链接,无投诉按钮链接,地推链接制作,活动链接制作,防封无投诉按钮链接制作方法。
  14. Shell脚本——条件语句
  15. 夜雨数竞笔记-不定积分(1)-换元法-倒代换
  16. 关于运筹学三方库的编译和使用 ortools
  17. 低级语言和高级语言的区别
  18. 一般将来时语法课教案_一般将来时的被动语态语法课教学设计
  19. sqlplus 汉字乱码问题的解决——windows
  20. 计算机专业刊头,浅谈报纸版面在电脑排版中的美学应用

热门文章

  1. ~/.fcitx/config
  2. Epox 8RDA3G主板奇怪的问题
  3. Android 教程
  4. 台湾国立大学郭彦甫Matlab教程笔记(13) 3D
  5. oracle中有类似split的方法么,ORACLE中字符串split的一种方法
  6. springboot 第四讲
  7. gitlab上传文件到group_gitlab恢复备份数据
  8. 闭式系统蒸汽管径推荐速度_闭式空调系统管径选用表
  9. wps多人协作后怎么保存_剥开的柚子怎么保存 柚子剥开后可以放几天
  10. C++中数学运算、比较、赋值操作符的重载