1、函数可以作为参数

1)函数名相当于变量指向函数

2)函数名后面加括号表示调用函数

#!usr/bin/env python
# -*- coding:utf-8 -*- def f1(args):
print(args)
def f2(args):
args('你好')
print("hello") #f1与变量的作用是相同的指向f1函数
#f1() 表示执行函数
f2(f1) #打印出你好 hello

3)内置函数filter()的实现方法

#!usr/bin/env python
# -*- coding:utf-8 -*-
def MyFilter(fun,sq):
result = []
for i in sq:
bol = fun(i)
if bol:
result.append(i)
return result def f1(x):
return x>30 r = MyFilter(f1,[11,22,33,44,55])
print(r) #结果返回[33, 44, 55]

4)内置函数map()的实现方法

#!usr/bin/env python
# -*- coding:utf-8 -*-
def MyMap(fun,seq):
li = []
for i in seq:
li.append(fun(i))
return li
def f1(x):
return x+100 re = MyMap(f1,[11,22,33])
print(re) #打印输出[111, 122, 133]

 2、闭包

1)内层函数调用了外层函数的变量叫闭包,可以让一个局部变量常驻内存

def func():
name = "sun" def inner():
print(name) #内层函数调用了外层函数的变量叫闭包,可以让一个局部变量常驻内存 return inner fun = func()
fun() #结果返回sun,那么这个函数所用到的name,会常驻内存,当函数调用的时候直接返回

2)闭包的应用

from urllib.request import  urlopen
def but():
content = urlopen("http://www.baidu.com").read()
def inner():
# 在函数中使用了外部变量,属于闭包,那么对inner函数来说content常驻内存,随用随取
return content
print(inner.__closure__) #如果返回内容则表示是闭包函数
return inner fn =but() #执行but函数,返回inner函数,并把inner返回给fn
con1 = fn() #调用inner函数,不再去加载网站
print(con1)
con2 = fn() #调用inner函数,不再去加载网站
print(con2)
内层函数调用了外层函数的变量叫闭包,可以让一个局部变量常驻内存

import time

def getNum():
li = [i for i in range(100000000)]
def inner():
return li
return inner t0 = time.clock() fun1 = getNum()
t1 = time.clock()
print(t1 - t0) fun2 = fun1()
t2 = time.clock()
print(t2 - t1) fun3 = fun1()
t3 = time.clock()
print(t3 - t2) # 结果输出:
# 9.215686900000001
# 0.00221929999999837
# 3.0999999999892225e- # 说明li生成后放到内存中后面调用函数直接去内存取数
												

【python之路20】函数作为参数的更多相关文章

  1. 小白的Python之路 day3 函数

    1.函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 1 2 ...

  2. python之路——初识函数

    阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...

  3. python学习笔记(3)--函数、参数、变量、递归

    1.函数基本语法和特性 背景摘要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏出了所有的知识量吗,写出了以下代码 whi ...

  4. Python基本语法_函数属性 & 参数类型 & 偏函数的应用

    目录 目录 前言 软件环境 Python Module的程序入口 函数的属性 Python函数的创建 函数的参数 必备参数 缺省参数 命名参数 不定长参数 匿名参数 偏函数的应用 前言 Python除 ...

  5. python之列表作为函数的参数

    函数参数为 列表或者字典 传递一个列表,例如 [1, 2, 3] 将此传给函数get_sum() 求出 各个元素之和 传递一个字典,打印出key/value的对应关系表: #!/usr/bin/env ...

  6. python之路(九)-函数装饰器

    装饰器 某公司的基础业务平台如下: def f1(): print('这是f1业务平台') def f2(): print('这是f2业务平台') def f3(): print('这是f3业务平台' ...

  7. python学习笔记之函数的参数

    函数的参数有位置参数和关键字参数,位置参数一定要在关键字参数的前面,位置参数的优先级是高于关键字参数的,否则会报错 def my_abs(a,b): print(a) print(b) my_abs( ...

  8. python之路之函数03

    一 首先我们学到函数的嵌套调用与定义:1 函数嵌套 # def f1(): # print(f1)#我们这里如果输入f1那么输出的则是f1这个变量(函数)所在的地址.如果输入一个字符的话那么就直接输出 ...

  9. python 之路之函数01

    一   函数 1  那么要想学习函数,我们首先应该知道函数是什么? 我们这里所说的函数与数学中的函数是不同的概念,在这里我们可以把函数看成我们写代码过程中需要用到的工具. 2  那么这个‘工具’有什么 ...

  10. python 基础 4.1 函数的参数

    #/usr/bin/python #coding=utf-8 #@Time   :2017/10/24 9:09 #@Auther :liuzhenchuan #@File   :函数的参数.py # ...

随机推荐

  1. Python import用法以及与from...import的区别

    Python import用法以及与from...import的区别 在python用import或者from...import来导入相应的模块.模块其实就是一些函数和类的集合文件,它能实现一些相应的 ...

  2. 07_jQuery对象初识(五)事件(非常重要)

    1. 目前为止学过的绑定事件的方式 1. 在标签里面写 onclick=foo(this); 2. 原生DOM的JS绑定 DOM对象.onclick=function(){...} 3. jQuery ...

  3. Groupadd- Linux必学的60个命令

    1.作用 groupadd命令用于将新组加入系统. 2.格式 groupadd [-g gid] [-o]] [-r] [-f] groupname 3.主要参数 -g gid:指定组ID号. -o: ...

  4. Inoic 滚动条问题

    1.看图说话 2.没有超过一个页,怎样去掉图中的滚动条? 3修改后预览效果

  5. LUOGU P2962 [USACO09NOV]灯Lights

    题目描述 Bessie and the cows were playing games in the barn, but the power was reset and the lights were ...

  6. js算法之把一个数组按照指定的数组大小分割成若干个数组块

    题目描述:     把一个数组arr按照指定的数组大小size分割成若干个数组块. 例如:   chunk([1,2,3,4],2)=[[1,2],[3,4]];   chunk([1,2,3,4,5 ...

  7. 转:Linux fork与vfork的深入分析

    源地址:http://linux.chinaitlab.com/c/831529.html 一)fork的概述 .操作系统对进程的管理,是通过进程表完成的.进程表中的每一个表项,记录的是当前操作系统中 ...

  8. 【MFC学习笔记】菜单和工具栏

    1 菜单栏 1.1 在对话框中加入菜单: 打开Resource View资源视图, *.rc文件—Add Resources —Menu,即可加入菜单. 注:①菜单项中含有“...”表示点击后会弹出对 ...

  9. 作业test

    views Car <template> <div class="car"> <Nav/> <div class="wrap&q ...

  10. 你真的会用Action的模型绑定吗?

    在QQ群或者一些程序的交流平台,经常会有人问:我怎么传一个数组在Action中接收.我传的数组为什么Action的model中接收不到.或者我在ajax的data中设置了一些数组,为什么后台还是接收不 ...