Python函数定义.匿名函数.嵌套函数.闭包.装饰器 目录 Python函数定义.匿名函数.嵌套函数.闭包.装饰器 函数核心理解 1. 函数定义 2. 嵌套函数 2.1 作用 2.2 函数变量作用域 3. 闭包 3.1 特点 3.2 实例 4. 装饰器 4.1 形式和作用 4.2 装饰器函数写法 4.3 装饰器用法实例 5. 匿名函数 5.1 格式 5.2 使用原则 5.3 使用方式 6. python函数式编程 6.1 概念 6.2函数式编程的优缺点 6.3 map().filter() 和…
一.名称空间和作用域 名称空间:Python所有有关命名的操作都是在操作名称空间,例如变量名,函数名 1.内置名称空间:Python解释器提供好的功能,解释器启动跟着一起启动,是全局作用域 2.全局名称空间:Python中顶行写的,不在函数内部定义的,都是全局名称空间,在运行的时候会产生名称空间,是全局作用域 3.局部名称空间:在一个小范围定义,只能当前范围及其子空间内运行,例如在函数内部定义的,是局部作用域 二.函数的嵌套 1.函数的嵌套调用 2.函数的嵌套定义 x = 11111111111…
一:函数调用顺序:其他高级语言类似,Python 不允许在函数未声明之前,对其进行引用或者调用错误示范: def foo(): print 'in the foo' bar() foo() 报错: in the foo Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> foo() File "<pyshell#12>", line…
一.名称空间与作用域 名称空间:存放名字的地方,准确的说名称空间是存放名字与变量值绑定关系的地方 内置名称空间:在python解释器启动时产生,存放一些python内置的名字 全局名称空间:在执行文件时产生,存放文件级别定义的名字 x=1 def func(): y=2 def f1():pass print import os class Foo: pass if x==1:z=3 del x 局部名称空间:在执行文件的过程中,如果调用了函数,则会产生该函数的局部名称空间 用来存放该函数内定义…
函数的嵌套 调用:在函数中调用函数 定义:在函数中定义函数 地址:函数名有内存地址,内存地址可赋值 示例 a = 1 def outer(): a = 1 def inner(): a = 2 def inner2(): nonlocal a a += 1 inner2() print('##a## : ', a) inner() print('**a** : ',a) OUTER = outerOUTER() print('全局 :',a) nonlocal:声明了一个上层局部变量(寻找上层最…
高阶函数定义 1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名 3.满足上述条件任意一个都可以称之为高阶函数 一.函数的接收参数是一个函数名 import time def foo(): time.sleep(3) print('name is charon') def test(func): #print(func) start_time=time.time() func() stop_time=time.time() print('run time %s' %(stop_time…
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Python是纯粹的自由软件,源代码和解释器CPython遵循 GPL(GNU General Public License)协议.关于python的哲学:python崇尚:"优雅"."明确"."简单",Python是用最简单最优雅最明确的方法来解决问题…
函数嵌套: 函数嵌套: 嵌套指的是,一个物体包含另一个物体,函数嵌套就是一个函数包含另一个函数 按照函数的两个阶段 嵌套调用 指的是在函数的执行过程中调用了另一个函数,其好处可以简化外层大函数的代码,使得结构更清晰 可以将一个大的复杂的功能拆成多个简单的小功能 嵌套调用的好处: def max(a,b): if a>b: return a return b print(max(100,200)) 嵌套调用: def max_3(a,b,c): temp=max(a,b) m=max(temp,c…
function fun(n,o) { console.log(o) return { fun:function(m){ return fun(m,n); } }; } ); a.fun(); a.fun(); a.fun();//undefined,?,?,? ).fun().fun().fun();//undefined,?,?,? ).fun(); c.fun(); c.fun();//undefined,?,?,? //问:三行a,b,c的输出分别是什么? 这是一道非常典型的JS闭包问题…
1. 嵌套函数 子函数可以继承父函数的变量 父函数返回子函数 子函数返回结果 看例子如下:结果是一个字符串fun1+fun2 #!/usr/bin/env python # coding=utf-8 def fun1(a1): def fun2(a2): return a1+a2 return fun2 #定义一个变量f,fun1的返回是fun2函数,所以f变量就指向了fun2函数,同时fun2继承了a1变量的值"fun1+" f=fun1('fun1+') #此时f已经指向了函数fu…
嵌套函数就是在一个函数里再嵌套一个或多个函数 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" def First(): print("in the first") def Second(): print("in the second") def Third(): print("in the third") Third() Second() First() 运行结果 如果要修…
递归函数 在函数内部,可以调用其他函数.但是在一个函数在内部调用自身,这个函数被称为递归函数 def calc(n): print(n) if int(n/2) == 0: #结束符 return n return calc(int(n/2)) #调用函数自身 m = calc(10) print('----->',m) #输出结果 10 5 2 1 -----> 1 #最后返回的值 递归特性: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 3…
函数是组织好的.可重复使用的.用于执行指定任务的代码块.本文介绍了Go语言中函数的相关内容. 介绍 Go语言中支持函数.匿名函数和闭包,并且函数在Go语言中属于“一等公民”. 函数可以赋值给变量 函数可以被当做参数传入函数 函数可以被调用 函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数)(返回值){ 函数体 } // 函数可以无参数, 无返回值 函数名:由字母.数字.下划线组成.但函数名的第一个字母不能是数字.在同一个包内,函数名也称不能重名(包的概念详见…
var myObj = {    specialFunction: function () {        console.log("specialFunction.");    },    anotherSpecialFunction: function () {        console.log("anotherSpecialFunction.");    },    getAsyncData: function (cb) {        cb();  …
1 递归 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. def calc(n): print(n) if int(n / 2) == 0: return n return calc(int(n / 2)) calc(10) #输出:10 5 2 1 递归特性: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实…
在一些类似C语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的(也就是我们不能在代码段外直接访问代码段内声明的变量),我们称之为块级作用域,然而,不同于这类型的编程语言,javascript是没有块级作用域.取而代之的,javascript使用的是块级作用域:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. 在如下的所示的代码中,在不同位置定义了变量 i . j 和 k ,它们都在同一个作用域内——这三个变量在函数体内均是有定义…
函数简单说明 # 函数即"变量" # 高阶函数 # a.把一个函数名当做实参传给另一个函数(在不修改被装饰函数的源代码的情况下,为其添加功能) # b.返回值中包含函数名(不修改函数的调用方式) ''' import time def bar(): print("in the bar!") time.sleep(2) def foo(func): start_time = time.time() func() #根据内存地址,执行代码 stop_time = tim…
定义一个函数相信大家已经很熟悉了, 在javascript里的函数也是非常重要的, 使用率非常高, 有几种函数不是很好理解 一, 匿名函数 var remove = function(num1) { return num1; } var fun = remove(5); console.log(fun); 这里定义的这个函数没有设置函数名, 在使用的时候要使用变量调用这个函数. 最后的输出结果: 5 二, 回调函数, 传递的参数可以定义成任意的对象, 而在这里, 其中的一个参数就是一个函数 fu…
function createCompareFun(propertyName){ return function(object1,object2){ var value1 = object1[propertyName]; var value2 = object2[propertyName]; if(value1>value2){ return 1; }else if(value1<value2){ return -1; }else{ return 0; } }; } var data = [{…
今天的内容整理共有5部分 一.命名关键字参数 二.函数对象 三.函数的嵌套 四.名称空间与作用域 五.闭包函数 一.命名关键字参数 # 命名关键字参数: 在定义函数时,*与**之间参数称之为命名关键字参数 # 特点: # 在调用函数时,命名关键字参数必须按照key=value的形式传值 # # def func(x,*,y=1,z): # print(x) # print(y) # print(z) # # func(1,z=2) def func(a,b=2,*args,c,**kwargs)…
嵌套函数: python允许创建嵌套函数.也就是说我们可以在函数里面定义函数,而且现有的作用域和变量生存周期依旧不变. 例子: #encoding=utf-8 def outer():    name="python" def inner():#outer函数内部定义的函数        print name    return inner()#返回该内部函数 outer() 结果: 理解: 在inner函数中,python解析器需要找一个叫name的本地变量,查找失败后会继续在上层的…
一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素二 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input('>>: ').strip() if choice in dic: dic[choice]() 二…
目录 嵌套函数 定义 名称空间的三大类(只存变量名) 名称空间加载顺序 变量名的查找顺序为 作用域 嵌套函数 定义 函数内部定义的函数,无法在函数外部使用内部定义的函数. def f1(): def f2(): print('from f2') f2() f2() # NameError: name 'f2' is not defined def f1(): def f2(): print('from f2') f2() f1() ''' from f2 ''' 名称空间的三大类(只存变量名)…
匿名函数 lambda的用法: lambda x:x+1 解释,同等于以下函数 def test(x): return x+1 因为没有函数名,所以称为匿名函数 只适用于简易的逻辑,复杂逻辑无法实现 lambda一般是嵌套在其他内容中,只是为了简化代码 函数作用域 理解全局变量和局部变量的概念 全局变量,定义的变量无缩进,即在代码层最外围: 局部变量,定义的变量有缩进,属于某个代码块中. 全局变量: a  = 1 def test(): print(a)    #结果为1 print(a)   …
看到了一个16进制转换的小知识点,就验证了一下运行结果. #!/usr/bin/env python # coding:utf-8 # 看到了16进制转换的问题.顺便验证一下. a = 255 b = 1001 print(hex(a), hex(b)) c = 0xff d = 0x3e9 print(int(c),int(d)) 继续往前走, 学习一下global关键字 参考: http://www.pythonav.com/special/100-18.html 注意: global 是不…
在python中一共有两种作用域:全局作用域和函数作用域全局作用域:在全局都有效,全局作用域在程序执行时创建,在程序执行结束时销毁:所有函数以外的区域都是全局作用域:在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被访问: 函数作用域:函数作用域在函数调用时创建,在调用结束时销毁,函数每调用一次就会产生一个新的函数作用域:在函数作用域中定义的变量,都是局部变量,只能在函数内部被访问:在函数中为变量赋值时,默认都是为局部变量赋值:如果需要在函数内部修改全局变量,则需要使用gl…
匿名函数的定义 全局变量和局部变量的概念 global(全局变量)和 nonlocal(局部变量) 闭包.递归.回调 匿名函数 匿名函数  lambda 语法规则:lambda   参数 : 表达式 lambda匿名函数的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式 lambda返回值是一个函数的地址,也就是函数对象 函数作用域 函数内部 函数内部的变量,作用域只在函数内部,函数内部不可以直接更改函数外部的变量 global(全局变量) 函数内部如果需要改变全局变量,就需要使用…
小编已经有一段时间没有更新文章了,最近一直在考虑接下来要更新什么内容.接下来,小编会围绕以下三个方面更新文章.实际项目中遇到的问题和解决方案.Vue源码解析.代码重构.关于数据可视化.小编也会按照这个顺序,逐步的去更新.期待着一起进步. 今天就先和大家一起聊一聊我理解的闭包.在聊这个问题之前,先了解一下变量的定义域. 在js中,变量定义域有全局作用域和局部作用域之说.es6中新出现的变量声明关键字,就是为了解决部分变量作用域混乱引入的.全局作用域在这就不谈了.主要说说函数的作用域. 一.作用域…
内嵌函数:函数里又嵌套一个函数 def fun1(): print('fun1()在被调用') def fun2(): print('fun2()在被调用') fun2() 闭包: 闭包是函数里面嵌套函数,外层函数返回里层函数,这种情况称之为闭包 闭包是概念,不是某种函数类型,和递归的概念类似,就是种特殊的函数调用 闭包可以得到外层函数的局部变量,是函数内部和函数外部沟通的桥梁 def fun4(a): print(a) def fun5(): print(a,11) return fun5 #…
函数最重要的目的是方便我们重复使用相同的一段程序.将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. def my_len(): def 关键字 li=[1,2,3,4,5,6] count = 0 for i in li: count+=1 return count return 关键字 set=my_len() 函数的调用以及返回值的接收 print(set) 写函数时最好不要在函数中打印,要尽量以功能为导向. 返回值: 一 没有返回值的…