• python3 内置函数


    内置函数导图:
    https://www.processon.com/view/link/5b4ee15be4b0edb750de96ac#map

    '''python中的内置函数分类
    1、输入输出:print、input
    需要注意的是input输入的数据是字符串类型。
    '''
    
    print("Hello world")
    
    
    age = input("请输入您的年龄:").strip()
    print(age)
    print(type(age))
    Hello world
    请输入您的年龄:18
    18
    <class 'str'>

    '''2、数据类型强制转换:int、bool、str、list、dict、tuple、set、float、bytes'''
    bs = bytes("中国", encoding="utf-8")
    print(bs)
    print(type(bs))
    
    bs2 = "中国".encode("utf-8")
    print(bs2)
    print(type(bs2))
    b'xe4xb8xadxe5x9bxbd'
    <class 'bytes'>
    b'xe4xb8xadxe5x9bxbd'
    <class 'bytes'>

    '''3、进制转换:bin、oct、int、hex、format'''
    # 十进制转换为二进制bin和format
    print(bin(188))
    print(type(bin(188)))
    
    print(format(188, "b"))
    0b10111100
    <class 'str'>
    10111100

    # 十进制转换为八进制oct和format
    print(oct(188))
    print(type(oct(188)))
    
    print(format(188, "o"))
    0o274
    <class 'str'>
    274

    # 十进制转换为十六进制hex和format
    print(hex(188))
    print(type(hex(188)))
    
    print(format(188, "x"))  # 小写
    
    print(format(188, "X"))  # 大写
    0xbc
    <class 'str'>
    bc
    BC

    # 二进制转换为十进制int
    print(int("10111100", base=2))
    
    print(int("0b10111100", base=2))
    188
    188

    # 八进制转换为十进制int
    print(int("0o274", base=8))
    
    print(int("274", base=8))
    188
    188

    # 十六进制转换为十进制
    print(int("0xbc", base=16))
    
    print(int("bc", base=16))
    188
    188

    '''4、编码相关:chr、ord'''
    # 取字符串在ascii或unicode中的数值
    o = ord("a")
    print(o)
    
    o2 = ord("")
    print(o2)
    
    # 取数值在ascii或unicode中的字符串
    s2 = chr(97)
    print(20013)
    print(s2)
    97
    20013
    20013
    a

    '''5、数学相关:max、min、sum、divmod、abs、pow、round'''
    # max取最大值
    print(max([4, 6, 7, 1, 0]))
    7

    # min取最小值
    print(min([4, 6, 7, 1, 0]))
    0

    # sum求和
    print(sum([4, 6, 7, 1, 0]))
    18

    # divmod求商和余数
    print(divmod(10, 3))
    (3, 1)

    '''请通过分页对数据进行展示
    要求:每页显示10条数据,让用户输入要查看的页码数
    '''
    lst = []
    
    for i in range(88):
        dic = {"name": f"张{i}", "email": f"aa{i}@163.com"}
        lst.append(dic)
        
    total_num = len(lst)  # 总数据条数
    per_page_num = 10  # 每页显示的数据条数
    max_page, last_page = divmod(total_num, per_page_num)  
    
    if last_page:
        max_page += 1  # 一共有max_page页
        
    choice = int(input(f"共{total_num}条数据,共{max_page}页。请输入你要查看的页码数:").strip())
    
    start = (choice-1) * per_page_num  # 开始切片位置
    end = choice*per_page_num  # 结束切片位置
    
    if choice in range(1, max_page+1):
        for item in lst[start:end]:
            print(item)
    else:
        print(f"输出错误,请输入1-{max_page}")
    共88条数据,共9页。请输入你要查看的页码数:8
    {'name': '张70', 'email': 'aa70@163.com'}
    {'name': '张71', 'email': 'aa71@163.com'}
    {'name': '张72', 'email': 'aa72@163.com'}
    {'name': '张73', 'email': 'aa73@163.com'}
    {'name': '张74', 'email': 'aa74@163.com'}
    {'name': '张75', 'email': 'aa75@163.com'}
    {'name': '张76', 'email': 'aa76@163.com'}
    {'name': '张77', 'email': 'aa77@163.com'}
    {'name': '张78', 'email': 'aa78@163.com'}
    {'name': '张79', 'email': 'aa79@163.com'}
    
    
    
    
    
    
    # abs求绝对值
    print(abs(-8))
    
    
    8

    
    
    # pow求次幂
    print(pow(2, 3))
    
    print(2**3)
    
    
    8
    8

    
    
    # round四舍五入
    print(round(3.1415926, 2))
    
    print(round(3.1415926, 4))
    
    
    3.14
    3.1416

    '''6、迭代器、生成器相关:iter、next、range'''
    
    # range(n) 表示0到n的可迭代数据集
    r = range(10)
    print(r)
    print(type(r))
    
    # range(start, end) [start, end) 顾头不顾尾 
    r2 = range(1, 10)
    print(r2)
    print(type(r2))
    
    # range(start, end, step) 步长为step, 当step为正数时,表示从start到end-1,每step个取一个
    r3 = range(1, 10, 2)
    print(list(r3))
    
    # range(start, end, step) 当step为负数时,表示从start到end-1,每abs(step)个取一个
    r4 = range(10, 2, -2)
    print(list(r4))
    range(0, 10)
    <class 'range'>
    range(1, 10)
    <class 'range'>
    [1, 3, 5, 7, 9]
    [10, 8, 6, 4]

    '''可迭代对象使用iter可以生成一个迭代器,iter和__iter__等同'''
    lst = [3, 5, 1]
    
    # 生成一个迭代器
    it = iter(lst)
    print(it)
    
    # 从迭代器中取值
    v1 = next(it)
    print(v1)
    v2 = next(it)
    print(v2)
    v3 = next(it)
    print(v3)
    
    # 当数据取完时,再使用next会报错StopIteration
    v4 = next(it)
    print(v4)
    <list_iterator object at 0x0000000005A83B70>
    3
    5
    1
    
    ---------------------------------------------------------------------------
    StopIteration                             Traceback (most recent call last)
    <ipython-input-46-76deef2c56d9> in <module>()
         15 
         16 # 当数据取完时,再使用next会报错StopIteration
    ---> 17 v4 = next(it)
         18 print(v4)
    
    StopIteration: 
    

    '''7、内存相关:id、hash'''
    
    # 不可变的数据类型,就是可哈希的数据类型:int、bool、str、tuple
    # 取变量的哈希值
    h = hash("中国")
    print(h)
    
    # 获取内存地址
    i = id("中国")
    print(i)
    
    i2 = id({"name":"lily", "age": 18})
    print(i2)
    -4883128536252665742
    95047904
    95109912

    '''可变的数据类型,没有hash值'''
    h = hash({"name":"lily", "age": 18})
    print(h)
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-53-b45da8ba84b8> in <module>()
          1 '''可变的数据类型,没有hash值'''
    ----> 2 h = hash({"name":"lily", "age": 18})
          3 print(h)
    
    TypeError: unhashable type: 'dict'


    '''8、字符串类型代码的执行:exec、eval、compile'''
    # exec无返回值
    print(exec("[3, 5, 1]"))
    exec("print(1)")
    
    # eval有返回值
    print(eval("[3, 5, 1]"))
    eval("print(2)")
    
    # compile
    exec(compile("for i in range(8, 10):print(i)", "", "exec"))
    None
    1
    [3, 5, 1]
    2
    8
    9

    '''9、文件操作相关:open'''
    with open("a.txt", "w", encoding="utf-8") as f:
        f.write("我正在写入文件内容")
    '''10、相关的内置函数:sorted、filter、map、reduce、zip、all、any、enumerate'''
    # sorted(iter, key=func, reverse=False/True)
    # iter:可迭代对象,可迭代对象中的每个元素作为func的参数进行传递
    # key: 函数名,根据函数体的返回值,进行排序,将原可迭代对象,重新排序,并返回
    # reverse:倒序
    # sorted 对可迭代对象根据条件进行排序,没有条件,默认升序排序
    s = sorted([5, 1, 6])
    print(s)
    
    # sorted 对可迭代对象根据条件进行排序,升序
    s2 = sorted(["abc", "4", "sd"], key=lambda x: len(x))
    print(s2)
    
    # sorted 对可迭代对象根据条件进行排序,降序
    s3 = sorted(["abc", "4", "sd"], key=lambda x: len(x), reverse=True)
    print(s3)
    [1, 5, 6]
    ['4', 'sd', 'abc']
    ['abc', 'sd', '4']

    # filter 筛选,过滤用的,返回的是一个迭代器
    f = filter(lambda x: x > 20, [21, 17, 24])
    print('__iter__' in dir(f))
    print(list(f))
    True
    [21, 24]

    # map 映射,对可迭代对象中的每个元素做相同的操作,返回的是一个迭代器
    m = map(lambda x: x+"_good", ["lily", "lucy", "tom"])
    print("__iter__" in dir(m))
    print(list(m))
    True
    ['lily_good', 'lucy_good', 'tom_good']
    
    
    # reduce 对可迭代对象中的每个元素做指定的操作,函数默认有两个参数,返回一个结果数据
    from functools import reduce
    
    # 注意观察,对长度为3的可迭代对象做reduce操作,其实一共执行了3-1次函数的调用
    def func(x, y):
        print(1)
        return x + y
    
    r = reduce(func, [1, 2, 3])
    print(r)
    
    # 使用匿名函数
    r2 = reduce(lambda x, y: x+y, [1, 2, 3])
    print(r2)
    1
    1
    6
    6

    # zip拉链函数,水桶效应, 返回一个迭代器
    lst = [0, 1, 2]
    lst2 = ["a", "b", "c"]
    z = zip(lst, lst2)
    print(z)
    print("__next__" in dir(z))
    print(list(z))
    # 取完了,就为空
    print(list(z))
    
    # 也可以返回一个字典
    z = zip(lst, lst2)
    print(z)
    print(dict(z))
    # 取完了,就为空
    print(dict(z))
    <zip object at 0x0000000005CE8A08>
    True
    [(0, 'a'), (1, 'b'), (2, 'c')]
    []
    <zip object at 0x0000000005CDDE08>
    {0: 'a', 1: 'b', 2: 'c'}
    {}

    # all相当于and,最后返回的是bool值
    re = all([3, 4, "a"])
    print(re)
    
    re1 = 3 and 4 and "a"
    print(re1)
    True
    a

    # any相当于or,最后返回的是bool值
    re = any([3, 4, "a"])
    print(re)
    
    re1 = 3 or 4 or "a"
    print(re1)
    True
    3

    # enumerate枚举, enumerate(可迭代对象),从0开始计数
    for i, v in enumerate(["one", "two", "three"]):
        print(i, v)
        
    # enumerate(可迭代对象, n) ,从n开始计数
    for i, v in enumerate(["one", "two", "three"], 6):
        print(i, v)
    0 one
    1 two
    2 three
    6 one
    7 two
    8 three

    '''11、字符串格式化format'''
    # 居中,空白补空
    print(format("居中", "^20"))
    
    # 居中,*号补空
    print(format("居中", "*^20"))
    
    # 居左,空白补空
    print(format("居左", "<20"))
    
    # 居左,=号补空
    print(format("居左", "=<20"))
    
    # 居右,空白补空
    print(format("居右", ">20"))
    
    # 居右,#号补空
    print(format("居右", "#>20"))
    
    # 保留2位小数
    print(format(3.1415926, ".2f"))
    
    # 保留4位小数,会四舍五入哦
    print(format(3.1415926, ".4f"))
             居中         
    *********居中*********
    居左                  
    居左==================
                      居右
    ##################居右
    3.14
    3.1416

    '''12、调用相关:callable'''
    # 可调用的,返回bool值
    def func():
        print("func")
    callable(func)
    True

    '''13、查看内置属性'''
    print(dir(list))
    ['__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']


    
    
  • 相关阅读:
    git安装和使用
    GitHub入门
    jmeter入门
    this关键字
    ES6函数
    代码雨
    this指向练习题
    a标签阻止默认跳转行为事件
    模板引擎的应用
    面向对象
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/10782563.html
Copyright © 2020-2023  润新知