设为首页 收藏本站
查看: 764|回复: 0

[经验分享] Python学习之二:《Dive in Python》学习笔记一

[复制链接]

尚未签到

发表于 2015-4-24 02:32:01 | 显示全部楼层 |阅读模式
  为了丰富一下自己的视野,最近在利用《dive in python》这本书学习Python,下面是我的读书笔记第一篇:
  首先来看一个Python的函数以便对Python有一个第一印象:


DSC0000.gif DSC0001.gif 代码



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#语言中我们可以按照下面的样式进行注释:

       ///
       /// the purpose fo method
       ///
       ///
       ///
       ///
       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难免有理解的不对的地方,希望不会给您造成误解。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59991-1-1.html 上篇帖子: python IDLE的执行py文件 下篇帖子: Python语言与设计模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表