一、名称空间和作用域

    名称空间:Python所有有关命名的操作都是在操作名称空间,例如变量名,函数名
1、内置名称空间:Python解释器提供好的功能,解释器启动跟着一起启动,是全局作用域
2、全局名称空间:Python中顶行写的,不在函数内部定义的,都是全局名称空间,在运行的时候会产生名称空间,是全局作用域
3、局部名称空间:在一个小范围定义,只能当前范围及其子空间内运行,例如在函数内部定义的,是局部作用域

二、函数的嵌套

1、函数的嵌套调用
2、函数的嵌套定义
x = 1111111111111111
def f1():
#x=1
print('------>f1 ',x)
def f2():
#x = 2
print('---->f2 ',x)
def f3():
x=3
print('-->f3 ',x)
f3()
f2()
f1()

三、函数的使用

1、函数可以被当做变量赋值
def foo():
print("foo")
print(foo) #打印foo的内存地址空间,函数的名字在不带小括号时表示的是函数的内存地址
f=foo #把foo的内存地址空间做值赋值给f变量
print(f) #打印f,起始就是打印foo的内存地址空间
f() #f()事实上就是执行foo函数,等同于foo() 打印结果为
<function foo at 0x0000000000B91378> #print(foo)的结果
<function foo at 0x0000000000B91378> #print(f)的结果
foo #执行f()的结果,实际就是执行foo()的结果

2、函数可以当做参数传递

def foo():
print("foo")
print(foo) #打印foo的内存地址空间
f=foo #把foo的内存地址空间做值赋值给f变量
print(f) #打印f,起始就是打印foo的内存地址空间
f() #f()事实上就是执行foo函数,等同于foo() def bar(func):
print(func) #这个是打印foo()函数的内存地址
func() #func是foo的内存地址,加()实际就是执行foo()函数
return func
f = bar(foo) #这个是获取bar的返回值
print(f) #打印f,就是打印bar()的返回值,就是foo()的内存地址,和print(func)相同
f() #f是bar def bar(func):
print(func) bar(foo()) #这个是先执行foo()行数,执行函数里的代码,先打印foo,然后把foo()的返回值作为bar()函数的实参传递给bar,foo()没有返回值,所以是None
#结果就是先输出一个 "foo" 然后bar(None),把none传递给bar()函数,打印No

四、闭包:内部函数的代码包含对外部作用域的引用,但一定不是对全局作用域的引用,闭包函数一定有__closure__方法

x=1
def f1():
x=2
y=3
def f2():
print(x)
y
return f2
f=f1() #f是f2的内存地址
f() #f()就是f2(),可以保证f2()可以在任何位置执行,而不受作用域的限制
print(f.__closure__) #打印结果是元组,元组个数代表的是闭包所引用的上次函数的元素个数
print(f.__closure__[0]) #结果是元组,可以使用索引的方式查看
print(f.__closure__[0].cell_contents) #查看指定元组所对应的应用上层参数的值
def init(func):
def wrapper(*args,**kwargs):
res=func(*args,**kwargs)
return res
return wrapper

Python基础--函数的嵌套和闭包的更多相关文章

  1. Python中函数的嵌套及闭包

    函数的嵌套 调用:在函数中调用函数 定义:在函数中定义函数 地址:函数名有内存地址,内存地址可赋值 示例 a = 1 def outer(): a = 1 def inner(): a = 2 def ...

  2. python基础—函数嵌套与闭包

    python基础-函数嵌套与闭包 1.名称空间与作用域 1 名称空间分为: 1 内置名称空间   内置在解释器中的名称 2 全局名称空间   顶头写的名称 3 局部名称空间 2 找一个名称的查找顺序: ...

  3. python基础,函数,面向对象,模块练习

    ---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? #  [] {} () None 0 2,位和字节的关系? # ...

  4. python基础—函数装饰器

    python基础-函数装饰器 1.什么是装饰器 装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能. 装饰器的返回值是也是一个函数对象. 装饰器经常用于有切 ...

  5. python基础——函数的参数

    python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...

  6. Python基础-函数参数

    Python基础-函数参数 写在前面 如非特别说明,下文均基于Python3 摘要 本文详细介绍了函数的各种形参类型,包括位置参数,默认参数值,关键字参数,任意参数列表,强制关键字参数:也介绍了调用函 ...

  7. Python之函数2 嵌套,作用域和闭包(Day12)

    一.函数对象 1.函数是第一类对象,即函数可以当做数据传递 1.1 可以被引用 1.2 可以当做参数传递 1.3 返回值可以是函数 1.4 可以当做容器类型的元素 二.函数的嵌套 1.函数嵌套的调用: ...

  8. Python基础(7)_闭包函数、装饰器

    一.闭包函数 闭包函数:1.函数内部定义函数,成为内部函数, 2.改内部函数包含对外部作用域,而不是对全局作用域名字的引用那么该内部函数成为闭包函数 #最简单的无参闭包函数 def func1() n ...

  9. Python基础(函数部分)-day04

    写在前面 上课第四天,打卡: 加勒比海盗今天上映:端午节公司发的粽子很有范! 一.函数的基本概念 - 函数是什么?  函数,就是一个'锤子',一个具有特定功能的'锤子',使用者可以在适当的时候使用这个 ...

随机推荐

  1. Java使用对象流读取文件的问题

    把对象进行持久化(把对象存到本地)要用到对象流进行处理,在用对象流处理过程中,在写对象和读对象时候遇到了很多问题,分享一下. 我们处理对象数据的时候不可能只处理一个对象,在系统运行的时候,可能产生的对 ...

  2. eclipse打包

  3. 排序算法Java实现(希尔排序)

    算法描述:先将待排序序列的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序序列“基本有序”后,再对所有元素进行一次直接插入排序. packa ...

  4. 【JS】 Javascript与BOM的互动 寻路

    JS BOM 之前提到过JS和DOM之间的互动方法.而BOM(Browser Object Module)是浏览器的对象模型,它也可以和JS进行互动.也就是说,JS还可以和浏览器进行互动.因为现代主流 ...

  5. 小细节,大用途,35 个 Java 代码性能优化总结!

    前言: 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用 ...

  6. Web安全概述

    互联网刚开始是安全的,但是伴随着黑客(Hacker)的诞生,互联网变得越来越不安全.任何一个事情都有两面性,黑客也有好有坏,好的黑客叫白帽子,坏的黑客叫黑帽子.与此同时,随着Web技术发展越来越成熟, ...

  7. Beta冲刺 第三天

    Beta冲刺 第三天 1. 昨天的困难 昨天的困难主要集中在对Ajax的使用上,不熟悉这种语法,所以也就浪费了时间,导致昨天的批量删除没有完全完成. 2. 今天解决的进度 潘伟靖: 1.完善了昨天没写 ...

  8. 团队作业7——第二次项目冲刺(Beta版本12.06)

    项目每个成员的进展.存在问题.接下来两天的安排. 已完成的内容:队员每个人提出对接下来需要做的事情的看法和意见,将需要做的任务更新到了leangoo中进行管理,产品完成了界面优化的设计,测试复现了之前 ...

  9. 201621123031 《Java程序设计》第4周学习总结

    Week04-面向对象设计与继承 1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 关键词:继承.覆盖.多态.抽象 1.2 尝试使用思维导图将这些关键词组织起来. 1.3 可选: ...

  10. nyoj 邮票分你一半

    邮票分你一半 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述      小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明.每张邮票上都有分值,他们想把这些邮票分 ...