把函数当参数传递

# 函数参数传递
# 面向对象编程就是把对象传来传去
# 面向函数编程就是把函数传来传去 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. filestream streamreader

    filestream是一个读取文件的stream,其本身也是支持read和write的,负责的对文件的读与写,而streamreader则是建立在对流的基础上的读,同时还有streamwrite ht ...

  2. 解决:getWeatherbyCityName(city),服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。

    原文:getWeatherbyCityName(city),服务器无法处理请求. ---> 未将对象引用设置到对象的实例. 解决方法:不要直接使用 “服务引用” , 添加为 “Web 引用” 最 ...

  3. html5本地存储 local storage

    HTML5 web storage, a better local storage than cookies. With HTML5, web pages can store data locally ...

  4. haproxy ssl相关配置

    ssl-default-bind-options [<option>]... This setting is only available when support for OpenSSL ...

  5. Windows下安装Python3.4.2

    一.Windows下安装Python3.4.2 1.下载Windows下的Python3.4.2.exe 2.指定一个目录安装,然后下一步 3.配置环境变量包括Python.exe的文件.目录如下图所 ...

  6. hibernate 查询、二级缓存、连接池

    hibernate 查询.二级缓存.连接池 查询: 1) 主键查询 Dept dept =  (Dept) session.get(Dept.class, 12); Dept dept =  (Dep ...

  7. Period(kmp)

    Period Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. oracle优化思考-双刃剑

    oracle优化是一个双刃剑,特别注意这把剑用的场合:系统规划OLTP or OLAP 优化1:索引 在DML操作时.必须维护索引.假设大量的DML操作,想想看,IO是不是老高了? 索引长处:在非常多 ...

  9. Win8 App使用Listview的简单方法

    这是Win8 App神圣不可侵犯的头文件: <head> <meta charset="utf-8"> <title>ListViewExamp ...

  10. android开发时间和日期的代码实现工具类(一)

    android开发时间和日期工具类的代码实现: package com.gzcivil.utils; import android.annotation.SuppressLint; import an ...