标签:python color 作用域链 name src ons ret jpg 练习
在其他语言中比如JAVA,C语言等是以块为作用域{}
JS作用域是以函数做为作用域,python也是以函数为作用域。
java中代码
如下代码会直接报错,因为name没有定义,以块为作用域,及在if (){}中name是定义的,在 外面没有定义
public void Func(){
if (1==1){
string name="java";
}
console.writeline(name)
}
Func() 在其他语言的时候会报错(java,c等)
# -*- coding:utf-8 -*-
__author__ = ‘shisanjun‘
def func():
if (1==1):
name="java"
print(name) #这里不会报错
func
print(name) #这里报错,没有定义
------------------------------
Traceback (most recent call last):
File "E:/python练习/day15/s1.py", line 9, in <module>
print(name) #这里报错,没有定义
NameError: name ‘name‘ is not defined
1) JS作用域是以函数做为作用域
2) 函数的作用域在函数未被调用之前,已经创建
3)函数的作用域存在作用域链(函数嵌套函数),并且也是在被调用之前创建
4) 函数内局部变量提前申明
function func(){
console.log(xx00);//只声明,没有付值
var xx00="alex";
}
func()
结果:undefined
var xx00;
function func(){
console.log(xx00);//只声明,没有付值
var xx00="alex"; //局部变量
}
func() //这里调用的时候是只有声明没有赋值,所以是undefinde
function func(){
console.log(xx00);
}
func()
VM754:2 Uncaught ReferenceError: xx00 is not defined//直接报错了,没有定义变量
at func (<anonymous>:2:21)
at <anonymous>:5:5
直接报错
1)
xo="alex"
function func(){
var xo="eric";
function inner(){
console.log(xo)
}
return inner //这里返回的是inner函数
}
var ret=func()
ret()//第三点
结果:eric
2)
xo="alex"
function func(){
var xo="eric";
function inner(){
console.log(xo)
}
var xo="tony" 上面的inner并没有执行,xo值就成了tony
return inner //这里返回的是inner函数
}
var ret=func()
ret()//第三点
结果:tony
标签:python color 作用域链 name src ons ret jpg 练习
原文地址:http://www.cnblogs.com/lixiang1013/p/7617217.html