码迷,mamicode.com
首页 > 编程语言 > 详细

Head_First_Python学习笔记(二)

时间:2015-05-13 16:49:29      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:默认参数   python   head-first   文件处理   

使用range()和默认参数控制嵌套列表打印格式

#nester.py
def print_lol(the_list,level=0):
    for item in the_list:
            if isinstance(item,list):
                    print_lol(item,level+1)
            else:
                    for tab_stop in range(level):
                            print("\t"),
                    print(item)

>>> import nester
>>> movies = [‘the holy grail‘, 1975, [‘the life of brain‘, 1979,[ ‘the meaning of life‘, 1983]]]
>>> nester.print_lol(movies,1)
    the holy grail
    1975
        the life of brain
        1979
            the meaning of life
            1983
  • pytho3.x print不换行:print(“\t”,end=”)
  • pytho2.x print不换行:print(“\t”),(后面加逗号)

增加一个默认参数判断是否缩进

#nester.py
def print_lol(the_list,indend=False,level=0):
    for item in the_list:
            if isinstance(item,list):
                    print_lol(item,indend,level+1)
            else:
                    if indend:
                            for tab_stop in range(level):
                                    print("\t"),
                    print(item)

>>> nester.print_lol(movies,True)
the holy grail
1975
    the life of brain
    1979
        the meaning of life
        1983

文件读取

>>> import os
>>> os.getcwd()
‘/Users/zhang/Documents/mou/python/nester‘
>>> data = open(‘夹边沟记事.txt‘)
>>> print(data.readline()),
《夹边沟记事》
>>> print(data.readline()),
正文
>>> print(data.readline()),
作者介绍
>>> print(data.readline()),

>>> print(data.readline()),

>>> print(data.readline()),

>>> 
>>> print(data.readline()),
杨显惠,1946年出生于兰州。中国作家协会会员,现居天津。
>>> print(data.readline()),

>>> print(data.readline()),

>>> print(data.readline()),

>>> print(data.readline()),
1965年由兰州二中上山下乡赴甘肃省生产建设兵团安西县小宛农场。1971年入甘肃师范大学数学系读书。1975年在甘肃省农垦局酒泉农垦中学做教师。1981年调往河北省大清河盐场工作。1988年入天津作家协会专职写作至今。主要作品收入《这一片大海滩》、《夹边沟记事》、《告别夹边沟》等书。短篇小说曾获全国短篇小说奖、中国小说学会奖、《上海文学》奖。
>>> data.seek(0)
>>> 

>>> for each_line in data:
...     print each_line,
... 
《夹边沟记事》
正文
作者介绍
......
谢谢读者。

2008年6月15日兰州 

>>>data.close()

切分文本

>>> data = open(‘hello.txt‘)
>>> for each_line in data:
...     (role,line_spoken) = each_line.split(‘:‘)
...     print role,
...     print ‘said:‘,
...     print line_spoken,
... 
hello said: world
hello said: world
hello said: world
>>> 

写入文件

>>> out = open(‘data.txt‘,‘w‘)
>>> print>>out,‘hello,world‘
>>> out.close()

上面为py2的写法,py3使用print(‘hello,world’,file=out)

  • w:如文件已存在,则会清空现有内容
  • a:追加到一个文件
  • w+:打开一个文件完成读写,不清除现有内容

locals和globals

当一行代码要使用变量 x 的值时,Python会到所有可用的名字空间(每个函数及变量都有自己的命名空间,局部命名空间)去查找变量,按照如下顺序:

  • 1.局部名字空间 - 特指当前函数或类的方法。如果函数定义了一个局部变量 x,Python将使用这个变量,然后停止搜索。(locals BIF)
  • 2.全局名字空间 - 特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python将使用这个变量然后停止搜索。(globals BIF)
  • 3.内置名字空间 - 对每个模块都是全局的。作为最后的尝试,Python将假设 x 是内置函数或变量。

打印错误信息

except IOError as err:
    print(‘File error:‘+ str(err))

使用with处理文件

>>> try:
...     with open(‘1234.txt‘) as data:
...             print data.readline()
... except IOError as err:
...     print(‘File error‘ + str(err))
... 
File error[Errno 2] No such file or directory: ‘1234.txt‘

with利用了一种名为上下文管理协议(context management protocol)的Python技术,抽象了:

finally:
    if ‘data‘ in locals():
        data.close()

Head_First_Python学习笔记(二)

标签:默认参数   python   head-first   文件处理   

原文地址:http://blog.csdn.net/qq329735967/article/details/45693837

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!