把函数当参数传递

# 函数参数传递
# 面向对象编程就是把对象传来传去
# 面向函数编程就是把函数传来传去 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. Oracle 修改密码 解锁

    1.怎么修改oracle用户密码 在以SYSDBA身份登陆时可以修改其他用户的密码,比如: SQL> alter user 用户名 identified by 新密码; 用户已更改. 这个是把U ...

  2. pyspark 写 logistic regression

    import random as rd import math class LogisticRegressionPySpark: def __init__(self,MaxItr=100,eps=0. ...

  3. PHP内核学习(一)SAPI

    学习PHP-src之前,我准备了一份源文件: GitHub下载->https://github.com/helingfeng/php-src 简单分析一下源码的目录结构: 1. root根目录下 ...

  4. (转)flash的Socket通讯沙箱和安全策略问题

    一.沙箱和安全策略问题 1.此问题发生在连接时,准确地说是连接前,分别两种情况: 1.本地播放 本地播放时,默认情况下Flash Player将不允许swf访问任何网络. 访问http://www.m ...

  5. Net Configuration Assistant和Net Manager的区别

    1.Net Configuration Assistant和Net Manager在oracle的配置工具中,Net Configuration Assistant(网络配置助手)和Net Manag ...

  6. 每个人应该知道的NVelocity用法

    NVelocity是一个基于.NET的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象.从而使得界面设 ...

  7. XSD (xml Schema Definition)

    .xsd文件是定义DataSet的XML文件,利用XML文件的结构优势容易可视化地设计DataSet,设计完它会生成相应的.cs文件,里面的内容就是对应的类型化的DataSet.你的代码里的DataA ...

  8. L10 PUtty+SSH 访问vncviewer

    在Linux下配置一个VNC服务器,并设置2个用户,要求其中一个用户登录时不需要输入密码.然后在客户端使用ssh+vncview的方式访问. 安装tigervnc: 输入的密码是123456 连接服务 ...

  9. spring的官方文真不错

    引文不太好,但是通过别的版本的查看,发现spring的文档真心不错,内容详细明了. http://docs.spring.io/spring/docs/3.2.5.RELEASE/spring-fra ...

  10. SpringMVC(三) —— 参数绑定和数据回显

    参数绑定的过程:就是页面向后台传递参数,后台接受的一个过程. 默认支持的参数类型:(就是你在方法上以形参的形式去定义一下的类型,就可以直接使用它) HttpServletRequest HttpSer ...