1.匿名函数

匿名就是没有名字
def func(x,y,z=1):
return x+y+z 匿名
lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用一次就释放,除非让其有名字
func=lambda x,y,z=1:x+y+z
func(1,2,3)
#让其有名字就没有意义 #有名函数与匿名函数的对比
有名函数:循环使用,保存了名字,通过名字就可以重复引用函数功能 匿名函数:一次性使用,随时随时定义 应用:map,reduce,filter
语法格式:
匿名函数 形参1,形参2,:处理逻辑
# !/usr/bin/python env
# coding:utf-8
from functools import reduce print(list(map(lambda x: x ** 2, range(11)))) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] print(reduce(lambda x, y: x * y, range(1, 11))) # 3628800
print(reduce(lambda x, y: x * y, range(1, 11),2))     # 7257600 注意reduce可以加初始值

print(list(filter(lambda x: x % 2 == 0, range(11))))  # [0, 2, 4, 6, 8, 10]

print(list(i for i in range(11) if i % 2 == 0))       # [0, 2, 4, 6, 8, 10]
map reduce filter语法格式:

关键字(函数,可迭代对象)
map 依次将可迭代对象里元素传入函数中进行逻辑处理,并输出结果
reduce 将可迭代对象里元素1,元素2传入函数中进行逻辑处理,再将结果和元素3再传入函数中进行逻辑处理,依次类推,最终输出结果
filter 遍历可迭代对象序列总每一个元素,判断每个元素布尔值,将布尔值为True的元素显示出来

2.匿内置函数

# bytes
name = "你好"
n1 = bytes(name, encoding="utf-8")
print(n1) # b'\xe4\xbd\xa0\xe5\xa5\xbd'
n2 = bytes(name, encoding="utf-8").decode("utf-8")
print(n2) # 你好 # chr 转为大写字母A-Z 65, 90 ord反之
print(chr(65))
print(chr(90))
# 小写字母a-z 97, 122
print(chr(97))
print(chr(122))
print(ord("z")) # divmod 分页时用得到 100条数据 每页显示11条
print(divmod(100, 11)) # (9, 1) # eval
dict_name = "{'name': 'z', 'age': 20}"
dict_num = "1+3+33*343"
print(eval(dict_name)) # {'age': 20, 'name': 'z'}
print(eval(dict_num)) # 11323 # hash 可hash的数据类型即不可变数据类型 不可hash的数据类型即可变变数据类型
name = "abcdef"
print(hash(name)) # 166900149 # bin hex oct 十进制转为二进制 十六进制 八进制
print(bin(10))
print(oct(100))
print(hex(100))
# 显示
# 0b1010
# 0o144
# 0x64 # isinstance 判断
print(isinstance("fds", str)) # True # issubclass 类判断
print(issubclass(str, object)) # True str是否是object的子类 # 打印局部变量 locals
def func():
age = 1000
print(locals()) # {'age': 1000}
func() # zip
print(list(zip(("a", "b", "c"), (1, 2, 3)))) # [('a', 1), ('b', 2), ('c', 3)] # max min sum 求最大值 最小值 和
people = [
{'age': 123, },
{'age': 1, },
{'age': 100},
]
print(max(people, key=lambda dic: dic["age"])) # {'age': 123} # __import__ 字符窜形式导入
# import "test" 报错 import不能导入字符串 import -->sys-->__import__
module_name = "test"
t = __import__(module_name)
t.say_hi()

3.文件操作

1.打开文件

文件句柄 = open('文件路径', encoding="utf-8",'模式')

需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

打开文件的模式有:

  • r ,只读模式【默认】
  • w,只写模式【不可读;不存在则创建;存在则清空内容;】
  • x, 只写模式【不可读;不存在则创建,存在则报错】
  • a, 追加模式【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

  • r+, 读写【可读,可写】
  • w+,写读【可读,可写】
  • x+ ,写读【可读,可写】
  • a+, 写读【可读,可写】

"b"表示以字节的方式操作

  • rb  或 r+b
  • wb 或 w+b
  • xb 或 w+b
  • ab 或 a+b

注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型 不能指定编码

  read       读取文件所有行 read(n) n是读几个字符

  write     写入数据

  readline 只读一行

  readlines 把每行数据生成一个列表

  wiritelines 将列表形式写入文件

  flush 内存数据写的硬盘中

  tell   显示光标所处的位置

  seek 控制光标的位置 是seek字节 seek(n,0)从0开始 seek(n,1)相对位置开始 seek(-n,2)从末尾开始

2.管理上下文

with open('log','r') as f:
  pass
 
两个文件操作
with open() as f1,open() as f2:
  pass
 
# 文件操作
with open('data_txt.txt', encoding="utf-8") as f:
with open('temp.txt', 'a', encoding="utf-8") as f1:
# 要改数据的行号
res_line = []
# 保存除去空行后的数据
del_n_data = []
data = f.readlines()
for i in data:
if len(i) > 1:
del_n_data.append(i)
for k,v in enumerate(del_n_data):
if v.startswith("zhang") and len(v) == 6:
res_line.append(k)
for i in res_line:
del_n_data[i] = "zzzzzzzzzzzzzzz\n"
print(del_n_data)
f1.writelines(del_n_data) with open('data_txt.txt', 'rb') as f:
# 字符串 -->encode --> bytes
# bytes -->decode --> 字符串
data = f.read()
print(data)
print(data.decode("utf-8")) with open('data_txt.txt', 'wb') as f:
data = "字符串1\n"
f.write(bytes(data,encoding="utf-8"))
f.write(data.encode("utf-8")) with open('data_txt.txt', 'ab') as f:
data = "字符串2\n"
f.write(bytes(data,encoding="utf-8"))
f.write(data.encode("utf-8")) # 读取文件最后一行 循环文件的推荐方式
with open('20190225.log', 'rb') as f:
for i in f:
offs = -10
while True:
f.seek(offs, 2)
data = f.readlines()
#最后一行数据+上面数据 用列表索引-1,可取到最后一行数据
if len(data) > 1:
print(data[-1].decode("utf-8"))
break
#data长度小于1,表示未读到大于一行的数据 添加offs偏移量
offs *=

 

python匿名函数 高阶函数 内置函数 文件操作的更多相关文章

  1. Python中字符串String的基本内置函数与过滤字符模块函数的基本用法

    Python中字符串String的基本内置函数与用法 首先我们要明白在python中当字符编码为:UTF-8时,中文在字符串中的占位为3个字节,其余字符为一个字节 下面就直接介绍几种python中字符 ...

  2. Python学习日记(六)——内置函数和文件操作(lambda)

    lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 if 1 == 1: name = 'prime' else: name = 'c ...

  3. [JSP][JSTL]页面调用函数--它${fn:}内置函数、是推断字符串是空的、更换车厢

    页面中调用函数--之${fn:}内置函数 函数描写叙述 fn:contains(string, substring) 假设參数string中包括參数substring,返回true fn:contai ...

  4. python基础--递归、三元表达式、列表(字典)生成式、匿名函数、常用的内置函数

    函数的递归:函数在调用阶段直接或者间接的又调用自身 递归的两个阶段: 1.回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都是应该下降的,直接有一个最终的结束条件(这个结束条 ...

  5. Python基础(10)_内置函数、匿名函数、递归

    一.内置函数 1.数学运算类 abs:求数值的绝对值 divmod:返回两个数值的商和余数,可用于计算页面数 >>> divmod(5,2) (2, 1) max:返回可迭代对象中的 ...

  6. Day3 - Python基础3 函数、递归、内置函数

    Python之路,Day3 - Python基础3   本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...

  7. 第七篇 python基础之函数,递归,内置函数

    一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...

  8. scoping作用域,anonymous function匿名函数,built-in functions内置函数

    作用域练习1 def test1(): print('in the test1') def test(): print('in the test') return test1 res = test() ...

  9. Python基础3 函数、递归、内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  10. Python装饰器、生成器、内置函数、json

    这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如 ...

随机推荐

  1. MapReduce求最大值最小值问题

    import java.io.File; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import ...

  2. 现代cpu的合并写技术对程序的影响

    对于现代cpu而言,性能瓶颈则是对于内存的访问.cpu的速度往往都比主存的高至少两个数量级.因此cpu都引入了L1_cache与L2_cache,更加高端的cpu还加入了L3_cache.很显然,这个 ...

  3. java数据结构之队列

    队列概述队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作.进行插入操作的端称为队尾,进行删除操作的端称为队头.队列中没有元素时,称为空队列.– ...

  4. web前端html快速入门

    HTML 学前端之间不得不知道一个网站:http://www.w3school.com.cn/ 网上有很多教程关于前端的,写的特别详细,也写的特别好.我们应该要自已理解,一些相应的前端的知识,不能只是 ...

  5. java 实现 HTTP请求(GET、POST)的方法

    使用Java进行服务调用时,避免不了要使用模拟HTTP请求来实现模拟,我在开发过程中恰巧遇到了这类的业务需求,所以就对这类的方法进行了一次总结,原理层次的东西暂时不考虑,毕竟HTTP的底层实现啥的,东 ...

  6. redis实战笔记(7)-第7章 基于搜索的应用程序

    本章主要内容   使用Redis进行搜索 对搜索结果进行排序 实现广告定向 实现职位搜索    

  7. nginx 学习笔记(2) nginx新手入门

    这篇手册简单介绍了nginx,并提供了一些可以操作的简单的工作.前提是nginx已经被安装到你的服务器上.如果没有安装,请阅读上篇:nginx 学习笔记(1) nginx安装.这篇手册主要内容:1. ...

  8. SpringMVC源码阅读:视图解析器

    1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring ...

  9. Tomcat 配置上传文件到项目外的路径

    使用 Tomcat 作为服务器的时候,将上传文件保存在项目路径下,每次重启服务或者打成 war 包的时候很容易丢失上传的文件,于是我们配置 Tomcat 把文件保存到项目外的其他磁盘路径: 1. 打开 ...

  10. 基于Ionic的移动框架搭建