我的Python之旅——《Dive Into Python》读书笔记(一)

Python最近大红大紫了,在朋友建议下决定看一看。这也是我第一次接触脚本语言,决心好好看一把。
下了Python,安装一切顺利,还找了一本书《Dive Into Python》,英文版的,不太妙,不过连猜带蒙再加金山词霸也勉强能够应付,凑合吧。
第一个例子
1:def buildConnectionString(params):
2: """Build a connection string from a dictionary of parameters.
3: Returns string."""
4: return ";".join(["%s=%s" % (k, v) for k, v in params.items()])
5:if __name__ == "__main__":
6: myParams = {"server":"mpilgrim", /
7:  "database":"master", /
8:  "uid":"sa", /
9:  "pwd":"secret" /
10:  }
11: print buildConnectionString(myParams)
按作者的意思,我试着理解了一下。
第1行挺像个函数,估且认为是函数申明吧
那2、3行应该是注释错不了,这么通顺还带标点符号的句子打死我也不信是Python的语句:)
第4行有点难理解了。是要把一个什么东西join起来呢?(k,v)像是一个二维数组,其值来自params.items(),前面的"%s=%s"应该是一种join的形式,剩下的什么意思呢?不明白了,估且放下。
第5行,一个变量是否等于一个字符串?但是变量没见申明啊??
6-10行,总算看到buildConnectionString的params了,“:”隔开的应该是二维数组的两维,每行后面的“/”是什么呢?去掉了也不会出错。
另外一个麻烦的问题是,函数和if都没有限定作用域,它们到底到哪一句结束呢?系统是通过什么来确定作用域的?统统放下不管了,继续下一步。
接下来讲了函数的申明,很容易理解,倒是2.2.1比较有意思,比较了一下各种语言的数据类型(大概作者也是想通过这种比较来体现Python的过人之处吧),有静态类型语言、动态类型语言、强类型语言、弱类型语言,比较结果是只有

Python既具有VBScript这样动态类型语言的方便性,又具有Java这样强类型语言的安全性。很不错,知道为什么选它了吧?:)
文档功能。把注释带入运行时,虽然现在还不清楚这样有什么实质性的好处,不过怎么说都又多了一个选择Python的理由呢。
import语句:导入一个模块。开始觉得这段程序怎么看都像面向过程的,因为没见到熟悉的类申明在什么地方。但是看到2.4节我开始明白些什么了,Every thing is an object!模块也是,甚至函数也是。那么用传统的方式理解,这个

模块应该是被当成一个类了吧,当import(或别的什么时候?)生成了一个对象。还有什么别的方法构造一个类吗?不清楚,看看后文再说。
2.5节,终于讲到作用域的问题了。居然靠缩进的空白来限制作用域,这意味着有相同缩进的语句是属于同一代码块的,相当于用{}括了起来。的确是很有创意的想法,不过我怎么都觉心里不踏实呢?还不太习惯呵呵。后面讲了这样做的

好处,想想也确实是这样,这样的代码块划分方式强迫你必须进行适当的缩进,那无形中就帮助Coder规范了代码。有什么办法,不这么做你就得不到正确的结果。
2.6节,关于__name__这个内置属性。当作为一个模块导入的时候它的值是模块所在的文件名,但你运行模块时,它的值就是"__main__",这样创建测试程序就变得比较容易了,道理和java类中的main大致是一样的。

你可能感兴趣的:(python)