第三章 Python基础

来源:互联网 发布:淘宝一个心要多少单 编辑:程序博客网 时间:2024/06/06 06:44

\:继续上一行

'''...''':跨行书写,并且字符串自带换行

代码块层次随缩进深度的增加而增加

;:用于同一行书写多个语句(降低了可读性)

import + 模块名:调用模块(程序最前面)

赋值语句不是表达式

Python中赋值并不是将一个值赋给一个变量
Python不支持x++或x--这样的自增自减运算

增量赋值相对于普通赋值,第一个对象仅被处理一次,可变对象会被就地修改,不可变对象会分配一个新对象

多重赋值:x = y = z = 1

多元赋值:(x,y,z) = (1,2,'a string') (等号两边默认为元组,小括号可以忽略)

可以不用中间变量temp来实现数值交换:x,y = y,x

_xxx,xxx_,_xxx_,__xxx,__xxx__之间的区别:http://blog.csdn.net/u011636567/article/details/72468342(避免使用_作为变量的开头)

buil-in应当被当作“系统保留字”,不做他用

Python不支持重载标识符

obj.__doc__:动态获得文档字串(obj:模块、类、函数的名字均可)

尽量使用“四个空格”来缩进而不是“制表符Tab”(增强可读性)

Python代码风格指南:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Python结构布局:

  1. 起始行(Unix)
  2. 模块文档(介绍模块功能和重要的全局变量含义。模块外可通过module.__doc__访问)
  3. 模块导入(import)
  4. 变量定义(除非必须,尽量使用局部变量)
  5. 类定义(模块导入时类会被定义,可以通过class.__doc__查看)
  6. 函数定义(此处定义可以通过module.function()在外部被访问到,模块代入时def语句会被执行)
  7. 主程序
__name__系统变量可以用来指示模块如何被加载:

  • 模块如果是被导入,__name__的值为模块的名字
  • 模块如果被直接执行,__name__的值为‘__main__’

模块中的顶级执行代码应当尽量的少,功能代码多封装在函数或者类中。以免与主程序的顶级执行代码发生冲突。

学会书写测试代码(然而并不会)

Python的内存管理:

  • 变量无需事先声明
  • 变量无需指定类型
  • 程序员不用关心内存管理
  • 变量名会被“回收”
  • del语句能够直接释放资源

Python在运行时会根据语法和右侧操作数来决定新对象的类型。

内存管理交给解释器去做

引用计数:Python中一般不增加新的对象,当对象被创建并赋值(将其引用)给变量时,该对象引用计数就被设置为1.

增加计数的行为:

  • 对象被创建(x = 3.14)
  • 另外的别名被创建(y = x)
  • 作为参数传递给函数(function(x))
  • 成为容器对象的一个元素(myList = [123,x,'zxc'])

减少计数的行为:

  • 对象别名被显示销毁(del y)
  • 对象的一个别名被赋值给其他对象(x = 123)
  • 对象被从窗口对象中移除(myList.remove(x))
  • 一个本地引用离开了其作用范围(局部变量离开其作用范围)
  • 窗口对象本身被销毁(del myList)

创建文件例程:

'make TextFile.py -- create text file'


import os
ls = os.linesep


# get filename
while True:
    fname = raw_input('Enter name of file:')   # 书中少了这一句定义fname的量
    if os.path.exists(fname):
        print "ERROR:'%s' already exists" % fname
    else:
        break


# get file conten (text) lines
all = []
print "\nEnter lines ('.' by itself to quit).\n"


# loop until user terminates input
while True:
    entry = raw_input('>')
    if entry == '.':
        break
    else:
        all.append(entry)


# write lines to file with proper line-ending
fobj = open(fname,'w')
fobj.writelines(['%s%s' % (x,ls) for x in all])
fobj.close()
print 'DONE!'


写文件例程:

'readTextFile.py -- read and display text file'


# get filename
fname = raw_input('Enter filename:')
print 


# attempt to open file for reading
try:
    fobj = open(fname,'r')
except IOError,e:
    print "*** file open error:",e
else:
    # display contents to the screen
    for eachLine in fobj:
        print eachLine,
    fobj.close()



原创粉丝点击