Python基础之内置函数(二)
先上一张图,python中内置函数:
python官方解释在这:点我点我
继续聊内置函数:
callable(object):检查对象是否可被调用,或是否可执行,结果为bool值
def f1():
pass
f2 = 123
print(callable(f1))
print(callable(f2)) out:
True
False
char():
ord():
这两个一起讲,都是对应ASCii表的,char(obect)将十进制数字转化为ascii中对应的字母,ord(object)将字母转化为ascii中对应的十进制数字。
顺便上一张ascii表吧,以便以后查询:
用处呢,可以用来搞随机验证码等等,随机验证码在这:点我点我
>>> chr(89)
'Y'
>>> chr(64)
'@'
>>> ord('x')
120
>>>
compile():将字符串编译成python代码,格式:compile( str, file, type )
compile语句是从type类型(包括’eval’: 配合eval使用,’single’: 配合单一语句的exec使用,’exec’: 配合多语句的exec使用)中将str里面的语句创建成代码对象
exam:
>>> s = "print(123)"
>>> r = compile(s, "<string>", "exec")
>>> exec(r)
123
>>>
执行:
eval() exec()
eval():格式:eval( obj[, globals=globals(), locals=locals()] ), 运算符,表达式:只能执行运算符,表达式, 并且eval() 有返回值
exec(): 格式:exec(obj),执行代码或者字符串,没有返回值,执行代码时,接收代码或者字符串
exam:
>>> s='8*8'
>>> eval(s)
64 #有返回值
>>> >>> exec('8+7*8') #无返回
>>> eval('8+7*8')
64
>>>
dir():快速查看对象提供了哪些功能
help():查看对象使用帮助,显示功能详情
exam:
>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> help(list)
Help on class list in module builtins: class list(object)
| list() -> new empty list
| list(iterable) -> new list initialized from iterable's items
|
| Methods defined here:
divmod() :求商和余数,返回数据类型是元组,常用于页面分页计算
>>> r = divmod(100, 10)
>>> print(r[0])
10
>>> print(r[1])
0
>>> print(r)
(10, 0) #也可这么用
>>> n1,n2=divmod(100,9)
>>> print(n1,n2)
11 1
>>>
isinstance():判断对象是否为某类的实例
>>> s='alex'
>>> isinstance(s,str)
True
>>> li=[1,2,3,4]
>>> isinstance(li,dict)
False
>>>
filter(func,obj):过滤,其中obj为可迭代的对象, 循环第二个参数,将每一个循环元素,去执行第一个参数(函数),如果函数的返回值为True,即合法
filter()用来筛选,函数返回True,将元素添加到结果中。
需要注意的是,filter如果直接打印的话,是一个内存地址,需要将其转化为有序元素,比如list等。
exam:
def f1(args):
result = []
for item in args:
if item > 22:
result.append(item)
return result li = [11, 22, 33, 44, 55]
ret = f1(li)
print(ret) out:
[33, 44, 55] ===================
li=[11,22,33,45,67,23,14,52,]
def f1(a):
if a > 22:
return 1
res=filter(f1,li)
print(type(res))
print(list(res)) out:
<class 'filter'>
[33, 45, 67, 23, 52]
=================
li = [11, 22, 33, 44, 55]
res=filter(lambda a:a>27,li)
print(list(res)) out:
[33, 44, 55]
可以看出来,使用lambda表达式可使代码更简洁,因为lambda表达式是自动return,不用像函数那样特意定义返回值
li=[11,22,33,45,67,23,14,52,]
res=map(lambda a:a+100,li)
print(list(res)) out:
[111, 122, 133, 145, 167, 123, 114, 152]
filter与map的区别:
filter()是使用函数对可迭代对象进行筛选,如果函数返回为True,将对象添加到结果中
map()是使用函数对可迭代对象进行处理,批量操作,将函数返回值添加到结果中
frozenset() :不可变集合,与set()相对
set()是可变的,有add(),remove()等方法。既然是可变的,所以它不存在哈希值
NAME = "ALEX" def show():
a = 123
c = 123
print(locals())
print(globals()) show() out:
{'c': 123, 'a': 123}
{'__package__': None, '__spec__': None, '__cached__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x1007a5c50>, 'show': <function show at 0x10137b620>, '__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', '__file__': '/Users/shane/PycharmProjects/Py_study/Base/S4/test.py', '__doc__': None, 'NAME': 'ALEX'}
hash():生成hash值,生成的值不是固定的
exam:
s = "hhhasdfasdfasdfasdfasdfasdfasdfasdfa" \
"sdfasdfasdfhhhasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf" print(hash(s)) out:
1352149349547718846
len() 计算元素的长度的,但需要注意的一点是汉字:
在2.7中,len('汉字')是按字节算的,值为6
在3.5中,len('汉字')是按字符算的,值为2
exam:
s='李杰'
print(len(s))
b=bytes(s,encoding='utf8')
print(len(b)) out:
2
6
>>> li=[1,2,56,7,8,90]
>>> min(li)
1
>>> max(li)
90
>>> sum(li)
164
>>>
pow() 求幂,等同于**
exam:
>>> pow(10,3)
1000
>>> 10**3
1000
>>>
reversed() 反转
exam:
li = [11,22,1,1] #与 li.reverse() 相同 reversed(li)
print(li) out:
[11, 22, 1, 1]
round() 四舍五入
exam:
>>> round(1.4)
1
>>> round(5.8)
6
>>>
sorted() 排序
exam:
li = [11,2,1,1]
li.sort() 等同:
sorted(li)
zip() 接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表,不是很好描述
exam:
l1 = ["alex", 11, 22, 33]
l2 = ["is", 11, 22, 33]
l3 = ["sb", 11, 22, 33] r = zip(l1, l2, l3)
print(r)
print(list(r)) out:
<zip object at 0x10137cfc8> #注意结果,print的话也是内存地址
[('alex', 'is', 'sb'), (11, 11, 11), (22, 22, 22), (33, 33, 33)]
注意长度计算方式:
x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)
print(list(xy)) out:
[(1, 4), (2, 5), (3, 6)]
一个列表:
x = [1, 2, 3]
zx=zip(x)
print(list(zx))
y=[1,]
zy=zip(y)
print(list(zy)) out:
[(1,), (2,), (3,)]
[(1,)]
slice() 切片
格式:slice(start,stop,step) 也可 slice(none,stop,none)
exam:
l=list(range(10))
print(l)
print(l[slice(1,6,2)])
print(l[1:8:2])
print(l[slice(5)]) out: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 5]
[1, 3, 5, 7]
[0, 1, 2, 3, 4]
字符串也可以这么搞
s='abddfdfdf'
print(s[0:8:2])
print(s[slice(0,8,2)]) out:
adff
adff
Python基础之内置函数(二)的更多相关文章
- python基础之内置函数
该博客内容参考http://www.cnblogs.com/wupeiqi/articles/4943406.html 内置函数 一 详细见python文档,猛击这里 文件操作 操作文件时,一般需要经 ...
- Python基础之内置函数和递归
一.内置函数 下面简单介绍几个: 1.abs() 求绝对值 2.all() 如果 iterable 的所有元素都为真(或者如果可迭代为空),则返回 True 3.any() 如果 iterable 的 ...
- python基础之内置函数补充、匿名函数、递归函数
内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: 1 divmod(a, b) #a.b为数字,a为除数 ...
- python基础之内置函数和匿名函数
内置函数 学习函数以后多了很多概念,例如函数的命名空间,函数的作用域,函数的调用等等,函数的作用就是为了实现某些功能而方便以后可以调用,内置函数就是这样的一些公共的函数,被称为内置函数. 我们就一 ...
- python基础之内置函数(一)
内建函数都在 _builtins_ 里面 (1)abs() 取绝对值 adb(-10) 10 (2)bool()将参数转换成布尔型,返回值是True或False 参数是数字时,0返回False,其他任 ...
- python基础——内置函数
python基础--内置函数 一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...
- python之内置函数(二)与匿名函数、递归函数初识
一.内置函数(二)1.和数据结构相关(24)列表和元祖(2)list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素).tuple:将一个可迭代对象转化成元组(如果是字典,默认将k ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- python基础-内置函数 isinstance() 与 issubclass()
面向对象编程之内置函数 isinstance() 与 issubclass() isinstance():判断一个对象是否是另一个类的实例.返回bool值,True表示是,False表示不是. 语法: ...
随机推荐
- JDK源码那些事儿之PriorityBlockingQueue
今天继续说一说阻塞队列的实现,今天的主角就是优先级阻塞队列PriorityBlockingQueue,从命名上看觉得应该是有序的,毕竟是优先级队列,那么实际上是什么情况,我们一起看下其内部实现,提前说 ...
- 7月新的开始 - Axure学习05 - 元件库的创建
元件库的创建 元件库的创建.载入.编辑和删除等操作 元件库的后缀名名:.rplib 学习结果: 实现iPhone6的原型图 分辨率是 1080*1920,现在我们按比例缩小去实现(360*640)
- 带有EXE参数的启动
(一).先制作一个带启动参数的EXE文件. 步骤: 1.定义全局私有变量:private string[] s = new string[1]; //这里为了简单起见,只做一个 ...
- python 正则表达式特殊字符
字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 ...
- mac上安装Nginx详细教程
1. 安装(可以用 brew 安装) sudo brew install nginx 2. 查看 nginx 版本 nginx -v 3. 启动 nginx sudo nginx 1也可以使用下面的命 ...
- Python 之关键字和实例
Python 之关键字和实例 0.0682018.04.09 20:10:28字数 1073阅读 2671 一.python关键字 Screen Shot 2018-04-09 at 19.50.17 ...
- jaxa技术2
XStream 1. 什么作用 * 可以把JavaBean转换为(序列化为)xml 2. XStream的jar包 * 核心JAR包:xstream-1.4.7.jar: * 必须依赖包:xpp ...
- python - Flask 基础 - 蓝图( Blueprint )(2)
""" 蓝图:为开发者提供的目录结构 - 使用: 1. 根目录创建一个跟项目名一样的文件 - 创建后第一步,在这个文件夹中添加一个 __init__.py 的配置文件 - ...
- [bzoj 1471] 不相交路径 (容斥原理)
题目描述 给出一个N(n<=150)N(n<=150)N(n<=150)个结点的有向无环简单图.给出444个不同的点aaa,bbb,ccc,ddd,定义不相交路径为两条路径,两条路径 ...
- Linux 理解 %iowait (%wio)
理解 %iowait (%wio) 2016/02/25 %iowait 是 “sar -u” 等工具检查CPU使用率时显示的一个指标,在Linux上显示为 %iowait,在有的Unix版本上显示为 ...