python之内置函数

 思维导图:https://www.processon.com/mindmap/5b728191e4b053a09c335d86

 

1、作用域相关:

  locals()  返回当前作用域中的名字

  globals()  返回全局作用域中的名字

2、迭代器/生成器相关:

  range()  生成数据

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

  iter()  获取迭代器,其内部实际使用的是__iter__()方法来获取迭代器

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

  eval()  执行字符串类型的代码,并返回最终结果(重在返回),示例如下:

print(eval("2+2"))   # 结果为:4
    n = 8
    print(eval("2+n")) # 结果为:10

    def func():
        print(666)
    eval("func()")   # 结果为:666

exec()  执行字符串类型的代码,没有返回,示例如下:

exec("""
    for i in range(10):
        print(i)
    """)

    exec("""
    def func():
        print("我是周杰伦")
    func()
    """)

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)

        code2 = "1+2+3"
        c2 = compile(code2, "", mode="eval")
        a = eval(c2)
        print(a)

        code3 = "name = input('请输入你的名字:')"
        c3 = compile(code3, "", mode="single")
        exec(c3)
        print(name)  # pycharm里的报错信息. 不一定是对的

 注意:有返回值的字符串形式用eval(),没有返回值的字符串形式的代码用exec(),一般很少用compile()

4,输入和输出相关:

       input()  获取用户输入的内容

       print()  打印输出

5,内存相关:

       hash()  获取到对象的哈希值(可哈希的有int,str,bool,tuple)

              目的是为了存储. 计算之后是一个数字. hash值尽量的不要重复(在某些特定环境下hash可能会重复)

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

6,文件操作相关:

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

7,模块相关:

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

8,帮助:

       help()  用于查看函数或模块用途的详细说明

9,调用相关:

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

10,查看内置属性:

       dir()  查看对象的内置属性和方法,访问的是对象中的__dir()__方法

11,基础数据类型相关:

   1)数字相关:

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

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

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

       complex()  创建一个复数,第一个参数为实部,第二个参数为虚部,或第一个参数直接用字符串来描述复数

       2)进制转换:

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

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

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

       3)数学运算:

       abs()  返回绝对值

       divmode() 返回商和余数

       round()  四舍五入

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

       sum()  求和(最多有两个参数,且至少有一个是可迭代对象)

       min()  求最小值

       max()  求最大值

       4)和数据结构相关:

       列表和元组:

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

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

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

       slice()  列表的切片,如下示例:

  st = "大家好,我是小麻花"
  s = slice(1, 5, 2)
  print(st[s])  # 结果为:家,

  字符串相关:

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

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

# 字符串
    print(format('test', '<20'))  # 左对齐
    print(format('test', '>20'))  # 右对齐
    print(format('test', '^20'))  # 居中
    # 数值
    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)) # 和d一样
    # 浮点数
    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位小数
    print(format(1.23456789e+10000, 'F'))  # 小数点计数法   结果为:INF(表示无穷大)

bytes()  把字符串转化成bytes类型,如下示例:

s = "你好"
    bs = s.encode("utf-8")
    print(bs)  # 结果为:b'\xe4\xbd\xa0\xe5\xa5\xbd'
    s1 = bs.decode("utf-8")
    print(s1)

    bs = bytes(s, encoding="utf-8")
    print(bs)  # 结果为:b'\xe4\xbd\xa0\xe5\xa5\xbd'


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

    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 0x0000000002640048>

     ord()  输入字符找该字符编码的位置,如下示例:

  chr()  输入位置数字找出对应的字符,如下示例:

  ascii()  是ascii码中的返回该值,不是就返回\u…,如下示例:

# 找到对应字符的编码位置
    print(ord('a'))   # 结果为:97
    print(ord(''))  # 结果为:20013

    # 找到对应编码位置的字符
    print(chr(97))  # 结果为:a
    print(chr(20013)) # 结果为:中

    # 在ascii码中就返回这个值,如果不在就返回\u...
    print(ascii('a'))  # 结果为:'a'
    print(ascii(''))  # 结果为:'\u597d'

repr()  (下节介绍)

       数据集合相关:

       dict()  创建一个字典

       set()  创建一个集合

       frozenset()  创建一个冻结的集合,冻结的集合不能进行添加和删除操作(可哈希)

       其他相关:

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

       sorted()  对可迭代对象进行排序操作(下节介绍)

       enumerate()  获取集合的枚举对象,如下示例:

lst = ['alex','wusir','taibai']
for index,el in enumerate(lst):
    print(str(index)+"==>"+el)

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

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

print(all([1,2,True,0]))  # 结果为:False
print(any([1,'',0]))  # 结果为:True

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

l1 = [1,2,3]
    l2 = ['a','b','c','5']
    l3 = ['*','**',(1,2,3)]
    print(zip(l1,l2,l3))   # 结果为:<zip object at 0x000000000264D208>
    for i in zip(l1,l2,l3):
        print(i)
    # 结果为
    # (1, 'a', '*')
    # (2, 'b', '**')
    # (3, 'c', (1, 2, 3))

filter()  过滤(下节介绍)

map()  会根据提供的函数对指定序列做映射(下节介绍)

posted @ 2018-08-14 17:44  卍风衍  阅读(182)  评论(0编辑  收藏  举报