python

2021-08-14  本文已影响0人  AppleLin_cdea

python 1

2021年8月14日16:45:48 星期六

core python programming

Python 核心编程

Wesley J.chun

宋吉广

什么是 Python?

编程语言。

软件开发行业由来? 编程语言的产生。

起源

Guido van Rossum 在 1989 年底创造了 Python。 1991 年初发布第 1 版,它来自于 1 个项目。

van Rossum 对解释型语言 ABC 有着丰富经验。

特点

文档结构

"this is a test modules"

import sys  # Module imports
import os

debug = True # (Global) Variable declarations

Class FooClass (object):
    'Foo class'
    pass

def test():
    'test function'
    foo = FooClass()
    if debug"
        print 'ran test()'
        
if __name__ == '__main__':
    test()
    

推荐代码风格:主程序调用 main() 函数。

__name__ 系统变量用来指示 module 应如何被加载。

如果 module 是被导入, __name__ 的值为模块名字,

如果 module 是被直接执行, __name__ 的值为 __main__,

在主程序中写测试代码

优秀的程序员和软件工程师,总是会为我们提供一组测试代码或者简单教程。

内存管理

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

变量定义,变量要在创建和赋值后才能被使用。

动态类型,

内存分配,引用计数,内部跟踪变量。

第 1 个 python 程序

'makeTextFile.py -- create text file'

import os
ls = os.linesep

# get filename
while True:
    fname = raw_input('Enter filename:')
    if os.path.exists(fname):
        print "ERROR: '%s' already exists" % fname
    else:
        break

# get file content (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!'


技巧:使用局部变量替换模块变量 ls = os.linesep

cat readTextFile.py 
'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()


try-except-else 语句

使用 os.path.exists() 和异常处理:一般程序员倾向使用前者,因为有一个现成的函数可以检查错误条件 -- 并且很简单,这是个布尔函数,它会告诉你“是”还是“不是”。(注意,这个函数内可能已经有异常处理代码)。那你为什么还要重新发明一个轮子来干同样一件事?异常处理最适合的场合,是在没合适的函数处理异常状况的时候。

这时程序员必须识别这些正常的错误,并做出相应的处理。

对这个例子来说,能通过检查文件是否存在来避免异常发生,不过因为有可能因为其它原因造成文件打开失败,比如缺少权限,网络驱动器突然连接失败等等。从更安全的角度来说,就不应该用类似 os.path.exists() 之类的函数而是使用异常处理,尤其是在没有合适函数的情况下更应该如此。

# cat readTextFile2.py 
'readTextFile2.py -- read and display text file'

import os

fname = raw_input('Enter filename: ')
print

if os.path.exists(fname):
    fobj = open(fname, 'r')
    for eachLine in fobj:
        print eachLine,
    fobj.close()
else:
    print "*** file open error: '%s' " % fname


相关模块

Python 快速参考和 Python 常见问答都是开发者很重要的“工具”。另外,还有一些模块会帮助你成为一个优秀的 Python 程序员。

调试模块 pdb 允许设置(条件)断点,代码逐行执行, 检查堆栈。它还支持事后调试。

logging 模块是在 Python2.3 中新增的,它定义了一些函数和类帮助你的程序实现灵活的日志系统。共有五级日志级别:紧急,错误,警告,信息和调试。

性能测试模块profile,测试函数的执行的时间,和每次脚本执行的总时间,hotshot 重点解决性能测试过载的问题,但却需要更多的时间来生成结果。

python 对象

什么是 Python 对象?

Python 对像有三个特性: 身份,类型和值。

标准类型

其它内建类型

内部类型

表1 以访问模型为标准的类型分类

访问模型
分类 Python 类型
直接访问 数字
顺序访问 字符串、列表、元组
映射访问 字典

表2 标准类型分类

数据类型 存储类型 更新类型 访问模型
数字 Scalar 不可更改 直接访问
字符串 Scalar 不可更改 顺序访问
列表 Container 可更改 顺序访问
元组 Container 不可更改 顺序访问
字典 Container 可更改 映射访问
上一篇下一篇

猜你喜欢

热点阅读