递归函数和匿名函数
# 递归的应
# def rec(num):
# if num == 1:
# return 1
# return num + rec(num-1)
# a = rec(4)
# print(a)
# lanmda 的使用 lambda 参数列表 : 表达式
# labmda 的体验
# def fn1():
# return 100
# a = fn1()
# print(a)
# fn2 = lambda:100
# print(fn2)
# print(fn2())
# fn1 = lambda a,b:a+b
# print(fn1(1,1))
# 无参数
# fn1 = lambda :100
# print(fn1())
# 一个参数
# fn1 = lambda a : a
# print(fn1('ab'))
# 默认参数
# fn1 = lambda a,b,c =100:a+b+c
# print(fn1(1,1)
# 可变参数 *args -- 返回值为元组
# fn1 = lambda *args:args
# print(fn1(10,10,))
# 可变参数 **kwargs 不定长的关键字参数 -- 返回字典
# fn1 = lambda **kwargs:kwargs
# print(fn1(name='Tom'))
# 带判断的lambda
# fn1 = lambda a,b:a if a > b else b
# print(fn1(100,300))
# 列表数据按字典key的值排序
# student = [{'name':'Tom','age':20},{'name':'Rose','age':12},{'name':'Jack','age':38}]
# student.sort(key=lambda x:x['age'])
# print(student)# 递归的应
# def rec(num):
# if num == 1:
# return 1
# return num + rec(num-1)
# a = rec(4)
# print(a)
# lanmda 的使用 lambda 参数列表 : 表达式
# labmda 的体验
# def fn1():
# return 100
# a = fn1()
# print(a)
# fn2 = lambda:100
# print(fn2)
# print(fn2())
# fn1 = lambda a,b:a+b
# print(fn1(1,1))
# 无参数
# fn1 = lambda :100
# print(fn1())
# 一个参数
# fn1 = lambda a : a
# print(fn1('ab'))
# 默认参数
# fn1 = lambda a,b,c =100:a+b+c
# print(fn1(1,1)
# 可变参数 *args -- 返回值为元组
# fn1 = lambda *args:args
# print(fn1(10,10,))
# 可变参数 **kwargs 不定长的关键字参数 -- 返回字典
# fn1 = lambda **kwargs:kwargs
# print(fn1(name='Tom'))
# 带判断的lambda
# fn1 = lambda a,b:a if a > b else b
# print(fn1(100,300))
# 列表数据按字典key的值排序
# student = [{'name':'Tom','age':20},{'name':'Rose','age':12},{'name':'Jack','age':38}]
# student.sort(key=lambda x:x['age'])
# print(student)
内置高阶函数
# abs() 求绝对值
# a = abs(-10)
# print(a)
# # round() 对数字进行四舍五入计算
# b=round(1.1)
# print(b)
# def sum_num(a,b,f):
# return f(a)+f(b)
# result = sum_num(-1,2,abs)
# print(result)
# 内置高阶函数 -- map(func,lst) 将传入的函数变量func作用到lst变量的每个元素中 并组成新的列表迭代器
# list1 = [1,2,3,4]
# def func(x):
# return x**2
# result = map(func,list1)
# print(list(result)) # 将返回值转化为列表并输出
# reduce == reduce(func,lst) 其中func必须有两个参数 每车次func计算的结果继续和序列的下一个元素做累计计算
# import functools
# list1 = [1,2,3,4,5]
# def func(a,b):
# return a+b
# result = functools.reduce(func,list1)
# print(result)
# filter - filter(func,list) 函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要list,使用list()转换
# list1 = [1,2,3,4,5,6,7,8,9]
# def func(x):
# return x % 2 == 0
# fn1 = filter(func,list1)
# print(list(fn1))
访问模式的特点
文件操作
# 文件操作
# f=open('test.txt','w')
# f.write('aaa')
# f.close
# 访问模式 主访问模式 w: 如果写入会覆盖原有内容 a: 追加 不会覆盖与哪有数据 r:表示只读
# 文件读取
# 文件对象.read(num) num 表示读取数据的长度 换行也表示一个数据
# readlines() -- 可以按照整行的方式把整个问价中的内容进行一次性读取,并返回一个列表,其中每一行的数据为一个元素
# readline() -- 一次读取一行内容
# f = open('test.txt')
# context = f.readline() # 第一次调用读取第一行内容 第二次调用读取第二行内容
# print(context)
# f.close()
# 访问模式的特点 -b -- 用2进制打开文件 -+ 用与读写操作 -b+ 以2进制打开用于读写
# seek -- 用来移动文件指针 语法 文件对象.seek(偏移量,起始位置) 0 - 文件开头 1- 当前位置 2 - 文件结尾
# 文件备份
# '''
# 1. 接收用户输入的文件名
# 2.规划备份的文件名
# 3.备份文件写入数据
# '''
# old_name = input('输入要输入的名字:')
# index = old_name.rfind('.')
# new_name = old_name[:index] + '[备份]' +old_name[index:]
# print(new_name)
# old_f = open(old_name,'rb')
# new_f = open(new_name,'wb')
# while True:
# con=old_f.read(1024)
# if len(con) == 0:
# #表示读取完成
# break
# new_f.write(con)
# old_f.close()
# new_f.close()
# 文件 文件夹操作
# 1.rename() - 重命名文件
# 2.remove() - 删除文件
# 3.mkdir - 创建文件夹
# 4.rmdir - 删除文件夹
# 5.getcwd - 返回当前文件夹所在的目录
# print(os.getcwd)
# 6.chdir()-改变目录路径
# 7.listdir() - 获取某个文件夹的所有文件
# os.mkdir(文件夹名字)