zoukankan      html  css  js  c++  java
  • python--内置函数

    内置函数

    现在python一共为我们提供了68个内置函数,讲述过程:

    一、其他中的12个

    (一)执行   字符串     类型代码的执行
    1  eval执行有意义的字符串 ,有返回值
     print(eval('1+2'))
     print(eval("print('美丽')"))    #美丽
    2  exec执行 有意义 的字符串,简单的  流程控制  ,没有返回值
     exec('for i in range(5):print(i)')    #0,1,2,3,4

    注释:

    # exec和eval都可以执行 字符串类型的代码
    # eval有返回值 —— 有结果的简单计算
    # exec没有返回值 —— 简单流程控制
    # eval只能用在你明确知道你要执行的代码是什么

    3 compile字符串执行 :编译
    ret='for i in range(5):print(i)'
    c=compile(ret,'','exec')        #用exec执行,有返回值
    exec(c)
    ret='1+2+3+4'
    c=compile(ret,'','eval') #''引号原本的功能是放
    print(eval(c)) # 用eval执行,没有返回值,所以需要打印
    (二)输入输出
    1   input
    input('提示:')
    2   print()
    l='a'
    print(l)                 #a
    print(l,end='%%')     #  a%%    end是print中默认的以换行做结尾,这里可以改为%%结尾
    print(l,end='%%')    #a%%a%%
    print(l,2,3,5,6,sep='%%')     #a%%2%%3%%5%%6      sep是print中元素之间默认用空格隔开,这里可以改成%%
    print(l,2,3,5,6)    #a 2 3 5 6
    f=open('上课',mode='w',encoding='utf-8')     #打开文件夹,之后通过句柄操作文件
    l='mmmm'
    print(l,file=f)     #print中file默认在控制台打印,可以把file=f文件句柄,改成在文件中打印
    f.close()
    (三)内存相关
    1    hash()   #在程序的一次执行中,hash值只有一个,但是再次执行时,hash值就会改变
    print(hash((0,2,3))) #-19文件执行的操作43780824

    2 id()就是内存地址
    print(id(1))
    (四)文件操作相关(1)
    1    open
    f=open('上课')
    print(f.writable())    #False
    print(f.readable())    #True
    print(f.readline())    #把上课文件中的内容读出来了:mmmm
    (五)调用相关
    1    callable  判断是否可以被调用
    print(callable(a))    #Flase
    print(callable(print))  #True
    print(callable(globals))   #globals 加上s
    (六)模块相关
    1  import
    import time
    print(time.time())   #1515230362.92395
    等同于以下例子
    t=__import__('time')
    print(t.time())   #1515230362.92395
    # 某个方法属于某个数据类型的变量,就用.调用
    # 如果某个方法不依赖于任何数据类型,就直接调用 —— 内置函数 和 自定义函数
    (七)帮助
    1   help    查看方法运用
    # help(str)
    
    
    (八)查看内置属性
    1 dir 查看变量的方法
    print(dir([1,2]))
    
    
    二、 基础数据类型相关   38个
    (一)和数据结构相关(24)
     
     1.1和数字相关
    1    数据类型
    bool
    int       整形
    float   # 浮点数(有限循环小数,无限循环小数)  != 小数 :有限循环小数,无限循环小数,无限不循环小数
    complex 复数,不能比较大小  实部+虚部   两个部分都是浮点数
    1+2j
    4+5j
    2   进制转换
    bin   二进制
    print(bin(2))   #0b10
    oct   八进制
    print(oct(2))   #0o2
    hex   十六进制
    print(hex(2))   #0x2
    3  数学运算
    abs  取绝对值
    
    print(abs(-1))
    
    divmod  除余
    print(divmod(9,6))    #(1, 3)  商1  余3
    
    round  小数精确
    print(round(2,445))     #2
    print(round(2,56))    #2
    
    sum   求和   q求和对象是可迭代的  sum(iterable,start)   start开始加的值
    错误写法  print(sum(1,2))
    print(sum([1,2,3,4]))    #10
    print(sum([1,2,3,4],10))     #   第一个数从10 开始加
    
    min   求最小值
    print(min(2,5,6,8))   #2
    print(min(2,5,6,8,-0.5,key=abs))   #-0.5
    
    max
    print(max(2,5,6,8,-1,-8,key=abs))   #8
    
    pow  求幂运算pow(x,y,z)
    print(pow(2,3))    2的3次方
    print(pow(2,3,3)) #幂运算之后再取余2
    (三)列表和元组   可以强转
    t=(1,2,3,4)
    print(list(t))    #[1, 2, 3, 4]
    print(tuple(t)    #再转回元组(1, 2, 3, 4)
    1.2相关内置函数
    1.  reversed  反转
    reverse  反转
    l=[1,3,6,4]
    l.reverse()    #反转l
    print(l)
    reversed 保留原列表,得到一个反向迭代器 l2
    =reversed(l) #生成器 print(l2) #<list_reverseiterator object at 0x018539D0> for i in l2: print(i) #4,6,3,1
    2  slice   切片
    t = (1,2,23,213,5612,342,43)
    t1=slice(0,5,2) 
    print(t1)    #slice(0, 5, 2)    切片
    print(t[t1])  # (1, 23, 5612)     把l从索引0到5开始切片按照每隔2个值切片
    化简:
    print(t[slice(0,5,2)])   # (1, 23, 5612)

    1.3字符串

    3 format #格式化输出
    print('今天很{},我很{},是个{}'.format('美好','美丽','美女'))
    print(format('美丽','>20'))    #把字符串以20个长度为标准,左靠齐
    print(format('美丽','<20'))     #把字符串以20个长度为标准,右靠齐
    print(format('美丽','^20'))    #把字符串以20个长度为标准,居中
    4   bytes
    需求把gbk编码的转换为utf-8,python是unicode编码,需要先把'你好'转为gbk 形式
    print(bytes('美丽',encoding='GBK'))                                    #等价于==print('美丽'.encode('gbk')) #  #b'xc4xe3xbaxc3'把unicode转换为gbk的bytes类型
    print((bytes('美丽',encoding='gbk')).decode('gbk').encode('utf-8'))    #转换成功
    注释:
    网页编程是二进制存储 照片视频也是二进制 html网页爬取也是二进制
    5.bytearray   bytearray(s,encoding='utf-8')  转换编码,特点是可以根据字节码改内容,但是你要提前 知道要改内容的号码
    b_bytes=bytearray('你好',encoding='utf-8')
    print(b_bytes)    #'xe4xbdxa0xe5xa5xbd')
    print(b_bytes[0])   #228
    print(b_bytes[1])   #189
    6.memoryview 视觉展示,只是给我们看,不占用内存,但是要调用是时候还是会占用内存,用处比较少
    memoryview(bytes('hello,eva',encoding='utf-8')
     7.ord字符按照unicode转数字
    print(ord(''))    #20320
    print(ord('1'))    #49
    print(ord('A'))    #65
    print(ord(''))    #10084
    8、chr数字按照unicode转字符,  但是从65(A的数字对应65)开始才能转换
    print(chr(97))    #a
    print(chr(98))    #
    print(chr(65))    #A
    
    
    
    9、ascii   字符在ascii码中的内容就打印出来,不是就转换成u
    print(ascii('')     #'u4f60'
    print(ascii('A') )    #'A'
    10、repr 用于%r格式化输出    ,不同于print的是:会将打印内容的数据类型也一起打印出来
    name='egg'
    print('你好%s'%name)   #你好egg
    print('你好%r'%name)   #你好'egg'
    print(repr('1'))     #'1'
    print('1')       #1
    print(repr(1))   #1
    1.4字符串

    11.dict

    12、set、
    13、frozenset

    14、len

    15、enumerate枚举
    dic={'a':'b','c':'d'}
    for k,i in enumerate(dic,1):
        print(k,i)
     
    1.5相关内置函数(8)
     
    16、all 判断是否有bool值是Flase的值,---一假均假---用中括号写进要判断的值,
    print(all([' ','ni','你']))    #True
    print(all(['','ni','你'])) #Flase
    特殊情况 : print(all([])) #Ture
    print(all([''])) #Flase
     
     17、any 判断bool值是否有True的值-----一真均真
    print(any([' ','ni','']))    #True
    print(any(['','ni','']))    #True
    print(all(['']))    #Flase
     18、zip  返回一个迭代器,拉链功能
     
    a=['a','b']  #列表
    b=['c','d']
    ret=zip(a,b)
    for i in ret:    #('a', 'c')('b', 'd')
        print(i)
    a
    ={'a','b'} #字典 b={'c','d'} ret=zip(a,b) for i in ret: print(i) ##('a', 'c')('b', 'd')和上面效果一样 #简化: a=['a','b'] b=['c','d'] c=['e','f'] for i in zip(a,b,c): #('a', 'c', 'e')('b', 'd', 'f') print(i) #字典、列表、元祖混用拉链 a=['a','b','g'] #不是一一对应的话,自动去除多余的 b={'c','d']} #dict list tuple 都可以用zip 来拉链 c=('e','f']) for i in zip(a,b,c): #('a', 'c', 'e')('b', 'd', 'f') print(i)
    
    
    
    19、filter  filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,

    filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
     
    def f(x):
        return x%2==0
    g=filter(f,[1,3,5,6,7,8])    #filter 得到是一个迭代器
    for i in g:
        print(i)               #6 8
    filter过滤的功能
    def a(z): return z%2==1 #函数返回值为Ture,则放到新的迭代器中 ret=filter(a,[1,2,3,4,5,6]) #函数名不加括号,因为前面filter要来调用函数名,得到的ret是一个迭代器 for i in ret: #不调用不打印 print(i) 功能解析:把可迭代的值传给某个函数,函数来执行
    def a(z): return z%2==0 ret=filter(a,[1,2,3,4,5,6]) for i in ret: print(i) 上面那个filter方法等于这个列表推导式的功能 c=[i for i in [1,2,3,4,5,6] if i%2==1] for i in c: print(i)

    取出0到100中能够开方的整数
    from math import sqrt def num(s): if sqrt(s)%1==0: return True ret=filter(num,range(0,101)) for i in ret: print(i)
    
    
    
    20、map
    Python中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,
    map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,
    map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
     
    #例题L = [1, 2, 3, 4, 5, 6, 7, 8]def l(a):     return a**2g=map(l,L)                #map后得到的也是迭代器print(list(g))              #[1, 4, 9, 16, 25, 36, 49, 64]
    或者用for
    for i in g: print(i)
    注释:

    # 结论:filter()之后元素个数会发生改变,map()之后元素个数不会改变
    # #filter只管筛选,不会改变原来的值 map值会改变

    21、sorted   排序,有key,默认Flse  从小到大排序   reverse=True  从大到小排序
    iterable:是可迭代类型;
    key:传入一个函数名,函数的参数是可迭代类型中的每一项,根据函数的返回值大小排序;
    reverse:排序规则.reverse = True降序或者reverse = False升序,有默认值。
    返回值:有序列表:
    例
    l=[2,1,5,7,-10]
    print(sorted(l,key=abs,reverse=True))     #[-10, 7, 5, 2, 1]
    等同于sort
    l=[2,1,5,7,-10]
    l.sort(key=abs,reverse=True)
    print(l)          #[-10, 7, 5, 2, 1]
    
    sort使用方法
    l=[2,1,5,7,-10]
    l.sort()
    print(l)   #[-10, 1, 2, 5, 7]
     三、匿名函数

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

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







     
     
     
  • 相关阅读:
    MySQL/MariaDB 版本选择
    Linux查看某个进程的磁盘IO读写情况 pidstat
    Oracle 11gR2 Database UNDO表空间使用率居高不下处理
    Linux十字病毒查杀处理
    MySQL字符集与校对
    点与线、线与线之间的位置关系
    [向量] 点积应用-两个向量夹角
    点与线的距离及垂足点
    unity 4.6.1脚本解析出错,没有激活的勾,方法顺序出错
    Error building Player: Exception: Could not start java
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/8228139.html
Copyright © 2011-2022 走看看