zoukankan      html  css  js  c++  java
  • Python学习之二:《Dive in Python》学习笔记一

    为了丰富一下自己的视野,最近在利用《dive in python》这本书学习Python,下面是我的读书笔记第一篇:

    首先来看一个Python的函数以便对Python有一个第一印象:

    代码
    1 def buildConnectionString(params):
    2 """ Build a connection string from a dictionary of paramters
    3 return string. """
    4 return ";".join(["%s=%s" % (k,v) for k,v in params.items()])
    5  if __name__ == "__main__":
    6 myParams= {"server":"local",\
    7 "database":"master",\
    8 "user":"sa",\
    9 "password":"123"\
    10 }
    11 print buildConnectionString(myParams)

    上面是利用Python语言定义了一个名叫"buildConnectionSTring"的函数(Function),该函数的作用将输入的连接字符串用";"连接起来并显示在屏幕上。可能有很多第一次接触Python的童鞋看不懂这个Function,不要紧, 下面我们来解释一些这个Function所用到的知识点。

    1 Function的定义:

    首先我们来看在Python中怎么定义一个Function。 在Python中Function的定义形式是这样的: 

    1 def functionName (Parameters):
    2 Function body

    就像我们在C#中定义一样类需要使用class关键字一样,def关键字就是用来定义的Function。 在def后面紧跟的functionName, functonName和其它语言的标识符一样,没有什么特殊的地方。functionName之后的Parameters和其它语言一样没有什么好说的。  在Parameters后面的":"是一个比较好玩的东东, 在Python不像C#可以用"{}"来标识代码块,在Python中代码是以缩进来标识的, 对于buildConncectionString函数来说,从":"开始直到碰见和def关键字相同缩进的字符,这中间的内容都算是buildConnectionString的函数体。 可能一些像我这样的平常主要用C#语言的童鞋觉得有点别扭, 对使用":"表示函数体的开始以及强制用缩进来区分代码不太适应, 不过仔细想想这样还是有很多好处的,最明显的一个好处就是强制统一了所有程序员的编码风格,便于阅读他人的代码。(XD:话说在像C#这样的语言里读一些不注意编码风格的童鞋的代码真是痛苦呢,对一些风格不好的代码如果不用Resharper按自己的风格reformat一些还真是读不下去呢!)

    对于上面的函数定义,细心的童鞋可能注意到了, 和C#的函数定义相比,在Python中定义函数是不需要指定访问限制符和返回类型,另外对于参数我们也不需要指定它们的类型。

    2 Function的注释

    从软件工程的角度来讲,我们除了对标识符的命名做到"见名知义"之外还需要对一些函数进行注释。 在C#语言中我们可以按照下面的样式进行注释:

           /// <summary>
    ///
    the purpose fo method
    /// </summary>
    /// <param name="a"></param>
    /// <param name="b"></param>
    /// <returns></returns>
    public int foo(int a , string b )

    Python对Funcion注释机制和C#稍有不同,我们只能在Function Body的处通过"""Smmary content"""的形式来给Fuction写注释,请注意一定是要在写在FunctionBody的首行,如果不是写在首行是不起作用的。给Function注释后,在Python中我们可以用"FuncionName.__doc"__"的样式在代码中得到Function的注释,比如我们利用"print buildConnectionString.__doc__"来打印buildConnectionString的注释。

    3 Dictionary的定义

    Python中的数组大概相等于C#中的HashTable,可以用{"key1":""value1", "key2","value2"}的样式定义,比如:我们可以用{"Server":"Localhost","Database","master",3:"sa"}来定义一个Dictionary。然后可以在代码中用以下的代码访问Dictionary:

    Dictionary Usage
    d = {"Server":"localhost", "Database":"master", 3 :"sa"}
    print d # {3: 'sa', 'Database': 'master', 'Server': 'localhost'}
    print d["Server"] #localhost
    print d["server"] #Error
    print d[3] #sa

    d[
    "password"] = "123" # add a new key/value pair.
    print d["password"] # 123

    del d[3] #delete the item 3
    print d[3] # Error

    在上面的代码中我们定义了一个有三个pair的Dictionary,三个pair的键分别是Server, Database, 3,然后我们又打印了整个Dictionary和Dictionary中的个别元素,最后我们新增、删除了一个pair,代码比较好懂,和C#中对HastTable的操作比较类似。

    4 List的定义

    Python中的List大概相当于C#中的ArrayList。我们可以用["value1","value2","value3"]的样式定义一个List,关于List的使用可以参考下面的代码片段:

    List Usage

     5 Tuple的定义

    Python使用Tuple来存储一些固定的集合,Tuple基本上与List类似,但其值是固定的,一旦创建后就不能添加/删除了。Tuple主要用在存储一些固定集合(比如星期集合、月份集合等),另外Tuple还可以用作Dictionary的键值、(在buildConnectionString函数我们就到了这点)。

    在Python中我们可以用("value1","value2","value3")的样式来定义Tuple,具体用法可以参考以下的代码片段:

    Tuple Usage

     6 变量的定义

    在Python中使用变量不需要提前定义,直接使用即可,需要注意的Python不允许引用未初始化的变量,如果直接引用未初始化的变量会引发异常,关于变量的使用可以参考以下代码片段:

    Varible Declare
    1 #d = {"server":"local","database":"master"}
    2  p = ('Monday', 'Thusday', # notice: \ is the line continuation marker.
    3   'Wednesday', \
    4 'Thursday', \
    5 'Friday', \
    6 'Saturday',\
    7 'Sunday' \
    8 )
    9
    10  print x # Error NameError name 'x ' is not defined
    11  
    12 l = range(7)
    13  print l # [0,1,2,3,4,5,6]

     7 格式化字符串

    Python中的格式化字符串的用法基本和C#、C中格式化字符串的用法相同,具体用法可以参考下面的例子:

    k = "uid"
    v
    = "as"

    s
    = "%s=%s" % (k,v)
    print s #uid=as

    age
    = "age = %d" % 25
    print age # age =25

    将知识点介绍完后再来看最初的代码就好理解了,这段代码首先在一个buildConnectionString函数,buildConnection的作用是将参加提供的键值对用;连接起来。 在定义完函数后,代码接着写了一段buildConnection函数的测试代码。在Python中如果直接执行一个函数,则__name__ == ”__main__”,所以在Python中一般都利用这个特性来方便的测试代码)

    以上是我用《dive in python》这本书来学习Python的读书笔记的第一篇,刚接触Python难免有理解的不对的地方,希望不会给您造成误解。

  • 相关阅读:
    javascript:void(0) 真正含义
    Memcache and Mongodb
    window下redis nosql初试
    CAS单点登录配置
    代理模式-你不并知道我的存在
    Netty In Action中文版
    【FastDev4Android框架开发】打造QQ6.X最新版本号側滑界面效果(三十八)
    同步并发操作之等待一次性事件
    关于Java特种兵下冊
    自己定义UISlider的样式和滑块
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/Dive_in_Python_Reading_Note_1.html
Copyright © 2011-2022 走看看