2018-08-31 day10 文件操作

2018-08-31  本文已影响0人  rzlong

函数作为变量

在python中,函数就是一种特殊的类型,声明函数就是声明function类型的变量。

def func1():
    return('func1')
a = func1 #将函数作为变量赋值给a,给的是函数地址
print(type(a))
func1() ##函数调用
b = func1()
print(b,func1(),func1)

result:
<class 'function'>
func1 func1 <function func1 at 0x00627FA8>
list1 = [func1] #例如将函数作为变量给列表的第一个元素
dict1 = {'func1':func1,'+':lambda *num:sum(num),'-':lambda x,y:x-y}
print(list1[0](),dict1)
print(dict1['func1'](),dict1['+'](1,2,3,4,5))

result:
func1 {'func1': <function func1 at 0x00627FA8>, '+': <function <lambda> at 0x00627F60>, '-': <function <lambda> at 0x00627E40>}
func1 15
def clear_kitchen(time):
    print('在%s时间内打扫厨房,收费200' % time)
    return 200
def clear_bedroom(time):
    print('在%s时间内打扫卧室,收费400' % time)
    return 400

def call_service(time, service):
    service(time)

call_service('10点',clear_bedroom)

result:
在10点时间内打扫卧室,收费400
def operation(operator:str):
    if operator == '+':
        def sum2(*num):
            count = 0
            for item in num:
                count += item
            print(count)
            return count
        return sum2
#函数判断operator等于+,返回sum2函数,sum2开始执行
operation('+')(1,2,3,4,5) 

result:
15

生成器和生成式

#######生成式

list1 = (x for x in range(10))
print(list1,type(list1))
print(next(list1))
print(next(list1))

result:
<generator object <genexpr> at 0x0060BC30> <class 'generator'>
0
1
list2 = [x for x in range(10)]
dict1 = dict((x,x**2) for x in range(10))
print(dict1,type(dict1))
#交换字典中key和value的值
dict2 = dict((value,key) for key,value in dict1.items())
print(dict2)

result:
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81} <class 'dict'>
{0: 0, 1: 1, 4: 2, 9: 3, 16: 4, 25: 5, 36: 6, 49: 7, 64: 8, 81: 9}
生成器

只要含有yield关键字的函数,这种函数会变成生成器。

print('------------------')
def func2():
    for x in range(10):
        yield x
        print('=========')
generator2 = func2()
print(next(generator2))
print(next(generator2))
print(next(generator2))

result:
------------------
0
=========
1
=========
2
def fibonacci():
    f1 = 1
    f2 = 1
    while True:
        yield  f1+f2
        f1,f2 = f2,f1+f2
fe =fibonacci()
迭代器

生成器和生成式产生的对象就是迭代器(iter),用法 iter(可迭代的对象) 转换成迭代器对象。迭代器对象也是通过next和遍历获取

iter1 =iter([1,2,3,4,5,6,7,8])
print(iter1,type(iter1))
print(next(iter1))
print(next(iter1))

result:
<list_iterator object at 0x02664EB0> <class 'list_iterator'>
1
2

文件

通过文件能够数据持久化、本地化使用文件保存数据(数据库文件、txt、json、plist、xml、二进制文件(图片,音频,视频))

打开文件

open(文件地址,打开方式,encoding=编码方式)

打开方式 内容
r 文本(str)形式的读
rb 文本的二进制形式的读
w 写操作,写文本覆盖原文件
wb 写二进制数据覆盖原文件
a 写内容,追加到原内容末尾
f = open('./1.txt',encoding='utf-8')
关闭文件

文件.close()

文件操作
#将文本对象f中的全部数据一行一行的打印出来
content = f.readline()
print(content)
while content:
    print(content)
    content = f.readline()
f.close()
if __name__ == '__main__':
    f = open('./2.txt','r',encoding='utf-8')
    count = int(f.read())
    count += 1
    f.close()
    f = open('./2.txt', 'w', encoding='utf-8')
    f.write(str(count))
    f.close()
上一篇 下一篇

猜你喜欢

热点阅读