python Day 4

调用自己使用的其他函数,而函数中存在全局未配置的Moudle如(sys)时,直接调用def的名称

则会出现 sys is not defined,

(这是因为并不是import Moudle,而是import了. py文件,如果不在代码段首声明,则需在使用时注意加上)

如下

print_b(a,fn=a_file)

而print_a.py文件代码如下:

import sys
def print_b(the_list ,indent=False,level=0,fn=sys.stdout):    
    for each_item in the_list:
        if isinstance(each_item,list):
            print_b(each_item,indent,level+1,fn)#判断当前列表中的元素是否为列表,若是列表,则进入循环
        else:
            if indent:
                for tab_stop in range(level):
                    print("\t",end='',file=fn)
            print(each_item,file=fn)


面对如此情况,我们需要使用

import print_a

print_a.print_b(a,fn=a_file)

代码是head first上的源码,已经提示了导入修改后的模块,但是因为自己的认知过于浅薄,

不能有效的运行代码,闭门造车出门也合不了辙,这算个啥。

同样面对这段代码:

import sys
def print_b(the_list ,indent=False,level=0,fn=sys.stdout):    
    for each_item in the_list:
        if isinstance(each_item,list):
            print_b(each_item,indent,level+1,fn)
        else:
            if indent:
                for tab_stop in range(level):
                    print("\t",end='',file=fn)
            print(each_item,file=fn)

利用indent的值控制面对list中的list是否缩进,

每逢一个tab_stop则 在level范围里增加多少个tab间隔,


关于pickle模块里dump和load的使用:

直接使用dump:

import pickle
try:
    with open('man_data.txt','wb') as man_file,open('other_data.txt','wb') as other_file :
        pickle.dump(man,man_file,1)
        pickle.dump(other,other_file,1)
except IOError as err:
     print('file error'+str(err))
except pickle.PickleError as err:

     print('file error'+str(err))

打开文件,则会出现一些乱码。是因为它是有独特的储存方式,

由rb(二进制读取)命令读取到新的文件中,如

 with open('man_data.txt','rb') as man_file:
        new_man=pickle.load(man_file)


再将其由print输出于shell中,可以看出没有差别,无影响。


你可能感兴趣的:(python)