内置函数1

截止python版本3.6.2 python一共提供了68个内置函数。

一、作用域相关的:

  1、locals():返回当前作用域中的名字。

  2、globals():返回全局作用域中的名字。

def func():
    a = 10
    print(locals())  #当前作用域中的内容
    print(globals())  #全局作用域中的内容
    print("今天回家看扶摇!")
func()

 

二、迭代器相关的:

  1、range():生成数据

for i in range(20,10,-2):
    print(i)
#结果:
20
18
16
14
12

 

  2、next():迭代器向下执行一次,内部实际使用了__next__()方法返回迭代器的下一个项目 

  3、iter():获取迭代器,内部实际使用的式__iter__()方法来获取迭代器

lst = ["张无忌","喜欢","周芷若"]
it = iter(lst)  #__iter__()
print(it.__next__())
print(next(it))
print(next(it))
print(next(it))  #打印这一行会报错 :StopIteration

三、字符串类型代码的执行:

  1、eval():执行字符串类型的代码,并返回最终结果。

print(eval("2+2")) #4
n = 8
print(eval("2+n")) #10
def func():
    print(666)
eval("func()")  #666

  2、exec():执行字符串类型的代码

exec('''
for i in range(10):
    print(i)
''')
exec('''
def func():
    print('我是张无忌')
func()
''')

  3、compile():将字符串类型的代码编译,代码对象能够通过exec语句来执行或者eval()进行求值

'''    参数说明 :
        1. resource 要执行的代码 , 动态代码片段
        2. 文件名 , 代码存放的文件名 , 当传入了第⼀个参数的时候 , 这个参数给空就可以了
        3. 模式 , 取值有 3 个 ,
                   1. exec: 一般放一些流程语句的时候
                   2. eval: resource 只存放一个求值表达式 .
                   3. single: resource 存放的代码有交互的时候 . mode 应为 single
'''
code1 = "for i in range(10):print(i)"
c1 = compile(code1,"",mode="exec")
exec(c1)
#0123456789
code2 = "1+2+3"
c2 = compile(code2,"",mode="eval")
a = eval(c2)
print(a)
#6
code3 = "name = input('请输入你的名字:')"
c3 = compile(code3,"",mode="single")
exec(c3)
print(name)
#结果是输入的值


@有返回值的字符串形式的代码用eval().没有返回值的字符串形式的代码用exec().一般很少用到compile

 四、和输入输出相关的:

  1、input():获取用户输入的内容。 input(“提示语”)

  2、print():打印输出。

print("张无忌","周芷若","赵敏",sep="***",end="")
#sep="**" 使用**将字符串连接起来。end="\n" 是默认换行,可以替换掉\n
#结果:
张无忌***周芷若***赵敏

五、内存相关:

  1、hash():获取到对象的哈希值(int,str,bool,tuple)

  2、id():获取到对象的内存地址

 hash算法:
    目的是唯一性
    dict 查找效率非常高, hash表.用空间换的时间 比较耗费内存
s = "张无忌"
print(hash(s))
a = 12
print(hash(a))
#结果:
-6726140962277127580
12


lst = [1,2,3,4,5]
# print(hash(lst))  #列表是不可哈希的
print(hash(1,))
print(hash("呵呵"))
print(hash("哈哈"))
#结果:
1
3134359775157687536
-2958795589515679623

六、文件操作相关:

  open():用于打开一个文件,创建一个文件据句柄

七、模块相关:

  __import__():用于动态加载类和函数

#让用户输入一个要导入的模块
name = input("请输入一个你要导入的模块:")
__import__(name)  #可以动态导入模块


#import os 是直接导入模块

 八、帮助相关:

  1、help():函数用于查询函数或模块用途的详细说明

print(help(str))

九、调用相关:

  1、callable():用于检查一个对象是否可调用的,如果返回True,object有可能调用失败,但是如果返回False。那调用绝对不会成功。

a = 10
print(callable(a))

def func():
    print("张无忌")
print(callable(func))  #函数是可以被调用的

#结果:
False
True

 

十、查看内置属性:

  1、dir():查看对象的内置属性,方法,访问的是对象中的__dir__()方法

print(dir(str))

 

十一、基础数据类型相关:    

  1、数字相关:        

    bool():将给定的数据转换成bool值. 如果不给值. 返回False       

    int():将给定的数据转换成int值. 如果不给值, 返回0       

    float():将给定的数据转换成float值. 也就是小数  

a = 11.25
print(type(a))
#结果:
<class 'float'>

       complex():创建⼀个复数. 第⼀个参数为实部, 第二个参数为虚部. 或者第⼀个参数直接 ⽤字符串来描述复数 

  2、进制转换:

    bin():将给定的参数转换成二进制

    otc():将给定的参数转换成八进制

    hex():将给定的参数转换成十六进制

print(bin(10))
print(oct(10))
print(hex(10))
#结果:
0b1010  #二进制
0o12     #八进制
0xa       #十六进制

  3、数学运算:

    abs():返回绝对值

    divmode():返回商和余数

    round():四舍五入

    pow(a,b):求a的b次幂,如果有三个参数。则求完次幂后对第三个数取余

    sum():求和

    min():求最小值

    max():求最大值

print(abs(-2))  #求绝对值
print(abs(2))  
#结果:
2
2
print(divmod(20,3))  #求商和余数
#结果:
(6, 2)
print(round(5.30)) #四舍五入
#结果:
5
print(pow(10,2,3))  #如果给了第三个参数,表示最后一位取余
#结果:
1
print(sum([1,2,3,4,5,6,])) #求和

 

十二、和数据解构相关: 

   1、列表和元组:

    list():将一个可迭代对象转换成列表

       tuple():将一个可迭代对象转换成元组

    reversed():将一个序列翻转,返回翻转序列的迭代器

s = "你好呀"
it = reversed((s)) #不会改变原列表。返回一个迭代器,设计上的一个规则
print(list(it))

    slice():列表的切片

#索引切片
lst = [1,2,3,4,5,6,7]
print(lst[1:3:1])
#slice切片
s = slice(1,3,1)  #切片用的
print(lst[s])
#两种方法的结果都是一样的

  2、字符串相关:

    str():将数据转化成字符串

    format():与具体数据相关,用于计算各种小数,精算等。

#字符串
print(format("test","<20"))  #左对齐
print(format("test",">20"))  #右对齐
print(format("test","^20"))  #居中
#结果:
test                
                test
        test  

#数值
print(format(3,"b"))  #二进制
print(format(97,"c"))  #转换成Unicode字符
print(format(11,"d"))  #十进制
print(format(11,"o"))  #八进制
print(format(11,"x"))  #十六进制(小写字母)
print(format(11,"X"))  #十六进制(大写字母)
print(format(11,"n"))  #和d一样
print(format(11))  #和d一样
#结果:
11
a
11
13
b
B
11
11

#浮点数
print(format(123456789,"e"))  #科学计算法,默认保留6位小数
print(format(123456789,"0.2e"))  #科学计算法,默认保留2位小数(小写)
print(format(123456789,"0.2E"))  #科学计算法,默认保留2位小数(大写)
print(format(1.23456789,"f"))  #小数点计数法,保留6位小数
print(format(1.23456789,"0.2f"))  #小数点计数法,保留2位小数
print(format(1.23456789,"0.10f"))  #小数点计数法,保留10位小数  位数不够用0来补
print(format(1.23456789e+10000,"F"))  #小数点计数法
#结果:
1.234568e+08
1.23e+08
1.23E+08
1.234568
1.23
1.2345678900
INF

    bytes():把字符串转化成bytes类型

s = "张无忌"
bs = s.encode("utf-8")
print(bs)
s1 = bs.decode("utf-8")
print(s1)

bs = bytes(s,encoding="utf-8")   #把字符串编码成utf-8
print(bs)

#结果:
b'\xe5\xbc\xa0\xe6\x97\xa0\xe5\xbf\x8c'
张无忌
b'\xe5\xbc\xa0\xe6\x97\xa0\xe5\xbf\x8c'

    bytearray():返回一个新字节数组,这个数字里的元素是不可变的,并且每个元素的值的范围是[0-256]

ret = bytearray("alex",encoding="utf-8")
print(ret[0])  #97
print(ret)  #bytearray(b'alex')

    memoryview():查看bytes在内存中的情况

s = memoryview("张无忌".encode("utf-8"))
print(s)
#结果:<memory at 0x0000019E31945F48>

    ord():输入的字符带字符编码的位置

print(ord("a"))  #97  返回字母a在编码表中的码位
print(ord(""))  #29233  爱字在编码表中的位置

    chr():输入的位置数字找出对应的字符

print(chr(65))  # A 已知码位,计算字符
print(chr(29233))  #

#查看6553个字符
for i in range(6553):
print(chr(i),end=" ")

    ascii():是ascii码中的返回该值,不是就返回\u......

print(ascii(""))
#结果: '\u60df'

    repr():返回一个对象的string形式

name = "你好。\n我叫%s张无忌"%"周芷若"
print(name)
print(repr(name))  #。过滤掉转义字符\n\t\t,不管百分号
print(r name)     #原样输出
#结果: 你好。 我叫周芷若张无忌 '你好。\n我叫周芷若张无忌'

   3、数据集合

    dict():创建字典

    set():创建一个集合

    frozenset():创建一个冻结的集合。冻结的集合不能进行添加和删除操作

  4、其他相关:

    len():返回一个对象中的元素的个数

lit = ["张无忌","周芷若","小昭","赵敏","张三丰"]
for i in range(len(lit)):
    print(i)
    print(lit[i])
#结果:
0
张无忌
1
周芷若
2
小昭
3
赵敏
4
张三丰

    sorted():对可迭代对象进行排序操作(匿名函数里讲)

    enumerate():获取集合的枚举对象

lit = ["张无忌","周芷若","小昭","赵敏","张三丰"]
for index,el in enumerate(lit,100):  #把索引和元素一起获取,索引默认从0开始,可以更改
    print(index)
    print(el)

#结果:
100
张无忌
101
周芷若
102
小昭
103
赵敏
104
张三丰

    all():可迭代对象中全部是True,结果才是True

    any():可迭代对象中有一个是True,结果就是True

print(any([0,"哈哈","呵呵",True]))
#结果:True

    zip():函数用于将可迭代的对象的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同

lis1 = ["紫薇","小燕子","五阿哥","尔康"]
lis2 = ["林心如","赵薇","苏有朋","周杰"]
lis3 = [20,21,25,29,30]
for el in zip(lis1,lis2,lis3):
    print(el)
#结果:
('紫薇', '林心如', 20)
('小燕子', '赵薇', 21)
('五阿哥', '苏有朋', 25)
('尔康', '周杰', 29)

    filter():过滤(匿名函数里讲)

    map():会根据提供的函数对指定的序列作映射(lamda 匿名函数中里讲)

  

思维导图:

添加修改地址:https://www.processon.com/mindmap/5b507183e4b025cf491ded44

查看浏览地址:https://www.processon.com/view/link/5b509194e4b067df59e1f7d9

 

posted @ 2018-07-24 10:33  LW-5208  阅读(158)  评论(0)    收藏  举报