• Pyhton---- 内置函数


      Built-in Functions  
    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()  

    函数分成了6大类

    调用相关

      callable(o),o是参数,看这个变量是不是可调用。

    如果o是一个函数名,就会返回True

    def fucn():
        a = 1
        print(a)
        print(locals())
        print(globals())
    # fucn()
    print(callable(fucn))
    View Code
    def func():pass
    print(callable(func))  #参数是函数名,可调用,返回True
    print(callable(123))   #参数是数字,不可调用,返回False
    实例

    帮助相关

      help: 可以帮助查看一些内置函数的方法特性,可以help(list),包含方法名及使用方法

    在控制台执行help()进入帮助模式。可以随意输入变量或者变量的类型。输入q退出

    或者直接执行help(o),o是参数,查看和变量o有关的操作。。。

    查看内置属性

      dir: 查看该数据类型的内置方法,比help(list)更直观的看到内置方法

    dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量

    print(dir(list))  #查看列表的内置方法
    print(dir(int))  #查看整数的内置方法

    模块

    import:导入模块

    import time

    __import__

    os = __import__('os')
    print(os.path.abspath('.'))

    文件打开

    open:打开模式,r/w/a ,    rb/wb/ab/.  如果同时使用读写,造成光标混乱

    open()  打开一个文件,返回一个文件操作符(文件句柄)

    操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)

    可以用encoding指定编码.

    open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
    #mode:默认读,buffering:是否要缓存,encoding:以什么方式解码

    内存相关的

    :(id,hash)

      hash功能:数据的查找和存储

      字典的key,使用hash,形成唯一的值,再次查找时,通过索引进行查找value,这就是字典的键唯一性的问题,

      哈希判断一个数据类型是否可哈希,一次执行时,对同一个hash的结果总是不变。多次执行代码时,内存地址可能会改变

      id:查找地址

    输入输出

      input:

      print:(1)*args,动态参数,(2)sep: 指定分割符,多个打印内容之间的分隔符,(3)file:写入文件,file

      所有的print都当作往一个文件里写内容

    line = open('name.txt','w',encoding="utf-8")
    def mai():
        import time
        for i in range(65,91):
            s = "
    {name:s}".format(name=str(i))
            time.sleep(0.5)
            print(s,file=line)
    mai()

      print(" %s"%1)" ",每一次把光标移动至头部,flush = True :强制每次打印的内容立即打印,不要缓存

    字符串类型:

      exec:可以处理字符串式的python代码,无返回值

      eval:和exec功能相同,但是有返回值.eval与exec模块,能够接受并运行python程序代码的字符串,。这种结构是python能够实现产品定制的原因,:因为python可以动态的修改,用户可以改进系统内部的代码,
      而不需要拥有或编译整个系统的代码。

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

      
    compile :一次编译,可以多次执行调用
    >>> #交互语句用single
    >>> code3 = 'name = input("please input your name:")'
    >>> compile3 = compile(code3,'','single')
    >>> name #执行前name变量不存在
    Traceback (most recent call last):
      File "<pyshell#29>", line 1, in <module>
        name
    NameError: name 'name' is not defined
    >>> exec(compile3) #执行时显示交互命令,提示输入
    please input your name:'pythoner'
    >>> name #执行后name变量有值
    "'pythoner'"
    View Code

    和数字相关  

    divmod

    divmod(6,2),取商,取余,商余函数, 用在网页分页

    print(divmod(10,3))#divmod(x,y):求x除y 的值,并以元组的方式返回商和余数。
    #(3,1)

    abs:绝对值

    round:round(3,145,2)保留两位小数

    >>> round(10.5)# 使用round 奇进偶弃, 如果距离两边一样远,会保留到偶数的一边。    比如round(0.5)和round(-0.5)都会保留到0,而round(1.5)会保留到2。
    10
    >>> round(11.5)
    12
    #python不支持复数转换为浮点数或者整数
    >>> int(4.5+0.j)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: can't convert complex to int
    >>> float(4+0j)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: can't convert complex to float
    View Code

    pow()

    pow(2,3) 幂次运算:第一个数字与第二个数字的幂次运算。pow(2,3,4) 第三个数取余,是2的3次幂 除以4,取余。pow运算后返回的值为int类型。

    sum

    接收一个可迭代对象,和默认参数,默认参数,计算前面的总和之后然后 和后面的默认参数相加

    sum(iterable[,start])#返回迭代对象全部相加的和,如果填写start ,计算全部和之后再加start
    print(sum(L,1))

    min

    print(min([1,2],default=0)) #default 的作用是用来预防传入的可迭代对象为空时,返回一个 默认值
    min({1,2,3,4,5},key=lambda n:abs(n))# key 是设置一个匿名函数
    max:   
    t= (-5,1,2,4)   
    print(max(t,key=abs))  
    print(max([1,2],default=0))

    总结 :

      数字——数据类型相关:bool,int,float,complex

      数字——进制转换相关:bin,oct,hex

      数字——数学运算:abs,divmod,min,max,sum,round,pow


    作用域相关
    globals :获取全局的变量的字典  

    locals: 获取执行本方法所在命名空间内的局部变量的字典

     

    reversed():参数是一个序列,返回一个迭代器,不修改原列表 ret = reversed(l)

    reverse():参数是一个序列,返回一个None,调用使用l.reverse()

    slice():实现切片的函数

    fromat:



    bytes:功能:用于传输,意义:转换成字节码,修改的时候,会重新创建一个新的内存地址,
    bytearry:对比较长的字符串,修改次数多。指定某处修改,不会改变bytearry 的内存地址。只对字符有作用,
    memoryview#  v = memoryview(bytes("啊水电费",encoding="utf-8"))

    old:字符转编码

    chr:数字转字符
    ASCII:
    repr:功能,显示数据类型 print(“name %r”.fromat("金老板"))


    enumrate():枚举,返回一个元组
    all:接受可迭代对象,有一个假则为假
    any:有一个为真则为真

    print(zip([1,3,4],[12,4,5])):返回迭代器
    zip():接收可迭代的,以短的元素为基准,返回元组:拉链用法
    filetr(): 使用该函数,得到的返回值为迭代器,须用list强转
        def fun(x):
            if x % 2 is 0:
                return  True
        a =filter(fun,[1, 4, 6, 7, 9, 12, 17]) #此时的a 为 <filter object at 0x02461730>
        print(list(a))

    and: return x and x.strip(): and 前面一个值为假,就不会执行下一个

    map():新内容等于原内容

    filter 与map: 都是函数名+可迭代对象
    且返回值都是可迭代对象
    filter:筛选,筛选后的还是原来列表中的
    map:对可迭代对象中的每一项做操作,结果不一定是原来列表中的元素
    sort:
    sorted

    数字有关
    print(int()) #如果不填写内容,返回0
    print(int(3.6)) # 取整
    print(int('12',16))#以十六进制进行转换
    a = int("0xa",16)
    print(a,type(a))#返回类型为int
    #总结:int(x,base=10),x可以为字符串,默认为10进制转换

      float:返回浮点数,可以将字符串类型进行转换

    print(float(1))
    print(float("123"))
    #print(float(1))
    #print(float("123"))

      bool: bool 继承自int类

    #如果传入的为空元祖或者,空字典、空集合都是false,且0 也是false
    print(bool(123<1))
    print(bool(0))
    print(bool({}))
    print(bool(' '))
    print(issubclass(bool,int))#判断是否为继承关系,如果是返回True

      complex:  

    print(complex("1+2j"))#注意:1+2j 中间不能有空格
    print(complex("1"))
    print(complex(1,2))#返回的元组

     和数字相关的数字运算:

      abs:求一个数字的绝对值

    数据结构相关

    —序列——列表与元组:list 意义可以生成列表,强制转换生成器的结果。使用list函数返回一个list类型的列表,参数是可迭代。

    tuple():作用可以使可迭代对象转化为元组,如果参数为字典返回由字典的键组成的元组。如果是列表则返回的是元组,如果列表中还嵌套有列表,是不会改变内层的类型

    a =list((134,23))
    print(a,type(a))
    a =list((134,23))
    a =tuple({1:2,3:4})
    a =tuple([1,2,3,[1,2,3],4])

    序列——列表和元组相关的:list和tuple

    序列——字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr

    ret = bytearray('alex',encoding='utf-8')
    print(id(ret))
    print(ret[0])
    ret[0] = 65
    print(ret)
    print(id(ret))
    bytearray
    ret = memoryview(bytes('你好',encoding='utf-8'))
    print(len(ret))
    print(bytes(ret[:3]).decode('utf-8'))
    print(bytes(ret[3:]).decode('utf-8'))
    memoryview

    序列:reversed,slice

    l = (1,2,23,213,5612,342,43)
    print(l)
    print(list(reversed(l)))
    reversed
    l = (1,2,23,213,5612,342,43)
    sli = slice(1,5,2)
    print(l[sli])
    slice
    1. 函数功能将一个数值进行格式化显示。
    2. 如果参数format_spec未提供,则和调用str(value)效果相同,转换成字符串格式化。
    >>> format(3.1415936)
    '3.1415936'
    >>> str(3.1415926)
    '3.1415926'
    3. 对于不同的类型,参数format_spec可提供的值都不一样
    
    #字符串可以提供的参数,指定对齐方式,<是左对齐, >是右对齐,^是居中对齐
    print(format('test', '<20'))
    print(format('test', '>20'))
    print(format('test', '^20'))
    
    #整形数值可以提供的参数有 'b' 'c' 'd' 'o' 'x' 'X' 'n' None
    >>> format(3,'b') #转换成二进制
    '11'
    >>> format(97,'c') #转换unicode成字符
    'a'
    >>> format(11,'d') #转换成10进制
    '11'
    >>> format(11,'o') #转换成8进制
    '13'
    >>> format(11,'x') #转换成16进制 小写字母表示
    'b'
    >>> format(11,'X') #转换成16进制 大写字母表示
    'B'
    >>> format(11,'n') #和d一样
    '11'
    >>> format(11) #默认和d一样
    '11'
    
    #浮点数可以提供的参数有 'e' 'E' 'f' 'F' 'g' 'G' 'n' '%' None
    >>> format(314159267,'e') #科学计数法,默认保留6位小数
    '3.141593e+08'
    >>> format(314159267,'0.2e') #科学计数法,指定保留2位小数
    '3.14e+08'
    >>> format(314159267,'0.2E') #科学计数法,指定保留2位小数,采用大写E表示
    '3.14E+08'
    >>> format(314159267,'f') #小数点计数法,默认保留6位小数
    '314159267.000000'
    >>> format(3.14159267000,'f') #小数点计数法,默认保留6位小数
    '3.141593'
    >>> format(3.14159267000,'0.8f') #小数点计数法,指定保留8位小数
    '3.14159267'
    >>> format(3.14159267000,'0.10f') #小数点计数法,指定保留10位小数
    '3.1415926700'
    >>> format(3.14e+1000000,'F')  #小数点计数法,无穷大转换成大小字母
    'INF'
    
    #g的格式化比较特殊,假设p为格式中指定的保留小数位数,先尝试采用科学计数法格式化,得到幂指数exp,如果-4<=exp<p,则采用小数计数法,并保留p-1-exp位小数,否则按小数计数法计数,并按p-1保留小数位数
    >>> format(0.00003141566,'.1g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留0位小数点
    '3e-05'
    >>> format(0.00003141566,'.2g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留1位小数点
    '3.1e-05'
    >>> format(0.00003141566,'.3g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留2位小数点
    '3.14e-05'
    >>> format(0.00003141566,'.3G') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留0位小数点,E使用大写
    '3.14E-05'
    >>> format(3.1415926777,'.1g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留0位小数点
    '3'
    >>> format(3.1415926777,'.2g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留1位小数点
    '3.1'
    >>> format(3.1415926777,'.3g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留2位小数点
    '3.14'
    >>> format(0.00003141566,'.1n') #和g相同
    '3e-05'
    >>> format(0.00003141566,'.3n') #和g相同
    '3.14e-05'
    >>> format(0.00003141566) #和g相同
    '3.141566e-05'
    format

    数据集合——字典和集合:dict,set,frozenset

    数据集合:len,sorted,enumerate,all,any,zip,filter,map

    filter和map:http://www.cnblogs.com/Eva-J/articles/7266192.html

    sorted方法:http://www.cnblogs.com/Eva-J/articles/7265992.html

    其他

     字符串类型代码的执行

    内置函数——eval、exec、compile

     输入输出相关

    input() 输入

    s = input("请输入内容 : ")  #输入的内容赋值给s变量
    print(s)  #输入什么打印什么。数据类型是str

    print() 输出

    def print(self, *args, sep=' ', end='
    ', file=None): # known special case of print
        """
        print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False)
        file:  默认是输出到屏幕,如果设置为文件句柄,输出到文件
        sep:   打印多个值之间的分隔符,默认为空格
        end:   每一次打印的结尾,默认为换行符
        flush: 立即把内容输出到流文件,不作缓存
        """
    print源码剖析

    file关键字的说明

    f = open('tmp_file','w')
    print(123,456,sep=',',file = f,flush=True)

    打印进度条

    import time
    for i in range(0,101,2):  
         time.sleep(0.1)
         char_num = i//2      #打印多少个'*'
         per_str = '
    %s%% : %s
    ' % (i, '*' * char_num) if i == 100 else '
    %s%% : %s'%(i,'*'*char_num)
         print(per_str,end='', flush=True)
    #小越越  : 
     可以把光标移动到行首但不换行

    数据类型相关

    type(o) 返回变量o的数据类型

    内存相关

    id(o) o是参数,返回一个变量的内存地址

    hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。

    t = (1,2,3)
    l = [1,2,3]
    print(hash(t))  #可hash
    print(hash(l))  #会报错
    
    '''
    结果:
    TypeError: unhashable type: 'list'
    '''
    hash实例

    hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。

    *每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变。

    t = (1,2,3)
    l = [1,2,3]
    print(hash(t))  #可hash
    print(hash(l))  #会报错
    
    '''
    结果:
    TypeError: unhashable type: 'list'
    '''

     匿名函数

     匿名函数:为了解决那些功能很简单的需求而设计的一句话函数

    #这段代码
    def calc(n):
        return n**n
    print(calc(10))
     
    #换成匿名函数
    calc = lambda n:n**n
    print(calc(10))

    上面是我们对calc这个匿名函数的分析,下面给出了一个关于匿名函数格式的说明

    函数名 = lambda 参数 :返回值
    
    #参数可以有多个,用逗号隔开
    #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
    #返回值和正常的函数一样可以是任意数据类型

    上面是匿名函数的函数用法。除此之外,匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候

    l=[3,2,100,999,213,1111,31121,333]
    print(max(l))
    
    dic={'k1':10,'k2':100,'k3':30}
    
    
    print(max(dic))
    print(dic[max(dic,key=lambda k:dic[k])])
    res = map(lambda x:x**2,[1,5,7,4,8])
    for i in res:
        print(i)
    
    输出
    1
    25
    49
    16
    64
    res = filter(lambda x:x>10,[5,8,11,9,15])
    for i in res:
        print(i)
    
    输出
    11
    15

    现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]

    #答案一
    test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
    print(test(t1,t2))
    #答案二
    print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
    #还可以这样写
    print([{i:j} for i,j in zip(t1,t2)])
    1.下面程序的输出结果是:
    d = lambda p:p*2
    t = lambda p:p*3
    x = 2
    x = d(x)
    x = t(x)
    x = d(x)
    print x
    
    2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
    
    3.以下代码的输出是什么?请给出答案并解释。
    def multipliers():
        return [lambda x:i*x for i in range(4)]
    print([m(2) for m in multipliers()])
    请修改multipliers的定义来产生期望的结果。
    练习

    请务必重点掌握:

    其他:input,print,type,hash,open,import,dir

    str类型代码执行:eval,exec

    数字:bool,int,float,abs,divmod,min,max,sum,round,pow

    序列——列表和元组相关的:list和tuple

    序列——字符串相关的:str,bytes,repr

    序列:reversed,slice

    数据集合——字典和集合:dict,set,frozenset

    数据集合:len,sorted,enumerate,zip,filter,map

    参考文档:

      http://www.cnblogs.com/Eva-J/articles/7206498.html

      https://docs.python.org/3/library/functions.html#object

  • 相关阅读:
    CF1082E Increasing Frequency
    CF1083B The Fair Nut and String
    week2
    CF1082G Petya and Graph
    后缀数组学习笔记
    单纯形法
    验证rbd的缓存是否开启
    如何删除一台OSD主机
    Mon失效处理方法
    查询osd上的pg数
  • 原文地址:https://www.cnblogs.com/huyangblog/p/7808193.html
Copyright © 2020-2023  润新知