python 匿名函数&内置函数
匿名函数:
为了解决那些功能很简单的需求而设计的一句话函数
怎么定义匿名函数:
cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数的形参,x*x是返回值
print(cal(10))
函数名 = lambda 参数 :返回值 参数可以有多个,用逗号隔开
匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
返回值和正常的函数一样可以是任意数据类型
func = lambda x, y, z : x+y+z # 匿名函数实现多个参数相加
print(func(1,2,3))
func = lambda x, y, z : x*y*z # 匿名函数实现多个参数相乘
print(func(1,2,3))
一般我们在和其他功能的函数合作的时候使用。 内置函数
内置函数是python提供给你直接可以拿来使用的所有函数。
到 python3.6.2 python一共提供了68个内置函数,我们可以分成6大类方便理解:
1、作用域相关
基于字典的形式获取局部变量和全局变量
globals()——获取全局变量的字典
locals()——获取执行本方法所在命名空间内的局部变量的字典
2、其他
eval() 将字符串中的代码还原成原始的数据类型
print(eval('{"name": "zhangsan"}')) # 会将字符串类型的'{'name': 'zhangsan'}'还原成字典{'name': 'zhangsan'}输出
exec()将字符串中的代码执行
exec("print('hello,world')") # 会将字符串代码执行,并输出结果
print(exec('print("1+2+3+4")')) # 会将字符串代码执行输出结果,并打印出exec函数返回值None
compile 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。
参数说明:
1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。
2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。
3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。
c = "for i in range(10): print(i)"
comp = compile(c, "", "exec") # 流程语句用exce
exec(comp) c1 = "1+2+3+4"
comp1 = compile(c1, "", "eval") # 求值用eval
print(eval(comp1)) c2 = 'name = input("username:")'
comp2 = compile(c2, "", "single") # 交互式命令用single
exec(comp2) # 会执行交互式命令
print(eval("name")) # 因为指定name,执行完交互式输入后name才存在,所有可以用eval去转换字符串”name“去输出输入的name的值
输入输出:
input() 交互式命令输入
print() 打印输出结果
内存相关:
hash() 返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。
a = (1, 2, 3)
b = {1, 2, 3}
c = [1, 2, 3]
print(hash(a)) # 元祖式不可变类型会返回一个int
print(hash(b)) # 集合式可变类型,不可hash会报错
print(hash(c)) # 列表式可变类型,不可hash会报错
id() 获取变量内存地址
文件操作:
open() 打开一个文件,返回一个文件操作符(文件句柄)
操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)
可以用encoding指定编码.
模块操作相关:
__import__导入一个模块
import time # 导入时间模块
for i in range(10):
time.sleep(1) # 延迟程序运行时间
print("*", end="", flush=True) # flush 屏幕刷新
帮助:
help()
在控制台执行help()进入帮助模式。可以随意输入变量或者变量的类型。输入q退出
或者直接执行help(o),o是参数,查看和变量o有关的操作。。。
调用相关:
callable() 判断一个变量是不是函数
def cal():
print(1) print(callable(cal)) # 是函数返回True
查看参数所属类型的所有内置方法
dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量
print(dir(list)) #查看列表的内置方法
print(dir(int)) #查看整数的内置方法
和数字相关
数字——数据类型相关:bool,int,float,complex
bool ()判断传入的参数的bool值
int() 将传入的全部由数字组成的字符串转换成数字
float()将传入的数字或者全部又数字组成的字符串转换成浮点数
complex()将传入的数字或者全部又数字组成的字符串转换成复数的形式
数字——进制转换相关:bin,oct,hex
bin() 十进制转二进制
oct() 十进制转八进制
hex() 十进制转十六进制
数字——数学运算:abs,divmod,min,max,sum,round,pow
abs() 取绝对值
divmod() 把除数和余数运算结果结合起来,返回一个包含商和余数的元组
min() 在一个数列中取最小值
max() 在一个数列中取最大值
sum() 在一个数列中求和
round( x [, n] ) 以n为位数,返回x的四舍五入的值
pow(x,y,z) 返回x的y次方,如果z存在则对结果取模
和数据结构相关
列表和元祖:
list() 将一个变量的值转换成列表
tuple() 将一个变量的值转换成原则
相关内置函数
reversed() 序列反转
li = [1, 2, 3, 4, 5, 7, 888]
print(list(reversed(li))) # 将列表顺序反转输出
slice()定义一个索引的格式
li = [1, 2, 3, 4, 5, 7, 888]
s = slice(1, 3, 2)
print(li[s])
字符串:
str() 将一个变量的值转换成字符串
format() 格式化输出
bytes() 将字符串以指定的格式转换成bytes字节码
bytearry() 叫做字节数组,是可变的,有序的
ret = bytearray('alex',encoding='utf-8')
print(id(ret))
print(ret[0])
ret[0] = 65
print(ret)
print(id(ret))
memoryview()函数返回给定参数的内存查看对象
ret = memoryview(bytes('你好',encoding='utf-8'))
print(len(ret))
print(bytes(ret[:3]).decode('utf-8'))
print(bytes(ret[3:]).decode('utf-8'))
ord() 返回对应的 ASCII 数值
chr() 返回值是当前整数对应的 ASCII 字符,数字范围(0,255)
ascii() 返回一个可打印的对象字符串方式表示,如果是非ascii字符就会输出\x,\u或\U等字符来表示
repr() 函数将对象转化为供解释器读取的形式。
数据集合——字典和集合:
dict() 创建一个字典
print(dict()) # 创建空字典 print(dict(a='a', b='b', t='t')) # 传入关键字 print(dict(zip(['one', 'two', 'three'], [1, 2, 3]))) # 映射函数方式来构造字典 print( dict([('one', 1), ('two', 2), ('three', 3)])) # 可迭代对象方式来构造字典
set() 创建一个集合
frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
数据集合
len() 计算变量的长度
sorted() 给一个数列排序
enumerate() 枚举,打印一个数列的索引
all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。元素除了是 0、空、None、False 外都算 True。
any()函数用于判断给定的可迭代参数 iterable 中的所有元素又一个为True则为 True
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
num = [1, 2, 3]
nums = ['flower','flow','flight']
print(list(zip(num, nums))) # zip 相当于压缩,会对应把两个参数列表中的对应位置的元素,放在一起组成一个元祖
for i in zip(*nums): # 与 zip 相反,给变量加上*可理解为解压,返回二维矩阵式 print(i)
filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
def cal(x):
return x % 2 == 0 # 定义一个函数,判断X是否能被2整除 print(list(filter(cal, range(100)))) # 利用filter筛选出能被2整除的数 import math
def cal1(x):
return math.sqrt(x) % 1 == 0 # 定义一个函数,判断x的平方根是不是整数,这里用到math模块的sqrt方法 print(list(filter(cal1, range(100)))) # 利用filter筛选出平方根是整数的数列表
map() map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
print(list(map(lambda x: x*x, range(10)))) # 同时利用map函数和匿名函数,得到0-9中所有元素的平方
python 匿名函数&内置函数的更多相关文章
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
- Python之路----内置函数补充与匿名函数
内置函数补充:reversed()保留原列表,返回一个反向的迭代器 l = [1,2,3,4,5] l.reverse() print(l) l = [1,2,3,4,5] l2 = reversed ...
- python之路——内置函数和匿名函数
阅读目录 楔子 内置函数 匿名函数 本章小结 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们 ...
- python学习交流 - 内置函数使用方法和应用举例
内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...
- 十六. Python基础(16)--内置函数-2
十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...
- python 常见的内置函数
内置函数 接下来,我们就一起来看看python里的内置函数.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.这 ...
- python中的内置函数(2)
一.lambda匿名函数定义:为了解决一些简单的需求而设计的一句话函数例子:计算n的n次方 def func(n):#正常的写法 return n**2 f=lambda n:n**2 这里的lamb ...
- Python进阶(五)----内置函数Ⅱ 和 闭包
Python进阶(五)----内置函数Ⅱ 和 闭包 一丶内置函数Ⅱ ####内置函数#### 特别重要,反复练习 ###print() 打印输入 #sep 设定分隔符 # end 默认是换行可以打印到 ...
- python常用的内置函数哈哈
python常用的内置函数集合做一个归类用的时候可以查找 abs 返回数字x的绝对值或者x的摸 all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为true,就 ...
随机推荐
- xampp 丢失api-ms-win-crt-runtimel1-1-0.dll 解决方案
关于api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案 原创 2016年02月29日 21:30:06 标签: 解决方案 / 补丁 / win7 / api-ms-win ...
- Linux 的终端及设置
Linux 的终端及设置 终端是一种字符型设备,有多种类型,通常使用tty 来简称各种类型的终端设备.终端特殊设备文件一般有以下几种: /dev/ttySn 串行端口终端 (Serial Port T ...
- About cookie
1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据. 2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间. ...
- JavaScript属性(第三天)
js语法非常灵活,这致使他非常好用,也造成它比较难掌握的地方: js中的值类型与引用类型在这里不做过多介绍,可以参照其他语言. js是可以动态添加属性的: var person={}; person. ...
- 从零开始在iPhone上运行视频流实时预测模型应用,只需10步
1、买一台苹果电脑,建议MacBook Pro. 2、安装Xcode. 3、克隆TensorFlow:https://github.com/tensorflow/tensorflow.git 4、下载 ...
- Java CAS同步机制 原理详解(为什么并发环境下的COUNT自增操作不安全): Atomic原子类底层用的不是传统意义的锁机制,而是无锁化的CAS机制,通过CAS机制保证多线程修改一个数值的安全性。
精彩理解: https://www.jianshu.com/p/21be831e851e ; https://blog.csdn.net/heyutao007/article/details/19 ...
- 防F12扒代码:按下F12关闭当前页面
只要按下那神秘的审查元素.按下那神秘的F12键,奇迹出现了!网站变成了空白页,可谓杀防君子放火必备佳品!一段JavaScript代码即可实现上述功能,插入到 footer.php 的 </bod ...
- Mac使用
安装you-get: 用到mac下安装软件的工具:brew 百度搜brew到官网首页照说明在终端执行一段指令 安装方法:命令行输入 /usr/bin/ruby -e "$(curl -fsS ...
- zabbix免客户端监控网站URL
1.我们需要在zabbix服务器端(这台服务器需要能正常上网)同时安装zabbix-agent客户端,使其正常监控zabbix服务器 2.创建web监测 点击web监测 创建web监测 3.配置异常报 ...
- map集合实现缓存
package com.linmingliang.myblog.utils; import java.util.Map;import java.util.concurrent.ConcurrentHa ...