注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云淡风轻

云淡风轻近午天,傍花随柳过前川。

 
 
 

日志

 
 

变量作用域的小tip  

2007-01-14 19:40:53|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在C/C++里,这样的程序是很正确的:
         2 int a;
         3
         4 int g(){
         5     a = 1;
         6     int a = 2;
         7 }
         8 int main(){
         9     return 0;
        10 }
不过在python里,情况有了一点不同。

>>> g()
>>> def g():
...     print a
...     a = 4
...     print a
...
>>> g()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<stdin>", line 2, in g
UnboundLocalError: local variable 'a' referenced before assignment

在一个函数里的变量名,要么是一个全局的变量,要么是局部的变量,但不能两者兼具。

很久前在js里也遇到过这样的问题,后来在《javascr ipt: the definitive guide》里找到答案。今天才发现python里的变量名也是同样规则。
这是《javascr ipt: the definitive guide》的代码:
var scope = "global";
function f( ) {
alert(scope); //Displays "undefined", not "global"
var scope = "local";// Variable initialized here, but defined dverywhere
alert(scope); //Displays "local"
}
f( );
ps:刚才在编辑html代码的时候,发现style里又不能设置backgroud-color,这个可视化编辑器上面的背景颜色的按钮,只能设置全文的背景,不能设置一段文章的背景。比较不爽
ps2: 预览之后,才发现javascr ipt这个单词被过滤掉了,明显是怕被注入js代码了。只好把一个单词分开写,不写成java script,因为我觉得js和java是没有关系的。


  评论这张
 
阅读(99)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017