把函数当参数传递

# 函数参数传递
# 面向对象编程就是把对象传来传去
# 面向函数编程就是把函数传来传去 def mytest(num):
return num * 2 # # 不光可以传递变量,还可以传递函数
def convert(func, seq):
print 'convert sequence of numbers to same type'
return [func(eachNum) for eachNum in seq] myseq = [123, 45.67, -6.2e8, 99999999L]
# # 面向对象编程说白了就是把对象传来传去,对象是第一要素
# # 面试函数编程说白了就是把函数传来传去,函数是第一要素
print convert(int, myseq)
print convert(long, myseq)
print convert(float, myseq)
print convert(mytest, myseq)

函数的递归:

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00137473836826348026db722d9435483fa38c137b7e685000

指定可变参数

#--encoding:utf-8--

print '---------------给参数指定默认值-----------------------'
def taxMe(cost,rate=0.85):
return cost * rate print taxMe(5) #4.25 print '---------------给有默认值的参数指定值-----------------------' print taxMe(5,2) #10 #在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个
#可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
print '---------------给函数指定可变参数(参数个数不确定)-----------------------' def taxMe2(cost,rate=0.85,*theRest):
for aRest in theRest:
cost+=cost+aRest
print 'arg:',aRest
return cost+cost*rate print taxMe2(10, 0.5,10,11,12,13,14) #而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
print '---------------给函数指定关键字参数(参数个数不确定)------------------------' def taxMe3(cost,rate=0.85,**theRest):
for key in theRest.keys():
cost +=theRest[key]
print key,':',theRest[key]
return cost+cost*rate
print taxMe3(00, 0.05, electric=100, water=200, gas=300) #在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,
#这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
print '--------------给函数指定可变参数+关键字参数------------------------' def taxMe4(cost,rate=0.85,*theRest,**theRest2):
cost2=0
for forRest in theRest:
cost2+=forRest
print 'theRest:',forRest
for key in theRest2.keys():
cost+=theRest2[key]
print 'theRest2:key:',key,',value:',theRest2[key]
return cost+cost2+(cost+cost2)*rate print taxMe4(100, 50,100,150,300, electric=100 ,water=200,gas=30)

结果:

---------------给参数指定默认值-----------------------
4.25
---------------给有默认值的参数指定值-----------------------
10
---------------给函数指定可变参数(参数个数不确定)-----------------------
arg: 10
arg: 11
arg: 12
arg: 13
arg: 14
984.0
---------------给函数指定关键字参数(参数个数不确定)------------------------
water : 200
gas : 300
electric : 100
630.0
--------------给函数指定可变参数+关键字参数------------------------
theRest: 100
theRest: 150
theRest: 300
theRest2:key: water ,value: 200
theRest2:key: gas ,value: 30
theRest2:key: electric ,value: 100
49980

更多关于函数参数的帮助:

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738449338c8a122a7f2e047899fc162f4a7205ea3000

Python学习笔记7-把函数当参数传递、指定可变参数的更多相关文章

  1. Python学习笔记之常用函数及说明

    Python学习笔记之常用函数及说明 俗话说"好记性不如烂笔头",老祖宗们几千年总结出来的东西还是有些道理的,所以,常用的东西也要记下来,不记不知道,一记吓一跳,乖乖,函数咋这么多 ...

  2. Python学习笔记010——匿名函数lambda

    1 语法 my_lambda = lambda arg1, arg2 : arg1 + arg2 + 1 arg1.arg2:参数 arg1 + arg2 + 1 :表达式 2 描述 匿名函数不需要r ...

  3. Python学习笔记:open函数和with临时运行环境(文件操作)

    open函数 1.open函数: file=open(filename, encoding='utf-8'),open()函数是Python内置的用于对文件的读写操作,返回的是文件的流对象(而不是文件 ...

  4. python学习笔记11(函数二): 参数的传递、变量的作用域

    一.函数形参和实参的区别 形参全称是形式参数,在用def关键字定义函数时函数名后面括号里的变量称作为形式参数. 实参全称为实际参数,在调用函数时提供的值或者变量称作为实际参数. >>> ...

  5. Python学习笔记总结(二)函数和模块

    一.函数 函数的作用:可以计算出一个返回值,最大化代码重用,最小化代码冗余,流程的分解. 1.函数相关的语句和表达式 语句        例子 Calls        myfunc(‘diege', ...

  6. Python学习笔记4(函数与模块)

    1.Python程序的结构 Python的程序由包(package).模块(module)和函数组成. 模块是处理一类问题的集合,由函数和类组成. 包是由一系列模块组成的集合.包是一个完成特定任务的工 ...

  7. 吴裕雄--天生自然python学习笔记:Python3 函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这 ...

  8. Python 学习笔记 之 03 - 函数总结

    函数总结    最基本的一种代码抽象的方式.    定义函数    使用def语句进行定义, return进行函数返回.    一旦执行导return,函数就执行完毕.    即使函数未指定retur ...

  9. Python学习笔记五,函数及其参数

    在Python中如何自定义函数:其格式为 def 函数名(函数参数): 内容

  10. Python学习笔记(Ⅱ)——循环/选择/函数

    一.循环结构 python中提供了for循环和while循环两种操作,没有do……while语句. 1.for循环: 与其他语言中for循环的常见的写法如for (int i=0;i<10;i+ ...

随机推荐

  1. 体验下Xcode5与ios7

    IOS7的最新更新. 1.自主选择默认地图应用苹果在iOS 6中移除了谷歌地图,使用了自家研发的苹果地图.不得不说,这款自带的地图应用可以说烂到了一定的程度,自发布之后便问题不断.正因如此,苹果应该允 ...

  2. 转:Struts2框架安全缺陷

    当前java开发网站,通常不会是纯JSP的,大都使用了java framework. 有了这些framework,让开发人员更加快速的开发出代码,也让代码非常具有可扩展性,那些分层架构的思想,更是深入 ...

  3. hdu 1754 I Hate It_线段树

    题意:略 思路:套hdu1166模版改改就行了,要注意的是,网上有的代码是错的,还贴出来... #include <iostream> #include<cstdio> #in ...

  4. poj 1573 Robot Motion_模拟

    又是被自己的方向搞混了 题意:走出去和遇到之前走过的就输出. #include <cstdlib> #include <iostream> #include<cstdio ...

  5. OpenStack cloudCompute glassary术语project,tenant,user

    1,tenantA group of users, used to isolate access to Compute resources(一组用户,用于隔离访问计算资源). An alternati ...

  6. POJ3307+找规律

    /* 题意:求第N个productivity property数是谁. (productivity property数:就是这个数可以由另外的数的各个位上的乘积得到.) */ #include< ...

  7. 1、什么是Lucene,Lucene能干什么

    1.什么是lucene  Lucene是一个全文搜索框架,而不是应用产品.因此它并不像http://www.baidu.com/ 或者google Desktop那么拿来就能用,它只是提供了一种工具让 ...

  8. Angular初级入门

    1:jquery :库 -一般是封装了一些方法 -我们去调用他的这些方法分 2:angular:框架 -框架是提供了一些规则或者模式 -我们是根据这一种规则或者模式去写代码 -然后接下来就由angul ...

  9. Apache 日志配置,包含过滤配置

    最近排查支付宝交易成功后异步通知执行失败的原因,需要查看Apache的日志,发现之前一直没对日志进行设置,结果日志文件都1.5G多了,于是搜索了如何按天记录日志. 但公司的网站是通过阿里云的SLB分发 ...

  10. 全站 HTTPS

    1.HTTPS 基础 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信 ...