对Python有个大大的疑问!

对Python有个大大的疑问!

PYTHON其他都好,
既然PYTHON是脚本语言,个人以为
1.为什么 python的语法要以缩进呢?

好像这样不好吧,语法太严格,没有灵活性.
我是PHP刚转过来的,PYTHON开发WEB时怎么套模板啊,语法太严格好像不是好事哦.
不像PHP本身就是模板语言.
PYTHON是怎么套模板的呢?

2.类定义时为什么一定要传个self啊,并且还默认实例化的时候帮你传了,真晕.
不知道为什么要这么设计啊.
就是这样设计的,这得问作者去了。
1.为什么 python的语法要以缩进呢?
在C语言中,有多种风格的缩进方式,如下所示:

QUOTE:
int main()
{
   if (1 < 2) {
       printf("true");
   } else {
       printf("false");
   }
}



QUOTE:
int main()
{
   if (1 < 2)
     {
       printf("true");
     }
   else
     {
       printf("false");
     }
}

python中只有一种,易于交流:

QUOTE:
def main():
    if 1 < 2:
       printf("true")
    else:
       printf("false")

另外对于下面的嵌套if语句来说,else的对应if语句是一目了然的。

QUOTE:
def main():
    if a < b:
        if b < c:
            pass
    else:
        pass

2.类定义时为什么一定要传个self啊,并且还默认实例化的时候帮你传了,真晕.
python中的局部变量是不需要声明就可以使用,因此必须通过self引用成员变量,否则python无法区分一个变量是局部变量还是成员变量,在下例中:

[Copy to clipboard] [ - ]
CODE:
class Foo:
    def __init__():
        bar = 123

如果可以直接引用成员变量,那么在__init__方法中,变量bar究竟是局部变量还是成员变量?[

PS:很多人使用python的explicit哲学解释这个问题,并建议python设计者去掉显示的self,实际上,由于python中局部变量是不需要声明的这一特性,python不可能去掉那个看上去仿佛是多余的self。

难道你写php时候不缩进?

py只是严格的让你养成这个好习惯,所以不管什么样的py代码,至少第一眼看上去很整齐,如果都是乱七八糟的,相信你自己都看不下去了。

self也只是习惯上的,呵呵,可以声明类内部变量。如果你方法没有的话也一样用哦。


QUOTE:
原帖由 xiaoyu9805119 于 2008-7-28 16:40 发表
难道你写php时候不缩进?

py只是严格的让你养成这个好习惯,所以不管什么样的py代码,至少第一眼看上去很整齐,如果都是乱七八糟的,相信你自己都看不下去了。

self也只是习惯上的,呵呵,可以声明类内部 ...

这个确实很好,不过
想知道Python是怎么套模板啊!
PHP嵌入HTML就这样
<?=$varname1?>

还有,对于self这个关键字,刚刚学有点转不过来吧.呵呵.

我对Python缩进的分段方式也存怀疑态度;
self嘛,确实很麻烦,也让人费解……


QUOTE:
原帖由 cplusplus2008 于 2008-7-28 16:24 发表
1.为什么 python的语法要以缩进呢?
在C语言中,有多种风格的缩进方式,如下所示:




python中只有一种,易于交流:


另外对于下面的嵌套if语句来说,else的对应if语句是一目了然的。


2.类定义 ...

谢谢楼上的回答,贴了这么多,向你学习.
对于PYTHON的缩进还是比较感冒,好像不容易嵌入HTML.
对于self刚学,还是有点转不过来.
个人觉得还是去掉比较好,看着舒服点,
类实例化时,又不需要传self觉得晕.呵呵.


QUOTE:
原帖由 dreamerx2004 于 2008-7-28 17:04 发表
我对Python缩进的分段方式也存怀疑态度;
self嘛,确实很麻烦,也让人费解……

顶,
还好,有个同样观点的.


QUOTE:
原帖由 limodou 于 2008-7-28 16:22 发表
就是这样设计的,这得问作者去了。

貌似这位帅哥没有回答我的问题.

了解了RUBY,纯面向对象,个人不喜欢.
毕竟个人觉得面向对象的思想有其局限性.
加上PYTHON丰富的类库
所以选择了PYTHON.
看了LUA,好像在夹缝中生存.上不如PYTHON,下不如C/c++,感觉晕晕滴.
呵呵,不知道我的观点对波?
欢迎拍砖.
python也是纯OO的
Lua(楼上LUA的可能是指这个,名字大小写不能变的 )其实还是不错的,可以嵌入其他语言,取长补短,个人以为没有夹缝求生存的说法