Python _ 特性 (1)

一、异常

1、概念

在程序的开发中,如果对某些代码的执行不确定(程序的语法完全正确)
可以增加try来捕获异常
try:
    尝试执行的代码
except:
    出现的错误的处理

2、简单的异常

try:
    num = int(raw_input('请输入一个整数: '))
except:
    print '请输入正确的整数!!!'

    #无论是否输入错误额,程序都不会报错,都会正常执行

    print '*' * 50

这里写图片描述

3、异常类型
三种Exceptions的类型:ZeroDivisionError,NameError,TypeError,它们都是内置异常的名称。标准异常的名字就是内建的标识符(但并不是关键字)

python解释器抛出异常时,
最后一行错误信息的第一个单词,
就是错误类型

这里写图片描述

4、未知异常

捕获未知错误:
    在开发的时候,要判断所有可能出现的错误,是有一定难度的
如果希望程序无论出现任何错误,都不会因python解释器抛出异常
而终止,可以再增加一个excpet

这里写图片描述
这里写图片描述

5、标准的异常格式

try:
    #尝试执行的代码
    pass
except 错误类型 1pass
except 错误类型 2pass
except Exception as result:

else#没有异常才会执行的代码
    pass
finally#无论是否有异常,都会执行的代码
    pass

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

6、异常的传递

     异常的传递--当函数/方法执行异常,会将异常传递给函数/方法调用的一方
如果传递到主程序,依旧没有异常处理,程序才会终止,可以在主程序中增加
异常捕获,而在主程序中调用其他函数,只要出现异常,都会传递到主函数的
异常捕获中,这就不需要在代码中,增加大量的异常捕获,能够保证到代码的
整洁。

这里写图片描述

7、案例

判断密码的长度

这里写图片描述
这里写图片描述

二、模块

title = '模块1'

# 函数
def say_hello():
    print '%s 讲的是有中国历史' % title

# 类
class China_history(object):
    pass

这里写图片描述

title = '模块2'

# 函数
def say_hello():
    print '%s 讲的是中国未来' % title

#类
class China_future:
    pass

这里写图片描述

将test1和test2结合起来,使用as指定模块的别名(大驼峰命名法)

这里写图片描述

1、python的解释器再导入模块的时候,会:
1).搜索当前目录指定的模块文件,如果有就直接导入
2).如果没有,再搜索系统目录
注意:在开发时,给文件起名,不要和系统模块文件重名

这里写图片描述

2、断言

断言,调试时可以检查传入的参数是否合法。

这里写图片描述

我们可以使用C标准库assert的实现方法

这里写图片描述

3、name属性
name属性可以做到,测试模块的代码只是在测试情况下被运行,
而在被导入时不会执行
name时python的一个内置属性,记录着一个字符串
如果是被其他文件导入时,name就是模块名
如果是当前执行的程序,name就是 main

# 全局变量,函数,类 直接执行的代码不是向外界提供的工具
def say_hello():
    print 'hello hello'

# print 'have a nice day !!'
# 如果直接在模块中输入,得到的是__main__
if __name__ == '__main__':
    print __name__
#print __name__
    print 'lily 开发的程序'
    say_hello()

这里写图片描述

当注释掉 i f 语句

这里写图片描述
这里写图片描述

4、标准格式

在很多python文件中会得到以下格式的代码

    # 导入模块
    # 定义全部变量
    # 定义类
    # 定义函数

    # 在代码的下方

    def main():
        pass

    if __name__ == '__main__'
        main()

三、文件

1、概念

操作文件的函数/方法
在python中要操作文件需要记住的1个函数和3个方法
    #python中一切皆对象
    open :打开文件,并且返回文件操作对象
    read :将文件内容读取到内存
    write :将指定内容写入文件
    close :关闭文件
open函数负责打开文件,并且返回文件对象
read/write/close 三个方法都需要文件对象来调用

read 方法--读取文件
open函数的第一个参数是要打开的文件名(文件名区分大小写)
    如果文件存在,返回文件操作对象
    如果文件不存在,会抛出异常
read方法可以一次性读如并返回文件的所有内容
close方法负责关闭文件

这里写图片描述
这里写图片描述

2、打开一个绝对路径的文件

这里写图片描述
这里写图片描述

3、文件指针

文件指针:
    文件指针标记从哪个位置开始读取数据
    第一次打开文件时,通常文件指针会指向文件位置
    当执行了read方法后,文件指针会移动到读取文件末尾

这里写图片描述

4、文件打开方式

打开文件的方式:
    name = open('文件名''访问方式')

这里写图片描述
这里写图片描述

 以追加方式打开文件
 如果该文件存在,文件指针会放在文件的末尾
 如果文件不存在,创建文件并写入

这里写图片描述
这里写图片描述

5、按行读取文件

按行读取文件
    read方法默认会把文件的所有内容一次性读到内存
    如果文件太大,对内存的占用会非常严重哦
readline方法
    可以一次性读取一行内容
    方法执行后,会把文件指针移动到下一行,准备再次读取

这里写图片描述

6、导入指定文件

# 1.打开文件
# 源文件以只读的方式打开
file_read = open('README')
# 目标文件以写的方式打开
file_write = open('README_COOPY','w')

# 2.从源文件中读取内容
text = file_read.read()
# 将读取到的内容写到目标文件中
file_write.write(text)

# 3.关闭文件
file_read.close()
file_write.close()

这里写图片描述

7、练习

# 1.打开文件
# 源文件
file_read = open('README')
# 目标文件
file_write = open('README_COPY1','w')
# 2.读取文件

while True:
    text = file_read.readline()
    if not text:
        break
    file_write.write(text)
    print text
file_write.write(text)
# 3.关闭文件
file_read.close()
file_write.close()

这里写图片描述

五、 with 关键字

1、概念

关键字with在不需要访问文件后将其关闭,在这个程序中,
我们调用了open(),但没有调用close();你也可以调用
open()和close来打开和关闭文件,但这样做时,如果程序
存在bug,导致close()语句没有执行,文将将不会关闭,
为妥善地关闭文件可能会导致数据丢失或受损,如果在程序中
过早地调用close(),你会发现需要使用文件时它已经关闭
(无法访问),这会导致更多地错误,你并非在任何情况下都
能轻松地确定关闭文件地恰当时机通过使用with结构,可让
python去确定,你只管打开文件,并在需要时使用它,
python会在合适的时候自动将其关闭

这里写图片描述

2、大文件打开方式

filename = 'pi_digits'
with open(filename) as file_object:
    for line in file_object:
        print line

这里写图片描述

竖行表示

filename = 'pi_digits'
with open(filename) as file_object:
    lines = file_object.readline()
for line in lines:
    print line

这里写图片描述

3、利用 with 写文件

filename = 'linux'
with open(filename,'a') as file_object:
    file_object.write('I love python.\n')   ## \n 换行
    file_object.write('I love linux')

这里写图片描述
这里写图片描述

六、文件储存 —— json

1、概念

很多程序都要求用户输入某种信息,
程序都把用户提供的信息储存在列表的字典等数据结构中,
用户关闭程序时,你几乎总是要保存他们的信息:
一种简单的方式是使用模块json来存储数据
(在python中使用json的时候,主要也就是使用json模块
json是以一种良好的格式来进行数据的交互)
模块json让你能够将简单的python程序之间分享数据,
更重要的是,json数据格式并非python专用的,
这让你能够将以json格式存储的数据与使用其他编程语言的人分享

注意:json(javascriptObject notation)格式最初是为
javascript开发的,但随后成了一种常见的格式,被包括
python在内的众多语言采用

这里写图片描述
这里写图片描述

2、查看

import json
filename = 'numbers.json'
with open(filename) as f_object:
    numbers = json.load(f_object)

print numbers

这里写图片描述

3、将输入的内容保存入文档

import json
username = raw_input('what is your name ?')
filename = 'username.json'
with open(filename,'a') as f_object:
    json.dump(username,f_object)
    print 'We will remmeber you when you come back,%s' % username

这里写图片描述
这里写图片描述

4、调用文档的内容来实现命令输出

import json

filename = 'username.json'
with open(filename) as f_object:
    username = json.load(f_object)
    print 'Welcome back, %s' % username

这里写图片描述

5、如果以前存储了用户,就显示。否则,就提示用户输入用户名并存储它

import json
filename = 'username.json'
try:
    with open(filename) as f_object:
        username = json.load(f_object)
except ValueError:
    username = raw_input('What your name ?')
    with open(filename,'w') as f_object:
        json.dump(username,f_object)
        print "We'll remember you when you come back %s" % username
# 依赖于try代码块成功执行的代码都应放到else代码块中:
else:
    print "Welcome back %s" % username

这里写图片描述
这里写图片描述

修改或添加 username.json 中的名字

这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/JaneNancy/article/details/81191825