Python基础之内置函数(五)

一、介绍

Python解释器运行时会自动加载builtins模块,而我们常用的内置函数都是在此模块中;

- 通过globals()查看当前自带模块
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}
- 通过dir()查看builtins模块内置的函数,通过len()计算有153个内置属性,其中大约80多内置函数,60多个内置异常,还有几个内置常数,特殊名称以及模块相关的属性;
len(dir(__builtins__))
  • 内置函数
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() _import_()
complex() hasattr() max() round()
delattr() hash() memoryview() set()
  1. abs()绝对值函数
>>> abs(-100)
100
  1. dict() 创建字典
>>> dict(abc='123')
{'abc': '123'}
>>> dict()
{}
  1. help()帮助函数,查看函数或者模块的使用方法
>>> help()
help> keywords
  1. min()函数,返回最小值
>>> min(1, 2, 3)
1
  1. setattr()函数,跟类有关,后续补充
  2. all()函数,判断元组或列表内元素是否为True,如果有一个不为True那么结果为False
>>> a = [1, 2, 3]
>>> all(a)
True
>>> b = [0, 1, 2]
>>> all(b)
False
  1. dir()函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表
dir()
['A', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b']
>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__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']
  1. hex()函数,将十进制转换为十六进制
>>> hex(10)
'0xa'
  1. next()函数,返回迭代器中下一个元素值
>>> number = '178582258'
>>> it = iter(number)
>>> next(it)
'1'
>>> next(it)
'7'
  1. slice(), 返回切片类型的对象
>>> myslice = slice(5)
>>> myslice
slice(None, 5, None)
>>> arr = range(10)
>>> arr[myslice]
range(0, 5)
  1. any(),与all()相反,判断元组或列表内元素是否为False,如果有一个不为False那么结果为True
>>> any([0, 0, 0])
False
>>> any([0, 1, 2])
True
  1. divmod(),计算两个值相除,返回商和余数
>>> divmod(3, 1)
(3, 0)
>>> divmod(3, 2)
(1, 1)
  1. id(),获取对象的内存地址
>>> id(3)
1876484912
  1. object(),该方法不接收任何参数,返回一个没有任何功能的对象。object是Python所有类的基类。
  2. sorted(),排序函数
>>> sorted([88, 2, 44, 51, 2231, 5, 111, 41])
[2, 5, 41, 44, 51, 88, 111, 2231]
>>> sorted((88, 2, 44, 51, 2231, 5, 111, 41))
[2, 5, 41, 44, 51, 88, 111, 2231]
  1. ascii(),打印函数,类似于print()方法
>>> ascii('abc')
"'abc'"
>>> ascii(2)
'2'
  1. enumerate(), 枚举函数,可用for循环打印出列表元素以及对应的下标
>>> a = ['lain', 'tom', 'lili', 'sunne']
>>> for i in enumerate(a):
     print(i)
(0, 'lain')
(1, 'tom')
(2, 'lili')
(3, 'sunne')
  1. input(),输入函数
>>> input('姓名: ')
姓名: LAIN
'LAIN'
  1. oct(),讲十进制转成八进制
>>> oct(222)
'0o336'
  1. staticmethod(),跟类有关,后续补充
  2. bin(),讲十进制转成二进制
>>> bin(333)
'0b101001101'
>>> bin(2)
'0b10'
  1. eval(),执行字符串表达式,并返回结果
>>> eval(('7 + 1'))
8
  1. int(),将字符串或者数字转换成整型,可指定进制数
>>> int('22', 8)
18
>>> int('22', 16)
34
>>> int('22', 10)
22
  1. open(),文件操作,打开或者创建文件等;
  2. str(), 更改类型为字符串
>>> type(str({'name1':'lain', 'name2':'lilei', 'name3':'tom'}))
<class 'str'>
>>> type({'name1':'lain', 'name2':'lilei', 'name3':'tom'})
<class 'dict'>
  1. bool(),返回布尔值
>>> bool()
False
>>> bool(2)
True
  1. exec(),执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码
>>> exec('print("hello world")')
hello world
  1. isinstance(),判断对象是否属于某个数据类型
>>> isinstance('1', int)
False
>>> isinstance(1, int)
True
  1. ord(),返回ascii码表上的数字
>>> ord('A')
65
>>> ord('a')
97
  1. sum(),求和
>>> sum([1, 2, 3])
6
>>> sum((2, 3, 4))
9
  1. bytearray(),返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256
如果 source 为整数,则返回一个长度为 source 的初始化数组;
如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
如果没有输入任何参数,默认就是初始化数组为0个元素。
>>> bytearray([1, 2, 3])
bytearray(b'\x01\x02\x03')
>>> bytearray('jianshu.com', 'utf-8')
bytearray(b'jianshu.com')
  1. filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中
def is_odd(n):
    return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5])
newlist = list(tmplist)
print(tmplist)
print(newlist)
执行结果:
<filter object at 0x021195F0>
[1, 3, 5]
  1. issubclass(),类相关函数后续补充
  2. pow(),幂函数
>>> pow(2, 2)
4
>>> pow(2, 3)
8
  1. super(),类相关函数后续补充
  2. bytes(),将对象类型转换为字节
>>> bytes(2)
b'\x00\x00'
>>> bytes('i', encoding='utf-8')
b'i'
  1. float(),将对象类型转换为浮点数
>>> float(100)
100.0
>>> float(-12)
-12.0
  1. iter(),生成迭代器,使其具备next()功能
>>> a = [1, 2, 3]
>>> b = iter(a)
>>> next(b)
1
>>> next(b)
2
>>> next(b)
3
  1. print(),打印函数
>>> print('Hello World')
Hello World
  1. tuple(),将对象转换成元组类型
>>> tuple()
()
>>> tuple('lain')
('l', 'a', 'i', 'n')
>>> tuple(['lain', 'baidu', 'FB', 'alibaba'])
('lain', 'baidu', 'FB', 'alibaba')
  1. callable(),判断对象是否可以被调用
>>> callable(0)
False
>>> callable('lain')
False
>>> def add(a):
    print(a)
>>> callable(add)
True
  1. format(),字符串格式化
>>> print('my name is {0}'.format('lain'))
my name is lain
  1. len(),计算长度或者元素个数
    
>>> len('jianshu.com')
11
>>> len(['lain', 'baidu', 'FB', 'alibaba'])
4
  1. property(),类相关函数后续补充
  2. type(),查看对象数据类型
    
>>> type(3)
<class 'int'>
>>> type(['lain', 23, 'shenzhen'])
<class 'list'>
  1. chr(),与ord相反,给出ascii码表中对应得数字,返回字符
>>> ord('a')
97
>>> chr(97)
'a'
  1. frozenset(),创建冰冻集合此集合不可增删改
>>> frozenset([2, 3, 4, 6])
frozenset({2, 3, 4, 6})
  1. list(),将对象转换成列表
>>> list('hello world')
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
  1. range(),返回可迭代对象
>>> range(10)
range(0, 10)
  1. vars(),返回字典
>>> x = 1
>>> scope = vars()
>>> scope["x"]
1
  1. classmethod(),类相关函数后续补充
  2. getattr(),类相关函数后续补充
  3. locals(),返回当前作用域下局部变量
locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 1, 'b': 2, 'add': <function add at 0x02E6DA50>, 'x': 1, 'scope': {...}}
  1. repr(),类似print打印
>>> repr(a)
'1'
  1. zip(),用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存
>>> a = [1, 2, 3, 4, 5]
>>> b = ['a', 'b', 'c', 'd', 'e']
>>> list(zip(a, b))
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]
  1. compile(),将一个字符串编译为字节代码
>>> a = '3 + 6'
>>> eval(compile(a, '', 'eval'))     
9
  1. globals(),会以字典类型返回当前位置的全部全局变量
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': '3 + 6', 'b': ['a', 'b', 'c', 'd', 'e'], 'add': <function add at 0x02E6DA50>, 'x': 1, 'scope': {...}}
  1. map(),会根据提供的函数对指定序列做映射,第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表
calc = lambda x, y: x * y
data = map(calc, [1, 2, 3, 4, 5], [6, 7, 8, 9, 10])  #将第一个列表和第二个列表分别当做参数x,y
for i in data:
    print(i,end=' ')

运行结果:
6 14 24 36 50
  1. reversed(),返回一个反转的迭代器
<class 'reversed'>
>>> reversed([1, 2, 4])
<list_reverseiterator object at 0x02E4EAD0>
>>> a = reversed([1, 2, 3, 5])   #list结果是一个反转的列表迭代器
>>> list(a)
[5, 3, 2, 1]
>>> list(a)  #第二次list就是空
[]
>>> type(a)
<class 'list_reverseiterator'>
  1. import(),动态加载类或者函数以及模块
>>> __import__('time')  #类似于import time
<module 'time' (built-in)>
>>> import time
  1. complex(),用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数
>>> complex(1, 2)
(1+2j)
>>> complex('1')
(1+0j)
>>> complex('1+2j') 
(1+2j)
  1. hasattr(),类相关函数后续补充
  2. max(),返回最大值
>>> max([1, 2, 3, 4])
4
>>> max(1, 2, 3, 5)
5
  1. round(),四舍五入,可以指定小数位数
>>> round(3.4)
3
>>> round(4.6)
5
>>> round(3.1415926, 3)
3.142
>>> round(3.1415926, 2)
3.14
  1. delattr(),类相关函数后续补充
  2. hash(),返回对象的哈希值
>>> hash('jianshu.com')
1705446308
>>> hash(15278569)
15278569
  1. memoryview(),返回obj的内存视图对象;obj只能是bytes或bytesarray类型
>>> a = memoryview(b'jianshu.com')
>>> a[:]
<memory at 0x02E3E6B0>
  1. set(),将对象转换为集合
>>> a = set([1, 2, 3, 4, 5])
>>> type(a) 
<class 'set'>
>>> type(set())
<class 'set'>
>>> type(set('hello world'))
<class 'set'>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,934评论 17 410
  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,793评论 2 16
  • 女儿像旋风一样一进门就冲到我面前,嘟着小嘴声音不大的说:妈妈我这次没考好。我自顾忙碌着,正在结束厨房的最后一趟...
    浩淼阅读 589评论 1 1
  • 今天在高新店楼梯的墙面上看到这幅鸡汤 并不是第一次看到,今天却感觉内心一动。人生有起有伏,没有一直向上,也没有一直...
    Panda盼子阅读 765评论 1 0
  • 文|东东 1 郑州扯淡事 每次回家不得不提郑州。除了每次坐火车都需要从郑州中转之外,还有一个原因,因为郑州是我故土...
    郝东东阅读 154评论 0 1