8月30日学习内容整理:命名空间,作用域,函数名本质,闭包
补充:
三元运算:c= a if a>b else b
相当于: if a>b:
c=a
else:
c=b
结构; if条件成立的结果 if 条件 else if条件不成立的结果
一、命名空间
(1)(按加载顺序)
1、内置命名空间:存放python内部可以直接用的功能,例如:input print while等,是代码运行前就创建的
2、全局命名空间:存放代码的变量和函数名,是在代码运行开始时创建的,从上到下依次加载(除函数里面的名字)
3、局部命名空间:存放函数调用时函数内部的名字,从上到下加载
(2)对变量的使用
1、局部可以用全局的变量,全局不可以用局部的变量
2、对局部来说:a) 自己有的用自己的,自己没有的用全局的
b) 有嵌套时,自己有用自己的,自己没有的往上一级一级找,直至找到为止
二、作用域
(1)内置空间:在任意地方都可以用
(2)全局空间:在写的代码里的任意地方都可以用
(3)局部空间:在自己定义的函数里使用
范围:内置>全局>局部>局部里的局部(嵌套)
(4)作用域链的概念:
(5)global和local的用法
globals代表全局作用域,放在哪都一样,显示所有的变量
locals代表局部作用域,放在函数里只会显示当前函数的变量
(6)修改全局变量值和局部变量值:一般不常用,尤其是全局变量,不要轻易修改
global 修改全局命名空间里的变量值,也是声明全局变量nonlocal 只修改局部命名空间里的 从内部往外部找到第一个对应的变量名
globals() locals() a = 0 def demo1():global aa = 2print(a)demo1() print(a)
def whl1():a=2def whl2():nonlocal aa=3print(a)whl2()print(a)whl1()print(a)
三、函数名的本质1、函数名本质就是个变量名,当变量用就行(1)函数名就代表函数的内存地址,把这个内存地址取出来,就可以调用(2)函数名可以赋值给新变量(3)函数名可以当元素(列表、元组等容器类型)(4)函数名可以做函数的参数(5)函数名可以当做函数的返回值,返回值就是函数的内存地址
2、函数名是第一类对象,这个概念要知道
3、当函数名被赋予变量,元素时,都可以在新变量或者取索引后加括号来调用该函数
def whl():a=123print(a) print(whl) val=whl val() li=[whl] li[0]()
四、闭包
1、概念:内部函数引用了外部函数的变量而非全局变量。这个内部函数就叫闭包
闭包名._ _closure_ _ 会输出闭包使用的所有外部变量(元组类型),可以当作判断是否为闭包的依据,如果没有输出则不是闭包。
转载于:https://www.cnblogs.com/wanghl1011/articles/7453237.html
8月30日学习内容整理:命名空间,作用域,函数名本质,闭包相关推荐
- 1月26日学习内容整理:reverse函数补充,modelform对象补充,form表单参数补充
1.reverse函数中的args参数,必须是一个元组,只有一个元素时必须加逗号,并且args给URL传参数的时候是根据分组传的,所以我们设置的URL中的要传参的正则表达式一定要加括号 2.我们用未绑 ...
- 9月7日学习内容整理:内置函数
一.内置函数 1.作用域相关: (1)globals() 查看全局作用域,显示所有的变量 (2)locals() 查看局部作用域,只会显示当前函数使用的变量 2.迭代器相关: (1)it ...
- 1月8日学习内容整理:JS的作用域和作用域链
补充: 对于编译型语言,是编译一次生成可执行文件来执行多次:对于解释型语言,始终都是编译一次执行一次 python编译时要看有没有赋值操作,没有的话就不编译任何内容:若有赋值操作,才会开辟内存空间,把 ...
- 10月25日学习内容整理:数据操作:增加更新删除,单表查询操作
>>\G是按行显示,必须是大写 >>插入数据:补充另一种插入记录的方法 -->insert into 表名1(字段1,字段2,...) select 字段1,字段2,.. ...
- 1月16日学习内容整理:爬虫框架:Scrapy
@@@老师博客地址::::: http://www.cnblogs.com/linhaifeng/articles/7811861.html 一.介绍 Scrapy一个开源和协作的框架,其最初是为了页 ...
- 9月13日学习内容整理:异常处理
一.异常处理 1.排错:多行报错的时候,真正报错的是最下面:若报错的地方在别人的代码里,注意别人写的代码是不会报错的,还是找自己的错 2.特点:一旦发生异常,程序不会再向下执行 3.处理方法: (1) ...
- 11月17日学习内容整理:jquery文档处理,事件细讲,动画
一.文档处理:下面举例中的B可以是标签也可以是选择器也可以是字符串 >>>添加到指定元素内部的后面 $(A).append(B) // 把B放到A内部元素的最后,A是父节点$(A). ...
- 1月11日学习内容整理:请求库selenium之选择器,等待元素被加载
首先引入: from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdr ...
- 1月17日学习内容整理:Scrapy框架补充之pipeline,去重规则
@@@老师博客::: 关于高性能和scrapy框架 http://www.cnblogs.com/wupeiqi/articles/6229292.html 关于scrapy-reids组件 http ...
最新文章
- Java内存溢出详解之Tomcat配置
- Centos 7 让docker飞一会儿
- java异常类子类和父类的关系
- 减法公式运算法则_人教版数学七年级上册1.3.2有理数的减法视频讲解+知识点+同步练习...
- Linux Crontab 安装使用详细说明
- 计算机应用基础授课提纲,《计算机应用基础》讲授提纲(1).ppt
- python实战演练_《Python高效开发实战》实战演练——
- 数据科学入门与实战:Matplotlib绘图Series
- Android低功耗蓝牙(BLE)使用详解
- 春节档总票房已破50亿 情人节单日票房超14亿
- 21位美国名校学生领袖在湖北了解中国媒体情况
- 【五级流水线CPU】—— 6. 加载存储指令(14)
- 用户态文件系统fuse学习
- python读取pdf内容转word_卧槽!Pdf转Word用Python轻松搞定!
- 一棵树的生物量怎么算_2019玩花园 | 夏天怎么办?
- 直方图规定化python+opencv实现
- 数字电路基础知识——数字IC中的进制问题(原码,反码,补码以及各进制的转换)
- Android聊天软件开发(基于网易云IM即时通讯)——发送视频消息(六)
- class文件与dex文件解析
- 配置git的合并工具mergetool不生成.orig文件