【python之路20】函数作为参数
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】函数作为参数的更多相关文章
- 小白的Python之路 day3 函数
1.函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 1 2 ...
- python之路——初识函数
阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...
- python学习笔记(3)--函数、参数、变量、递归
1.函数基本语法和特性 背景摘要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏出了所有的知识量吗,写出了以下代码 whi ...
- Python基本语法_函数属性 & 参数类型 & 偏函数的应用
目录 目录 前言 软件环境 Python Module的程序入口 函数的属性 Python函数的创建 函数的参数 必备参数 缺省参数 命名参数 不定长参数 匿名参数 偏函数的应用 前言 Python除 ...
- python之列表作为函数的参数
函数参数为 列表或者字典 传递一个列表,例如 [1, 2, 3] 将此传给函数get_sum() 求出 各个元素之和 传递一个字典,打印出key/value的对应关系表: #!/usr/bin/env ...
- python之路(九)-函数装饰器
装饰器 某公司的基础业务平台如下: def f1(): print('这是f1业务平台') def f2(): print('这是f2业务平台') def f3(): print('这是f3业务平台' ...
- python学习笔记之函数的参数
函数的参数有位置参数和关键字参数,位置参数一定要在关键字参数的前面,位置参数的优先级是高于关键字参数的,否则会报错 def my_abs(a,b): print(a) print(b) my_abs( ...
- python之路之函数03
一 首先我们学到函数的嵌套调用与定义:1 函数嵌套 # def f1(): # print(f1)#我们这里如果输入f1那么输出的则是f1这个变量(函数)所在的地址.如果输入一个字符的话那么就直接输出 ...
- python 之路之函数01
一 函数 1 那么要想学习函数,我们首先应该知道函数是什么? 我们这里所说的函数与数学中的函数是不同的概念,在这里我们可以把函数看成我们写代码过程中需要用到的工具. 2 那么这个‘工具’有什么 ...
- python 基础 4.1 函数的参数
#/usr/bin/python #coding=utf-8 #@Time :2017/10/24 9:09 #@Auther :liuzhenchuan #@File :函数的参数.py # ...
随机推荐
- Python import用法以及与from...import的区别
Python import用法以及与from...import的区别 在python用import或者from...import来导入相应的模块.模块其实就是一些函数和类的集合文件,它能实现一些相应的 ...
- 07_jQuery对象初识(五)事件(非常重要)
1. 目前为止学过的绑定事件的方式 1. 在标签里面写 onclick=foo(this); 2. 原生DOM的JS绑定 DOM对象.onclick=function(){...} 3. jQuery ...
- Groupadd- Linux必学的60个命令
1.作用 groupadd命令用于将新组加入系统. 2.格式 groupadd [-g gid] [-o]] [-r] [-f] groupname 3.主要参数 -g gid:指定组ID号. -o: ...
- Inoic 滚动条问题
1.看图说话 2.没有超过一个页,怎样去掉图中的滚动条? 3修改后预览效果
- LUOGU P2962 [USACO09NOV]灯Lights
题目描述 Bessie and the cows were playing games in the barn, but the power was reset and the lights were ...
- js算法之把一个数组按照指定的数组大小分割成若干个数组块
题目描述: 把一个数组arr按照指定的数组大小size分割成若干个数组块. 例如: chunk([1,2,3,4],2)=[[1,2],[3,4]]; chunk([1,2,3,4,5 ...
- 转:Linux fork与vfork的深入分析
源地址:http://linux.chinaitlab.com/c/831529.html 一)fork的概述 .操作系统对进程的管理,是通过进程表完成的.进程表中的每一个表项,记录的是当前操作系统中 ...
- 【MFC学习笔记】菜单和工具栏
1 菜单栏 1.1 在对话框中加入菜单: 打开Resource View资源视图, *.rc文件—Add Resources —Menu,即可加入菜单. 注:①菜单项中含有“...”表示点击后会弹出对 ...
- 作业test
views Car <template> <div class="car"> <Nav/> <div class="wrap&q ...
- 你真的会用Action的模型绑定吗?
在QQ群或者一些程序的交流平台,经常会有人问:我怎么传一个数组在Action中接收.我传的数组为什么Action的model中接收不到.或者我在ajax的data中设置了一些数组,为什么后台还是接收不 ...