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. Android之RelativeLayout相对布局

    1.相关术语解释 1.基本属性 gravity :设置容器内组件的对齐方式 ignoreGravity : 设置该属性为true的组件,将不受gravity属性的影响 2.根据父容器定位 layout ...

  2. 02_springmvc处理器映射器和适配器(补充)

    一.非注解的处理器映射器 HandlerMapping 负责根据request请求找到对应的Handler处理器及Interceptor拦截器,将它们封装在HandlerExecutionChain ...

  3. 2019-5-24-WPF-源代码-从零开始写一个-UI-框架

    title author date CreateTime categories WPF 源代码 从零开始写一个 UI 框架 lindexi 2019-05-24 15:54:36 +0800 2018 ...

  4. Windows API 第六篇 GetLocalTime

    GetLocalTime获取系统时间信息.函数原型:VOID   WINAPI  GetLocalTime(    __out LPSYSTEMTIME lpSystemTime    ); 先来看S ...

  5. 跟我一起学习webpack输出动态HTML(三)

    跟着之前的项目来 我们没打包一次就会生成一个bundile.js,我们要更新最新的代码不希望有缓存,那么这个时候我们就是更改资源的URL, 每当代码发生变化时,相应的hash也会发生变化.这个时候我们 ...

  6. Inoic 滚动条问题

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

  7. JS的同步和异步加载

    引言 JS的“加载”不能理解为下载,它是分为两个部分:下载,执行.默认的JS加载是同步的,因为浏览器需要一个稳定的DOM结构,而执行JS时可能会对DOM造成改变,所以在执行JS时一定会阻塞HTML的渲 ...

  8. 创建一个欢迎 cookie 利用用户在提示框中输入的数据创建一个 JavaScript Cookie,当该用户再次访问该页面时,根据 cookie 中的信息发出欢迎信息。

    创建一个欢迎 cookie 利用用户在提示框中输入的数据创建一个 JavaScript Cookie,当该用户再次访问该页面时,根据 cookie 中的信息发出欢迎信息. <html> & ...

  9. Android根据联系人姓名首字符顺序读取通讯录

      Android根据联系人姓名首字符顺序读取通讯录 版权声明:本文为Zhang Phil原创文章,欢迎转载!转载请注明出处:http://blog.csdn.net/zhangphil 本文给出了A ...

  10. SDI在自定义的工具栏上添加下拉控件

    0.首先到自己的工具条上新建一个控件,并命名新ID 1.拷贝FlatComboBox.h和FlatComboBox.cpp到工程目录下 2.建立新类 class CTrackerToolBar : p ...