zoukankan      html  css  js  c++  java
  • python基础篇【第四篇】内置函数、装饰器:

    一、内置函数:

    对于一些python中常用的函数,python自身就已经定义了一些函数用于调用,我们就叫它内置函数!如以下都是python中内置的函数!

    一些常用的内置函数具体用法:

    一些常用的内置函数具体用法:

    1.abs();取绝对值

    1 n=abs(-2)
    2 print(n)
    3 
    4 结果:
    5 2

    2.all();传入可迭代的对象中,都为真才为真;

    Fasle: 0,None,"",[],{} ,()都为假
    True: 1,-1,True,有值返回真。

    n=all([1,2,3," ",1,-1,True])
    print(n)
    #结果
    True

    3.any();传入可迭代的对象中,有一个为真就为真;

    n=any([0,None,"",[],{} ,()]) #都为假
    print(n)
    
    #结果
    False

    4.bin();传入的十进制,转换成二进制;

    n=bin(10)
    print(n)
    
    #执行结果
    0b1010

    5.oct();传入的十进制,转换成八进制;

    1 n=oct(10)
    2 print(n)
    3 
    4 执行结果
    5 0o12

    6.hex();传入的十进制,转换成十六进制;

    1 n=hex(10)
    2 print(n)
    3 
    4 执行结果
    5 0xa

    7.bytes() 把字符串转换成字节类型,需要指定编码  

    其中: gbk编码:一个汉字占2个字节;

        utf8编码:一个汉字占3个字节;

    1 n=bytes("hello",encoding="utf-8")
    2 print(n)
    3 
    4 执行结果:
    5 b'hello'

    8.chr();把输入的数字,转换成Ascii码表中对应的字母;

    n=chr(78)
    print(n)
    #执行结果
    
    N

    9.ord();把输入的字母,转换成Ascii码表中对应的数字;

    n=ord("K")
    print(n)
    #执行结果
    75

    用chr和ord,可以写一个验证码如下:

     1 #随机生成一个6位验证码
     2 import random
     3 li=[]
     4 for i in range(6):
     5     r=random.randrange(0,5)
     6     if r ==2 or r==4:
     7         num=random.randrange(0,10)
     8         li.append(str(num))
     9     else:
    10         n=random.randrange(65,91)  #从65到90 之间随机取出一个数字
    11         c=chr(n)   #把数字转换成字母
    12         li.append(c)
    13 j="".join(li)   #字符串拼接,只能拼接字符
    14 
    15 print(j)

    10.globals();获取所有的全局变量;

    m=123
    
    n=ord("K")
    # print(n)
    s=globals()
    print(s)
    
    #执行结果
    {'__file__': 'D:/学习功课/s13/day4/内置函数.py', 

    '__doc__': None, '__name__': '__main__',

    '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000000000404B70>,
    '__spec__': None, '__package__': None, 'li': [11, 22, 33, 44, 55],

    'm': 123, '__cached__': None, 's': {...},

    'n': 75, 'random': <module 'random' from 'C:\Python\Python35\lib\random.py'>,

    '__builtins__': <module 'builtins' (built-in)>}

    11.locals():获取所有局部变量

     1 def show(args,a):
     2     k=12
     3     v="wewe"
     4     for i in range(3):
     5         n=i
     6     print(locals())
     7 show("sss","2b")
     8 
     9 #执行结果
    10 {'args': 'sss', 'a': '2b', 'k': 12, 'v': 'wewe', 'n': 2, 'i': 2}

    12.hash值:

    #hash值
    dic = {"sadfasdfasdfasdfasdfasdf":1}
    i = hash("sadfasdfasdfasdfasdfasdf")        #把一般字符串转成hash值
    print(i)

    13.compile():将字符串编译成python代码

      eval();可以把括号里面的字符串当成python执行,但只支持表达式且有返回值;

      exec()     执行,比eval要牛逼,因为exec可以执行任何Python代码,但eval只能执行表达式;但有个缺陷是eval有返回值,而exec没有。   

      exec可以执行compile编译过的,也可以接受代码执行。

      eval()      执行,把接受的字符串当做一个表达式,把代码编译成一行的表达式;

     1 name='print("hello world")'
     2 test=compile(name,'<string>','exec')
     3 print(test)
     4 
     5 #执行结果
     6 <code object <module> at 0x00000000006A1DB0, file "<string>", line 1>
     7 #可以用exec()来调用test
     8 exec(test)
     9 hello world
    10 #也可以用eval()
    11 eval(test)
    12 hello world
    #用eval()执行表达式是有返回值的
    k=eval("2*8")
    print(k)
    #执行结果
    16

    14. callable():能否调用,能调用返回True,不能返回False;

    def show():
        k=12
        v="wewe"
        for i in range(3):
            n=i
    print(callable(show))
    
    #执行结果
    True

    15. isinstance(s,类型)用来判断对象是否是类的实例;

    print(isinstance("s",str))
    #执行结果
    True

    16.filter()  筛选,内部循环第二个参数,让每一个元素执行,如果值返回为True,表示元素合法,将元素添加到结果中,否则不做操作;

    def f2(a):
        if a>22:
            return True
    li=[11,22,33,44,55]
    ret=filter(f2,li)  #循环第二个参数,让每个循环元素执行 函数,如果函数值返回值True,表示元素合法,加到ret中
    print(list(ret))
    #执行结果:
    [33, 44, 55]
    
    #也可以用lambda表达式来运行
    ret=filter(lambda a: a>22,li)
    print(list(ret))

    17.map(函数,可迭代的对象 ):  内部循环第二个参数,让每个元素执行,不加判断,返回值是什么就操作什么

    li=[11,22,33,44,55]
    mret=map(lambda a: a+200,li)
    print(list(mret))
    #执行结果
    [211, 222, 233, 244, 255]

    18.len()查看长度;

    #在python3中文,默认是按字符查看
    s="田杰"
    print(len(s))
    s="田杰"
    b=bytes(s,encoding="utf-8")
    print(len(b))
    #执行结果
    2
    6
    #也可以查看列表长度
    li=[11,22,33,44,55]
    #结果
    5

    19. max():最大值

    li=[11,22,33,44,55]
    n=max(li)
    print(n)
    #结果
    55

    20.min():最小值

    li=[11,22,33,44,55]
    m=min(li)
    print(m)
    #结果
    11

    21. sum():求和

    num=[99,22,33]
    k=sum(num)
    #结果
    154

    22.pow() 求幂

    >>> i1
    18
    >>> pow(i1,2)
    324
    >>> pow(i1,3)
    5832

    23.range()  范围,一般for循环用的比较多,for i in range(5),指循环5次;

    for i  in range(5):
        print(i)
    #结果
    0
    1
    2
    3
    4

    24.memoryview():python3中新添,查看内存地址相关的类

    >>> name = b'daniel'
    >>> name
    b'daniel'
    >>> id(name)
    >>> memoryview(name)
    <memory at 0x1019ee108>
    >>> type(name)
    <class 'bytes'>

    25. reversed():反转,与列表中的反转一样

    li=[11,22,33,44,55]
    k=reversed(li)
    print(list(k))
    #执行结果
    [55, 44, 33, 22, 11]

    26. round():四舍五入

    k=round(3.6)
    print(k)
    
    #结果
    4

    27.divmod():取商和余数

    k=divmod(10,3)
    print(k)
    #结果
    (3, 1)

    28.sorted()  排序, 和列表、元组中的排序一样

    >>> l2 = [5,22,4,2,55,23,]
    >>> sorted(l2)
    [2, 4, 5, 22, 23, 55]

    29.slice()  切片,和字符串、列表中的切片一样

    >>> l1
    [1, 2, 3, 4, 5]
    >>> l1[1:5]  #这个效果和下面实现的是一样的
    [2, 3, 4, 5]
    >>> l1.__getitem__(slice(1,5,None))
    [2, 3, 4, 5]
    #还可以调整步长
    >>> l1.__getitem__(slice(1,5,2))
    [2, 4]
    >>> l1.__getitem__(slice(1,5,1))
    [2, 3, 4, 5]
    >>> l1.__getitem__(slice(0,5,1))
    [1, 2, 3, 4, 5]
    >>> l1.__getitem__(slice(0,5,1))

    30.zip():合并,如把多个列表中的每个元素合并成一个元组:

    li=[1,2,3,7,8]
    a=["w","e","r","t","y",]
    print(list(zip(li,a)))
    #结果
    [(1, 'w'), (2, 'e'), (3, 'r'), (7, 't'), (8, 'y')]
    ##如果元素长度不一样,会忽略
    >>> c = [5,4,3,2]
    >>> print(tuple(zip(a,c)))
    ((1, 5), (2, 4), (3, 3), (4, 2))

    二、装饰器

      在python中一切皆对象,对于函数也是一样的,也可以把一个函数赋值给某个变量,因此函数可以像变量一样被指向和传递;

    下面用实例可以更加形象的描述:

    装饰器就是为了在调用一个函数之前或之后,再调用另一个程序

    注意:是在不能修改原程序的情况下,因为要遵循“开放封闭原则”

    装饰器:
    def outer(func):
        def inter(arg):
            print("before")
            func(arg)
        return inter
    
    @outer
    def f1(name):
        print("F1 %s" %name)
         调用装饰器:@+函数名
         功能:
                 1.自动执行outer函数并且将其下面的函数名f1当做参数传递
                 2.将outer函数的返回值,重新赋值f1   (outer返回值就是inter,现在f1就重新赋值给了inter整个函数)

    给函数传递参数,并函数有返回值的情况;

    def outer(func):
        def inter(*args,**kwargs):
            print("before")
            r=func(*args,**kwargs)
            print("hello")
            return r
        return inter
    @outer
    def f1(a):
        print(a)
        return "屌丝!"
    
    @outer
    def f2(a1,a2):
        print("F2",a1,a2)
        return "臭屌丝!!!"
    
    test=f1(1111)
    print(test)
    
    test2=f2(222,333)
    print(test2)
    
    #结果
    before
    1111
    hello
    屌丝!
    
    before
    F2 222 333
    hello
    臭屌丝!!!
  • 相关阅读:
    小程序开发 access_token 统一管理
    python操作mysql
    Mac版本的idea非正常关闭后,idea打开项目大面积报红
    PySpider爬取去哪儿攻略数据项目
    Python3.9安装PySpider步骤及问题解决
    Selenium 自动化测试工具
    Python 抓取猫眼电影排行
    Python爬虫基本库
    Python 创建一个Django项目
    Python 数据可视化
  • 原文地址:https://www.cnblogs.com/tianjie0522/p/5543650.html
Copyright © 2011-2022 走看看