小知识:pyhon的作用域
http://www.cnblogs.com/wupeiqi/p/5649402.html
五句话搞定JavaScript作用域
从JavaScript == pyhon 作用域几乎一致 __ 详解:
一、“JavaScript中无块级作用域”
在Java或C#中存在块级作用域,即:大括号也是一个作用域。
在python \ JavaScript语言中无块级作用域.
# 作用域
# python 无块级别作用域。
# java/c# 不可以生效。
if 1==1:
name='alex'
print(name) #生效.alex
for i in range(10):
name=i
print(name) #9
# python 以函数为作用域。
def func():
name='alex' #name只在代码块中可以引用。
func()
print(name) #不能使用输出,报错。
二、python \JavaScript采用函数作用域
当执行console.log(xo)时,其寻找顺序为根据作用域链从内到外的优先级寻找,
如果内层没有就逐步向上找,直到没找到抛出异常。

四、python \JavaScript的作用域链执行前已创建
python 的作用域在被执行之前已经创建,日后再去执行时只需要按照作用域链去寻找即可。
# 作用域链
# python 作用域在执行前已经确定好。在 所在的作用域,往上找
#例子1、
name='alex'
def f1():
print(name)
def f2():
name='eric'
f1()
f2()
#执行结果:
#alex
例子2、
#原理:但凡是用到了哪个函数,比如f1(),就会从f1()自己的函数往上找。跟你在函数执行放在哪里一点关系都没有。
name='alex'
def f1(): #f1所在的作用域,往上找。
print(name)
def f2():
name='eric' #内部作用域
return f1
ret =f2()
# print(ret)
ret()
#结果
# <function f1 at 0x0000026C7D81DF28>
# alex
新浪面试题:
# 例子3 进阶.
li=[x+100 for x in range(10) if x >6 ]
print(li)
#执行结果:
# [107, 108, 109]
# 新浪面试题:
# 以lambda 为元素的列表 li=[函数,函数,函数, ]
li1=[lambda :x for x in range(4)] #li 列表中的元素,【函数,函数,函数】,
li2=[lambda :1]
li3=[x for x in range(10)]
print(lambda :9)
print(li1[0]) #生成一个函数名,并没有执行。
ret=li1[0]()
print(ret)
print(li2[0]())
print(li3)
###########
print([lambda :9,][0]()) #根据内容——自己进行定义的lambda()执行函数。
#执行结果:
# <function <listcomp>.<lambda> at 0x00000263D1CA80D0>
# 3
# 1
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 9
小知识:pyhon的作用域的更多相关文章
- s性能优化方面的小知识
总结的js性能优化方面的小知识 前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够 ...
- JS的基本类型(小知识)
一:js中的基本类型: 基本类型:boolen, string ,number,null,undefined 引用类型:object,和函数 二.undedifned和null的区别: 1 undef ...
- js中级小知识1
首先我们复习之前的小知识,本期博客与之前有关 js数据类型 基本数据类型:string undefined null boolean numbe ...
- 【C#小知识】C#中一些易混淆概念总结(三)---------结构,GC,静态成员,静态类
目录: [C#小知识]C#中一些易混淆概念总结 [C#小知识]C#中一些易混淆概念总结(二) ---------------------------------------分割线----------- ...
- es6 一些小知识
本人最近被es6感兴趣了,学习一些,以下就是自己总结的一些小知识 1.当你在百度输入"es6"关键字,点击进入es6入门,首先你需要知道怎样学习的顺序,先看第21章Module语法 ...
- 蓝牙Bluetooth技术小知识
蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...
- HTML+CSS中的一些小知识
今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...
- iOS APP开发的小知识(分享)
亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...
- Unix系统小知识(转)
Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...
- salesforce 零基础开发入门学习(十)IDE便捷小知识
在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...
随机推荐
- C++ 类的继承六(多继承的二义性--虚基类)
//多继承的二义性--虚基类(了解为主) #include<iostream> using namespace std; /* 多继承在现在的项目开发中一般不使用,他会增加项目的复杂度 * ...
- CVPR(IEEE Conference on Computer Vision and Pattern Recognition)
论文提交时间:11月份中旬左右会议时间:7月份左右 CVPR 2017: 网址:http://cvpr2017.thecvf.com/ 接受论文数:782
- 第二百四十节,Bootstrap巨幕页头缩略图和警告框组件
Bootstrap巨幕页头缩略图和警告框组件 学习要点: 1.巨幕组件 2.页头组件 3.缩略图组件 4.警告框组件 本节课我们主要学习一下 Bootstrap 的四个组件功能:巨幕组件.页头组件.缩 ...
- 日历类Calendar
在早期的JDK版本中,日期(Date)类附有两大功能:(1)允许用年.月.日.时.分.秒来解释日期:(2)允许对表示日期的字符串进行格式化和句法分析.在JDK1.1中提供了类Calendar来完成第一 ...
- mac 干掉Dashboard
打开终端,输入下面的命令: defaults write com.apple.dashboard mcx-disabled -boolean YES 然后再重启一下 Dock,在终端输入 kill ...
- WPF 附加属性的用法 (一)
public class MDCTest { public static DependencyProperty MouseDoubleClickCommandProperty = Dependency ...
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0下面)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40411921.本文出自:[张鸿洋的博客] 1.概述 之前写过一篇博文:Andro ...
- Windows 10 上安装 3D Studio Max 2016 报错的解决办法
在 Windows 10 上安装 3D Stuido Max 2016 报错,无法正常安装,查看日志是 VC 运行时安装错误,经过分析发现在 Windows 10 上已经有这些运行时并且版本比安装包中 ...
- Python创建数组
1 创建数组 array函数 >>> a=([1,2],[3,4]) >>> array(a) array([[1, 2], [3, 4]]) arange函数: ...
- 【BZOJ2653】middle 二分+可持久化线段树
[BZOJ2653]middle Description 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整.给你一个 长度为n的序列s.回答Q个 ...
一、“JavaScript中无块级作用域”
# 作用域
# python 无块级别作用域。
# java/c# 不可以生效。
if 1==1:
name='alex'
print(name) #生效.alex
for i in range(10):
name=i
print(name) #9
# python 以函数为作用域。
def func():
name='alex' #name只在代码块中可以引用。
func()
print(name) #不能使用输出,报错。
二、python \JavaScript采用函数作用域

四、python \JavaScript的作用域链执行前已创建
python 的作用域在被执行之前已经创建,日后再去执行时只需要按照作用域链去寻找即可。
# 作用域链
# python 作用域在执行前已经确定好。在 所在的作用域,往上找
name='alex'
def f1():
print(name)
def f2():
name='eric'
f1()
f2()
#执行结果:
#alex
#原理:但凡是用到了哪个函数,比如f1(),就会从f1()自己的函数往上找。跟你在函数执行放在哪里一点关系都没有。
name='alex'
def f1(): #f1所在的作用域,往上找。
print(name)
def f2():
name='eric' #内部作用域
return f1
ret =f2()
# print(ret)
ret()
#结果
# <function f1 at 0x0000026C7D81DF28>
# alex
# 例子3 进阶.
li=[x+100 for x in range(10) if x >6 ]
print(li)
#执行结果:
# [107, 108, 109]
# 新浪面试题:
# 以lambda 为元素的列表 li=[函数,函数,函数, ]
li1=[lambda :x for x in range(4)] #li 列表中的元素,【函数,函数,函数】,
li2=[lambda :1]
li3=[x for x in range(10)]
print(lambda :9)
print(li1[0]) #生成一个函数名,并没有执行。
ret=li1[0]()
print(ret)
print(li2[0]())
print(li3)
###########
print([lambda :9,][0]()) #根据内容——自己进行定义的lambda()执行函数。
#执行结果:
# <function <listcomp>.<lambda> at 0x00000263D1CA80D0>
# 3
# 1
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 9
总结的js性能优化方面的小知识 前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够 ...
一:js中的基本类型: 基本类型:boolen, string ,number,null,undefined 引用类型:object,和函数 二.undedifned和null的区别: 1 undef ...
首先我们复习之前的小知识,本期博客与之前有关 js数据类型 基本数据类型:string undefined null boolean numbe ...
目录: [C#小知识]C#中一些易混淆概念总结 [C#小知识]C#中一些易混淆概念总结(二) ---------------------------------------分割线----------- ...
本人最近被es6感兴趣了,学习一些,以下就是自己总结的一些小知识 1.当你在百度输入"es6"关键字,点击进入es6入门,首先你需要知道怎样学习的顺序,先看第21章Module语法 ...
蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...
今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...
亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...
Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...
在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...
//多继承的二义性--虚基类(了解为主) #include<iostream> using namespace std; /* 多继承在现在的项目开发中一般不使用,他会增加项目的复杂度 * ...
论文提交时间:11月份中旬左右会议时间:7月份左右 CVPR 2017: 网址:http://cvpr2017.thecvf.com/ 接受论文数:782
Bootstrap巨幕页头缩略图和警告框组件 学习要点: 1.巨幕组件 2.页头组件 3.缩略图组件 4.警告框组件 本节课我们主要学习一下 Bootstrap 的四个组件功能:巨幕组件.页头组件.缩 ...
在早期的JDK版本中,日期(Date)类附有两大功能:(1)允许用年.月.日.时.分.秒来解释日期:(2)允许对表示日期的字符串进行格式化和句法分析.在JDK1.1中提供了类Calendar来完成第一 ...
打开终端,输入下面的命令: defaults write com.apple.dashboard mcx-disabled -boolean YES 然后再重启一下 Dock,在终端输入 kill ...
public class MDCTest { public static DependencyProperty MouseDoubleClickCommandProperty = Dependency ...
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40411921.本文出自:[张鸿洋的博客] 1.概述 之前写过一篇博文:Andro ...
在 Windows 10 上安装 3D Stuido Max 2016 报错,无法正常安装,查看日志是 VC 运行时安装错误,经过分析发现在 Windows 10 上已经有这些运行时并且版本比安装包中 ...
1 创建数组 array函数 >>> a=([1,2],[3,4]) >>> array(a) array([[1, 2], [3, 4]]) arange函数: ...
[BZOJ2653]middle Description 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整.给你一个 长度为n的序列s.回答Q个 ...