python 自加1_学Python,搞Kodi

a72dda4ecb0de9a1c3ab936044809b96.png

教你如何开发XBMC(KODI)插件,怎么入门及个人能的Python基础和实用技巧。

原文作者:   wurenji

原文链接:https://www.hao4k.cn/thread-23835-1-9.html


Python是目前xbmc插件开发使用的唯一编程语言,要是想自己做个插件玩玩,Python这玩意儿多少要会点。python老鸟可以直接无视本文。
本文不作为完整的python学习教程,但可以帮助你更快入门和掌握要点。如果能在您日后的开发过程中起到一丁点作用,那将是我的荣幸!
话说磨刀不误砍柴工。下面几楼分块跟大家分享一下我的python学习使用心得
(一)环境搭建
    为了更好的学习Python,建议搭建一些软件环境来提高学习开发效率。
    Python是一门开源的程序设计语言,是一种可交互执行的解释性脚本语言,非常适合简单应用和插件开发。如果只是编写xbmc插件,并且在xbmc里面进行调试的话,可以不用下载安装python软件包。在官方下载地址上有多个版本下载,因为XBMC内置的解释器是基于python2的,所以请大家下载2.7.3版本进行安装。特别注意,python 3在很多地方与python 2是不兼容的。
    DreamPie是一个很好的Python Shell,我经常拿它来进行交互开发,或者作为高级计算器。Python有个优势,不像其他编译性语言一样,一定要等到程序写完,编译通过以后才能运行得到结果。而Python却可以在Python Shell中单独允许一条语句。比如说,你不知道字符串去空格的函数是不是strip了,那么很简单,直接到pytho shell中跑一句 ' abc '.strip() 看得到的结果是不是'a'就知道了,不对再去查文档也不迟。很多时候,一个很大的py文件里面某地方出错了,你完全可以把其中某一些语句挑出来单独在python shell里面去跑,省去反复不停的执行整个文件,而且减少依赖。
    我是用的最多的Python开发环境是Ulipad,因为本身是python写的,跨平台,windows/linux/mac os都可以用。另外一款PyScripter是针对windows平台开发的优秀IDE。两者都具有语法高亮、自动缩进、类型浏览等多种特性,可以提高代码编制效率。当然不嫌麻烦的话,也可以使用记事本来写代码。
(二)变量
    Python的变量是没有类型的,可以赋任意类型的值。变量不需单独定义,一旦赋值即可使用。print函数可以输出变量内容。

  1. >>> url = 'http://www.baidu.com'

  2. >>> page = 4

  3. >>> print url

  4. http://www.baidu.com

  5. >>> print page

  6. 4

  7. >>> page += 5

  8. >>> url += '?page=' + str(page)

  9. >>> print url

  10. http://www.baidu.com?page=9

上面的示例都是在python shell中交互运行的结果,以>>>开头的是输入的语句,其他的部分是显示结果。可以看到不需要像有些语言用var声明变量,也不需要int/string/char []*之类的类型定义符来进行定义。很简单,你想用的时候,直接赋值就行了,然后就可以对变量进行任意操作,比如用+=进行自加/连接,作为print函数的参数来输出变量的值。

  1. >>> a = 123

  2. >>> print a

  3. 123

  4. >>> a = 1.24

  5. >>> print a

  6. 1.24

  7. >>> a = "I'm a fine"

  8. >>> print a

  9. I'm a fine

  10. >>> a = (1, 2.4, "hello", {'a': 0, 'b': 1})

  11. >>> print a

  12. (1, 2.4, 'hello', {'a': 0, 'b': 1})

在上面的示例中,可以看到同一个变量可以赋不同的值。最后一个看起来稍微复杂点,将在后面的数据类型中一一讲到。
(三)数字
    Python中的数字分整数和浮点数。python的整数有int和long,但是我们使用的时候不用管他。python中整数长度是没有限制的,这和别的很多语言不同,也就是说可以轻松的在python中完成大整数的运算

  1. >>> 2**30

  2. 186: 1073741824

  3. >>> 9**99

  4. 187: 29512665430652752148753480226197736314359272517043832886063884637676943433478020332709411004889L

  5. >>> 2358321783728157823*23594389258432 + 29512665430652752148753480226197736314359272517043832886063884637676943433478020332709411004889

  6. 210: 29512665430652752148753480226197736314359272517043832886063884693320105595399861474399840518425L

    >>> (1+2)*(39-13)

复制代码

在Python中,long类型的数值会在最后加上一个大写的L,但是你在输入的时候完全可以不用写。这是内部的类型转换,是无需关注和进行显示转换的。整数和浮点数进行运算时,会自动将整数转化为浮点后进行运算,得到浮点数结果。用int函数将浮点数转换为整数时,不进行四舍五入,而是简单的抛弃小数部分,这点需要注意。我们可以用int(x+0.5)的方式来进行四舍五入,当然也可以直接使用round()函数。
    还有一点需要注意的是,/在python 2.x中,对于整数而言跟//的用法是相同的,都是取整数部分,这点很容易被忽略。%符号是用于取余数的运算符。divmod可以同时获得商和余数。

  1. >>> 5/3

  2. 221: 1

  3. >>> 5%3

  4. 222: 2

  5. >>> 5/3.0

  6. 223: 1.6666666666666667

  7. >>> 5//3

  8. 224: 1

  9. >>> 5//3.0

  10. 225: 1.0

  11. >>> divmod(5, 3)

  12. 226: (1, 2)

对于变量加1,没有像c语言里面那样的x++,一般用x=x+1,或者简化为x+=1。
(四)字符串
    字符串是我们在程序中使用最多的类型。Python中没有字符类型,只有字符串。字符串可以用单引号或者双引号包围起来。可以用\符号在行的末尾进行换行,这是一种语法形式的换行,在很多地方使用,比如这行代码太长了。\换行的字符串实际并不包括换行符。

  1. 236: 'bbb'

  2. >>> print 'hello'

  3. hello

  4. >>> print "hello"

  5. hello

  6. >>> 'hello' == "hello"

  7. 237: True

  8. >>> print 'hello \

  9. ... world'

  10. hello world

单引号和双引号可以嵌套使用。这点在使用中很方便,比如一个html代码片段,里面有双引号,在字符串里面就必须进行转义。但是使用单引号就可以省却这个麻烦。

  1. >>> "test"

  2. 238: 'test'

  3. >>> 'test'

  4. 239: 'test'

把几个字符串放到一起,Python会自动进行拼接,也可以用+号进行显示拼接。

  1. >>> print 'hello' "world"

  2. helloworld

  3. >>> print 'hello' +"world"

  4. helloworld

字符串中包含换行符的,需要用\n进行表示。但是Python有一种很方便的方法,就是使用连续三个’或者"将字符串包围起来,则其中所有字符都原封不动的保留,包括空格和回车。这在构造一段html代码的时候很有用。

  1. >>> print 'Dear J:\n Hi.\n yours.'

正则表达式是我们在编写插件过程中最常见的技巧,但是正则表达式本身有\符号进行转义。比如\\表示\,\*表示*。但是\本身在python字符串中也是起转移作用的,那么要么你多转义几次,要么使用raw string,就是在字符串加上一个r,表示字符串内不需要进行转义。下面的示例在正则表达式中表示三个字符:^\*

  1. >>> print '\\^\\\\\\*'

  2. \^\\\*

  3. >>> print r'\^\\\*'

  4. \^\\\*

字符串是只读的,不能修改其中的某些字符。如果需要修改,必须重新构造一个字符串。

  1. >>> s='abb'

  2. >>> s[0]='b'

  3. Traceback (most recent call last):

  4. File "", line 1, in

  5. s[0]='b'

  6. TypeError: 'str' object does not support item assignment

  7. >>> s='b' + s[1:]

  8. >>> s

  9. 236: 'bbb'

上例中的s[1:]用法在python中叫做切片(slice)。不仅对于字符串,对于后面讲到的tuple和列表都是同样的用法。基本的用法是s[start:end:step],start是切片开始的位置,python中从0开始,end表示结束的位置,注意s[end]这个字符本身不包含在内。这样end-start就是最后切片的长度,当然如果end小于start,得到的是空字符串''。step表示切片的步长,默认为1。简单来说,就是从start开始取,依次是start+step、start+step*2、...一致到小于end的所有字符。start、end、step都可以为负数,start和end负数表示从字符串后面开始数起,-1表示最后一个字符,step为负数就从后往前切片,这要求start大于end。len()函数用来获取字符串长度。几个参数都可以省略,start省略表示从0开始,end省略表示取到最后,step默认就是1了。说起来有点犯迷糊,看下面的例子就容易理解了。

  1. >>> a='hello world'

  2. >>> len(a)

  3. 240: 11

  4. >>> a[:] #copy of string

  5. 241: 'hello world'

  6. >>> a[2:] #from the third

  7. 242: 'llo world'

  8. >>> a[2:-1] #except the last one

  9. 243: 'llo worl'

  10. >>> a[::2] # the even chars

  11. 244: 'hlowrd'

  12. >>> a[::-1] #reverse of string

  13. 245: 'dlrow olleh'

  14. >>> 'magnet:?xt=urn:btih:8fcffdf6062379a6a1a0505bb809919870d240eb&dn=%5B%E8%A5%BF%E6%B8%B8%E9%99%8D%E9%AD%94%E7%AF%87%5D.2013.HDTV.720p.x264.AAC-iSCG%5B%E5%9B%BD%E8%AF%AD%E4%B8%AD%E8%8B%B1%E5%AD%97%E5%B9%951.7G%5D'[20:60]

  15. 246: '8fcffdf6062379a6a1a0505bb809919870d240eb'

下面的例子里面有一些字符串常见操作:

  1. >>> 'hello world'.upper() #大写

  2. 247: 'HELL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值