六.自定义函数(三)

1.使用IDLE的异常信息:

try:

  data=open(‘missing.txt‘)

  print(data.readline(),end=‘‘)

"""为异常对象给定一个名,然后作为错误消息的一部分"""

except IOError as err:

"""使用str()BIF要求异常对象表现为一个字符串"""

  print(‘File error:‘+str(err))

finally:

"""文件不存在时,数据文件对象并未创建,这样就不可能在数据对象上调用close()方法,尝试调用close()之前先查看data名是否存在"""

  if ‘data‘ in locals():

    data.close()

2.用with处理文件:优化后的代码最终版

man=[]

other=[]

try:

  data=open(‘sketch.txt‘)

  for each_line in data:

    try:

      (role,spoken_line)=each_line.split(‘:‘,1)

      spoken_line=spoken_line.strip()

    if role ==‘Man‘:

      man.append(spoken_line)

    elif role ==‘Other Man‘:

      other.append(spoken_line)

    except ValueError:

      pass

except IOError as :

  print(‘the data file is missing‘)

try:

"""with语句不再需要包含一个finally组来处理文件的关闭"""

  with open(‘man_data.txt‘,‘w‘) as man_file:

    print(man,file=man_file)

  with open(‘other_data.txt‘,‘w‘) as other_file

    print(other,file=other_file)

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

3.优化输出的数据格式:修改之前的print_lol()函数,让它把数据输出到一个磁盘文件而不是显示在屏幕上(标准输出)

步骤:向print_lol()函数增加第4个参数,用来标识将把数据写入哪个位置,要为这个参数提供一个缺省值sys.stdout

def print_lol(the_list,indent=False,level=0,fn=sys.stdout):

  for each_item in the_list:

    if isinstance(each_item,list):

      print_lol(each_item,indent,level+1,fn)

    else:

      if indent:

          for tab_stop in range(level):

            print("\t",end=‘‘,file=fh)

      print(each_item,file=fh)

这时,将之前的代码中的print()改用print_lol(),调用的格式为print_lol(man,fh=man_file)和print_lol(man,fh=other_file)

4.使用pickle标准库“腌制”数据并持久存储:用dump保存,用load恢复

用dump代替print_lol()函数:

import pickle

man=[]

other=[]

try:

  data=open(‘sketch.txt‘)

  for each_line in data:

    try:

      (role,spoken_line)=each_line.split(‘:‘,1)

      spoken_line=spoken_line.strip()

    if role ==‘Man‘:

      man.append(spoken_line)

    elif role ==‘Other Man‘:

      other.append(spoken_line)

    except ValueError:

      pass

except IOError:

  print(‘the data file is missing‘)

try:

"""将访问模式改为可写二进制模式"""

  with open(‘man_data.txt‘,‘wb‘) as man_file,with open(‘other_data.txt‘,‘wb‘) as other_file

"""将两个nester.print_lol()调用替换为pickle.dump()调用"""

   pickle.dump(man,man_file)

   pickle.dump(other,other_file)

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

except pickle.PickleError as perr:

  print(‘Pickling error:‘+str(err))

5.使用pickle和nester来解除腌制的数据:创建一个空列表来存放解除腌制的数据:

new_man=[]

try:

  with open(‘man_data.txt‘,‘rb‘) as man_file:

    new_man=pickle.load(man_file)

except IOError as err:

  print(‘File erro:‘+str(err))

except pickle.PickleError as perr:

  print(‘Pickling error:‘+str(err))

nester.print_lol(new_man)

时间: 2025-01-10 06:19:30

六.自定义函数(三)的相关文章

PHP整理笔记六自定义函数

一.标准函数 标准的PHP发行包中有1000多个标准函数,这些标准函数都是系统内置的,不需要用户自己创建而可以直接使用. <? echo md5('123456');   //MD5函数对字符串进行加密处理 ?>   二.自定义函数 PHP内置函数允许和文件进行交互.使用数据库.创建图形,还可以连接其他的服务器.但是,在实际工作中,有许多时候所需要的东西是语言的创建者无法预见到的. 声明一个函数可以让我们想内置函数那样使用自己的代码.只要简单地调用这个函数并提供给它必须的参数.这就意味着,在整

MySQL(六) —— 自定义函数

自定义函数 用户自定义函数(user-defined function, UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 参数,返回值 创建自定义函数 CREATE FUNCTION function_name RETURNS [STRING|INTEGER|REAL|DECIMAL] routine_body //关于函数体 //1. 函数体有合法的SQL语句构成: //2. 函数体可以是简单的SELECT或INSERT语句: //3. 函数体如果为符合结构则使用BEGIN..E

C 入门 第六节 自定义函数

/*//  1. 无参无返回值void hello()    {        printf("hello world!\n");    }//  2. 无参有返回值int peoplweCount(){        return 10;    }//  3. 有参有返回值int max(int a, int b)    {        return a > b ? a : b;    }//  4. 有参无返回值(打印一个数)void number(int a)    { 

201506230818_《JavaScript权威指南(第六版)——callee和caller、对象属性用作实参、自定义函数属性》(P175-180)

1. callee 正在执行的函数.使用方法:arguments.callee... caller 正在调用执行函数的函数. 2.对象属性用作实参,形如:function fn(arg) { var arg.name = name || 'Josn', arg.age = age || 60 , ... } 3. 在传入实参时候,宁愿在检查值类型时报错也不要在执行时候报错; 4. if(element == null) continue;  //过滤null或undefined元素; 5.  i

MYSQL的自定义函数

自定义函数 用户自定义函数是一种对MYSQL扩展的途径,其用法与内置函数相同 函数可以返回任意类型的值,同样可以接收这些类型的参数 函数体由合法的SQL语句构成 函数体可以是简单的SELECT或INSERT语句 函数体如果为复合结构则使用BEGIN...END语句 复合结构可以包含声明,循环,复制结构 创建不带参数的自定义函数 第一步CREATE  FUNCTION  函数名 ()  FETURNS  字符串长度如VARCHAR(30) 第二步RETURN  类型(如DATE)_FORMAT 

Microsoft SQL Server 自定义函数整理大全

01.去除字符串中的html标记及标记中的内容 [叶子函数分享一]去除字符串中的html标记及标记中的内容 --1.创建函数 create function [dbo].[clearhtml] (@maco varchar(8000)) returns varchar(8000) as begin     declare @i int     while 1 = 1     begin        set @i=len(@maco)        set @maco=replace(@maco

Microsoft SQL Server 自定义函数整理大全(下)

34.字符串转成16进制函数 /**************************** 字符串转成16进制 作者:不得闲 QQ: 75492895 Email: [email protected] ****************************/ --创建函数(suiyunonghen(不得闲)) Create Function VarCharToHex(@Str Varchar(400)) returns varchar(800) as begin declare @i int,@

MySQL学习20:运算符与函数之自定义函数

一自定义函数简介 (1)自定义函数定义 用户自定义函数(user-defined function,UDF)是一种对MySQL数据库扩展的途径,其用法与内置函数相同. (2)自定义函数的两个必要条件 1)参数:可以有零个或多个. 2)返回值:只能有一个返回值. 使用自定义函数的注意事项 1)所有函数都有返回值,但不一定都有参数. 2)函数的参数与返回值之间没有必然的内在联系. 3)函数可以返回任意类型的值,同样可以接收这些类型的参数. (3)创建自定义函数 创建自定义函数的语法结构: CREAT

如何利用自定义函数把阳历转换成阴历

数据库保存的是阳历日期,有时候会遇到把阳历换成阴历的需求,例如下图把阳历转换成阴历. 这个问题是我在开发报表过程中遇到的一个小需求,利用的工具是FineReport8.0版本,解决思路是首先定义一个可以将阳历转为阴历的类,然后自定义FineReport函数,在run方法中获取年月日参数并调用之前的类将阳历转为阴历,最终返回给报表. 实现步骤: 1.  阳历转阴历的类 FineReport里面会提供一个现成的农历日历工具类SolarToLunar,该类中通过today(intyear, int m