1

python扔在一边很久了,最近刚好有几天闲,买了本《Head First Python》复习一下。

跟python结缘是因为教C语言的王青老师推荐我们边学C边学python,记得说是C结合脚本语言会发挥出比较大的威力,还推荐了一门Coursera上的公开课,名字好像叫how to program,当时只是听说,因为当时各种状态,并没有学。
后来用一个暑假学《learn python the hard way》,没有纸质的书,很多东西虽然知道,学的并不踏实,之后又看《python源码剖析》,可能是C基础不够好原因,看到一半就放弃了,以后有机会还会再看。
再后来用python做《人工智能》的作业,写起来非常爽,可是写得一团糟,都只是能跑的级别而已,有时需要跑几个小时才能出结果,然后import一下sklearn的库,想着怎么也得跑个几分钟吧,结果人家10s就出结果了OTZ。虽然可以profile一下,或者用pypy再跑一下,可终归治标不治本。
再后来也就是写Dr.Kang的作业“把Simulink和Stateflow模型转化到uppaal里面后做model checking”的时候,因为当时是要把Simulink里面的map table转化到uppaal里面,可是uppaal这个奇葩软件却各种反人类,虽然基本语法是C,却连二维数组都不支持,所以先把map table导出到html里面,然后用python解析html,把数据搞出来再生成C的一维数组,最后利用行和列的index算出结果的index,相当于模拟一个查找的过程,oral presentation的时候老师好像还比较满意这个做法。
对了,这期间断断续续搞个人主页,用的是web.py这个简单的框架,写出这个框架的天才、reddit的创始人、rss的发明者、年仅二十多岁,抱歉那个人的名字想不起来了,后来自杀了,缅怀一下这位我实在想不起名字的互联网之子,他的三个东西都真的改变了世界,至少稍微改变了一下我的世界。还在廖雪峰老师的主页学了一点高阶函数、修饰器、lamda,那个教程最后是要自己写出一个web框架,然后用那个框架搭个博客,要是现在断网写我肯定写不出来,还有实训搞避障小车的时候在树莓派里用了一下,不过最后要拍个视频检验成果,我们的车还是用手机ssh到pi上面遥控的,哈哈哈哈。

会写一个系列,可能有两到四部分,看了一下这本书前三章主要是些简单的基础、四到七章主要是web开发、八九十主要是用户python做移动开发,最后一章是python做数据处理,第一部分和数据处理这一章都比较简单而且其实一直在用的都是这方面的东西都比较熟悉,第二部分会重点看一下,移动开发看情况,因为一般都是用原生开发,跨平台也就是那么几种方案,python做移动开发实在太非主流了,最后可能会有个总结,也可能没有。

这是第一部分和数据处理。

内置函数及数据结构和自带的库

BIF是Built-in Function的缩写。比如dir()、isinstance(name, type)。

clipboard.png

其他比较常用而且重要的有:

help

clipboard.png
如果对函数的参数和返回值不太确定的话可以用help来查,相当于python的自带文档。

print

clipboard.png
这个是最基本的打印函数,在没有debugger的时候debug可以用到。

help(print)

clipboard.png
竟然会出现SyntaxError,对print用help的时候要加上引号。因为信息很长,所以不截图了。python的print函数其实是非常复杂的,以后有机会专门研究一下。

open

clipboard.png

locals

clipboard.png
返回当前作用域下的本地变量。

clipboard.png

exit

clipboard.png

object

clipboard.png
这个很好玩儿。

class

clipboard.png

clipboard.png
这个更好玩儿,__builtin__模块里面包含了BIF、异常和一些其他的对象。

字符串(STRING)

find

clipboard.png
在字符串里查找,如果没有的话返回-1,如果有的话返回首次出现的位置。
clipboard.png

split

clipboard.png
split接收两个参数,第二个参数maxsplit有默认值为-1,如果调用的时候不给这个参数,默认是把整个字符串用第一个参数指定的splitter分割开,如果给定了,那么最后分割的数就是maxsplit+1。第一个参数的默认值是None,如果不给定,splitter就是空格。
clipboard.png

列表(LIST)

clipboard.png

操作

clipboard.png

以上是从help(lsit)里面截出来的。还有很多,限于篇幅所以没有截出来。

这些函数都是list类的成员函数,在《Python源码剖析》里面应该有更详细的解释和实现。之后看的时候应该注意。

字典(DICT)

clipboard.png

跟列表都是内置的数据结构。

操作

clipboard.png

集合(SET)

clipboard.png

操作

clipboard.png

OS库

clipboard.png

import os
os.getcwd()
os.chdir()

clipboard.png

python: SyntaxError: EOL while scanning string literal ->stackoverflow
出现这个SyntaxError的原因在于反斜杠和后引号被当作是转义字符导致整个字符串没有了end,EOL应该是end of line的意思。

os.environ['OS']

OS库中environ变量是一个保存环境变量的字典,可以通过访问字典值得方式获得一些环境变量的值。
Windows下通过系统属性看到的是这样的:

clipboard.png

通过Python得到的是这样的:

clipboard.png

Exception

def get_coach_data(filename):
    try:
        with open(filename) as f:
            data = f.readline()
        templ = data.strip().split(',')
        return(AthleteList(templ.pop(0), templ.pop(0), templ))
    except IOError as ioerr:
        print('File error (get_coach_data): ' + str(ioerr))
        return(None)

其他函数

seek

seek() function? ->stackoverflow

参考资料:
《Head First Python(中文版)》


dukeyunz
33 声望6 粉丝

人贵有志,学贵有恒,随机应变。