• python函数 | 内置函数大全


    • 数学运算(7)
    • 类型转换(21)
    • 序列操作(8)
    • 对象操作(6)
    • 反射操作(7)
    • 装饰器(3)
    • 变量作用域(3)
    • 字符串类型代码(4)
    • 输入输出(2)
    • 迭代器、生成器相关(2)
    • 其他(4)

    一、数学运算

    abs:返回数字的绝对值

    abs(-1)                     # 1

    round:保留浮点数的小数位数,默认保留整数。四舍五入。

    round(1.553,1)                 #1.6

    divmod:计算除数和被除数的结果,并返回一个包含商和余数的元组

    divmod(5,2)                 # (2,1)

    pow:求x**y次幂(当有第三参数时,x**y的结果对z取余 )

    pow(2,5)               #32
    pow(2,3,5)             # 这里为3个参数,2的3次方,结果为8。用8和5做除法,取余为3,最终输出3

    sum:可迭代对象进行求和计算(可设置初始值)

    # sum最多只有2个参数
    sum([1,2,3,4,5])            #15
    sum([1,2,3,4,5],100)         #115
    sum(1,2,3,4,5)              #报错

    min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值)。

      I. 将iterable的每一个元素当作函数的参数传给函数,字典中,元素是键

      II. 按照函数的返回值进行比较大小

      III. 返回的是遍历的元素x,即传入函数的参数

    min([1,-2,3,-4,5])                        #-4
    min([1,-2,3,-4,5],key=abs)                # 按照绝对值的大小,返回此序列最小值 1
    min(1,2,-5,6,-3,key=lambda x:abs(x))      # 可以设置很多参数比较大小
    ls=[('spring',100),('summer',18),('winter',500)]
    def func(x):
        return x[1]
    print(min(ls,key=func))              #('summer',18)
    dic = {'a': 3, 'b': 2, 'c': 1}
    def func1(x):
        return dic[x]
    print(min(dic,key=func1))          # c
    # x为dic的key,lambda的返回值(即dic的值进行比较)返回最小的值对应的键
    dic = {'a':3,'b':2,'c':1}
    print(min(dic,key=lambda x:dic[x]))         # c,只有键没有值
    
    
    min(dic.items(),key=lambda x:x[1])        # ('c', 1)
    
    [min(dic.items(),key=lambda x:x[1])]         # [('c', 1)]
    
    必须外面加上【】,转成元组组成的字典之后才可以使用dict转成字典
    dict([min(dic.items(),key=lambda x:x[1])]) #{'c': 1}

    max:返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值)。与min用法相同

     

    二.类型转换

    进制转化

    bin:将十进制转化成二进制

    bin(100)       #0b1100100

    oct:将十进制转化成八进制

    oct(100)        #0o144

    hex:将十进制转化成十六进制

    hex(100)       #0x64

    字符串和ASCll编码转换

    ord:输入字符,找该字符在unicode编码的位置

    ord('A') = 65
    ord('Z') = 90
    
    ord('a') = 97
    ord('z') = 122
    
    ord('') = 20320

    chr:输入位置数字,找出相对应的字符,与ord相反

    chr(65) = 'A'
    chr(90) = 'Z'
    
    chr(97) = 'a'
    chr(122) = 'z'
    
    chr(20320) = ''

    ascii:是ascii码表中的内容返回原值,不是返回u + 他在Unicode中的位置

    ascii('q')            #'q'
    ascii('')           #'u4f60'  转化成十进制就是 20320

    数据类型转化相关

    int:将字符串或数字转化成整型,用于将其他进制数转化成十进制。取整数,不会四舍五入

    int(1.543)       #1
    int('123')       #123
    int('0101',base=2)   # 5

    float:将字符串或整数转化成浮点型

    float(1)         #1.0
    float('1')       #1.0

    bool:用于将给定参数转化为布尔类型

    bool(123)        #True

    complex:用于创建一个值为 real+image*j的复数,当第一个参数为字符串时,不要设置第二个参数。

    complex(1,2)     #(1+2j)
    complex('1')     #(1+0j)

    str:将数据转化成字符串

    str(2.3)                           # 转换为字符串2.3

    bytes:用于不同编码之间的转化。将unicode 转为非unicode。只能编码,不能解码

    编码转换,将unicode转换为utf-8
    方法一:
    s1 = '小太阳'
    s2 = s1.encode('utf-8')
    print(s2)                           # b'xe5xb0x8fxe5xa4xaaxe9x98xb3'
    
    方法二:
    s1 = '小太阳'
    print(bytes(s1,encoding='utf-8')) # b'xe5xb0x8fxe5xa4xaaxe9x98xb3'

    list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素)

    l1 = list((1,2,3))                # [1, 2, 3]
    l2 = list({1,2,3})                # [1, 2, 3]
    l3 = list({'name':'xiaoming','age':13})    # ['name', 'age']

    tuple将一个可迭代对象转化成元组如果是字典,默认将key作为元组的元素

    tup1 = tuple([1,2,3])                # (1, 2, 3)
    tup2 = tuple({'name':'xiaoming','age':13})  # ('name', 'age')

    dict:创建一个字典   *****

    dict(a = 1,b = 2)                 # {'b': 2, 'a': 1}
    
    # 传入映射函数创建字典。
    dict(zip(['a','b'],[1,2]))           # {'b': 2, 'a': 1}
    
    # 传入可迭代对象创建字典。
    dict((('a',1),('b',2)))             # {'b': 2, 'a': 1}
    dict([('a',1),('b',2)])             # {'b': 2, 'a': 1}

    set:创建一个集合

    a = set(range(10))                 # 传入可迭代对象,创建集合{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

     

    其他

    bytearry:返回一个新字节数组。数组中元素可变,并且每个元素的值范围: 0 <= x < 256。(很少用)

    ret = bytearray('hello',encoding='utf-8')
    print(ret)   #bytearray(b'hello')
    print(id(ret))   #1979800230744
    print(ret[0])   #104  h在ascii码中的位置
    
    ret[0] = 97   #将第一位改为a
    print(ret)   #bytearray(b'aello')
    print(id(ret))   #1979800230744  id是相同的
    bytearray('中文','utf-8') # bytearray(b'xe4xb8xadxe6x96x87')

    memoryview:返回对象obj的内存查看对象。所谓内存查看对象,就是对象符合缓冲区协议的对象,为了给别的代码使用缓冲区里的数据,而不必拷贝,就可以直接使用。(没啥用)

    ret = memoryview(bytes('你好',encoding='utf-8'))
    print(ret)   #<memory at 0x000001DA89DDB408>
    print(len(ret)) # 6
    print(bytes(ret[0:3]).decode('utf-8'))   #你
    print(bytes(ret[3:]).decode('utf-8'))   #好
     
    ret = memoryview(b'abcefg')
    print(ret[1])                   # 98
    print(ret[-1])                  # 103

    frozenset:返回一个冻集合(新的不可变集合),冻结后的集合不能再添加或删除任何元素

    a = frozenset(range(10))
    print(a)                                # frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})

    enumerate:枚举,返回一个枚举对象。 (0, seq[0]), (1, seq[1]), (2, seq[2])

    li = ['spring', 'summer', 'autumn', 'winter']
    print(enumerate(li))                 # <enumerate object at 0x02E3D558>
    print('__iter__' in dir(enumerate(li)))       # True
    print('__next__' in dir(enumerate(li)))       # True

      enumerate是一个迭代器, 返回结果为:列表元素的索引以及对应的值

    li = ['spring', 'summer', 'autumn', 'winter']
    for i in enumerate(li):
        print(i)
    

    执行输出:
    (0, 'spring')
    (1, 'summer')
    (2, 'autumn')
    (3, 'winter')

    li = ['spring', 'summer', 'autumn', 'winter']
    
    for k,v in enumerate(li):
        print(k,v)

    执行输出:

    0 spring

    1 summer

    2 autumn

    3 winter

      enumerate的第2个参数,表示从多少开始。默认从0开始

    li = ['spring', 'summer', 'autumn', 'winter']
    print(list(enumerate(li)))                 # [(0, 'spring'), (1, 'summer'), (2, 'autumn'), (3, 'winter')]
    print(list(enumerate(li, start=1)))        #  指定起始值,[(1, 'spring'), (2, 'summer'), (3, 'autumn'), (4, 'winter')]
    li = ['spring', 'summer', 'autumn', 'winter']
    
    for k,v in enumerate(li,10):
        print(k,v)
    

    执行输出:
    10 spring
    11 summer
    12 autumn
    13 winter

    li = ['spring', 'summer', 'autumn', 'winter']
    enumerate(li,1)         # <enumerate object at 0x7f805f9c5b90>
    list(enumerate(li,1))      # [(1, 'spring'), (2, 'summer'), (3, 'autumn'), (4, 'winter')] 

    range:根据传入的参数创建一个新的range对象,一般用在for循环中

    a = range(10)
    b = range(1,10)
    c = range(1,10,3)
    
    print(a,list(a))        # range(0, 10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    print(b,list(b))        # range(1, 10) [1, 2, 3, 4, 5, 6, 7, 8, 9]
    print(c,list(c))        # range(1, 10, 3) [1, 4, 7]

    三、序列操作

    slice:构建一个切片对象,用于列表的切片

    l1 = [i for i in range(10)]
    l2 = l1[:5:2]
    print(l2)              #[0, 2, 4],按照普通切片方法

    reversed:将一个序列反转,并返回此反转序列的迭代器,字典不能反转。

    l1 = [1,2,3,4]
    print(reversed(l1))       # <list_reverseiterator object at 0x0000026B679FA4E0>
    
    for i in reversed(l1):
        print(i)    # 4 3 2 1
    s = 'asdf'
    for i in reversed(s):
        print(i)   # f d s a
    dic = {'name':'xiaoming','age':13}
    for i in reversed(dic):
        print(i)   #字典不能反转  TypeError: 'dict' object is not reversible

    sorted对可迭代对象进行排序,只能列表使用. 可加key,key为函数名,通过函数的规则进行排序。默认从小到大,加入reverse = True时按照从大到小。与 li.sort()相比,原列表不发生改变

      sorted(iterable,key=None,reverse=False)

      key: 排序规则(排序函数),在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数.根据函数运算的结果进行排序

      reverse :是否是倒叙,True 倒叙 False 正序

    默认升序
    li = [1,2,7,8,5,4,3]
    print(sorted(li))         # [1, 2, 3, 4, 5, 7, 8]
    
    按照绝对值排序
    li = [1,-2,-7,8,5,-4,3]
    print(sorted(li,reverse=True,key=abs))        # [8, -7, 5, -4, 3, -2, 1]
    
    原列表改变
    l1 = [1,3,3,2,9]
    l1.sort()
    print(l1)          #[1, 2, 3, 3, 9]  
    
    原列表不发生改变
    l2 = [2,3,4,6,4,1]
    print(sorted(l2))                  #[1, 2, 3, 4, 4, 6]
    print(l2)                      #[2, 3, 4, 6, 4, 1]  
    
    l3 = [(1,100),(2,18),(4,250),(3,500)]
    def func1(x):
        return x[1]
    print(sorted(l3,key=func1))          #[(2, 18), (1, 100), (4, 250), (3, 500)]
    
    字典使用sorted排序, 字典排序返回的就是排序后的key
    dic = {1:'a',3:'c',2:'b'}
    print(sorted(dic))                 # [1,2,3]
    
    和函数组合使用
    定义一个列表,然后根据一元素的长度排序
    lst = ['天龙八部','西游记','红楼梦','三国演义']
    def func(s):
        return len(s)
    
    print(sorted(lst,key=func))                        #  ['西游记', '红楼梦', '天龙八部', '三国演义']
    
    
    和lambda组合使用
    lst = ['天龙八部','西游记','红楼梦','三国演义']
    print(sorted(lst,key=lambda s:len(s)))                #  ['西游记', '红楼梦', '天龙八部', '三国演义']
    
    lst = [{'id':1,'name':'alex','age':18},
        {'id':2,'name':'wusir','age':17},
        {'id':3,'name':'taibai','age':16},]
     
    # 按照年龄对学生信息进行排序,这个和min() max()函数不一样,出来的还是字典
    print(sorted(lst,key=lambda e:e['age']))
     
    结果:[{'id': 3, 'name': 'taibai', 'age': 16}, {'id': 2, 'name': 'wusir', 'age': 17}, {'id': 1, 'name': 'alex', 'age': 18}]

    all:可迭代对象中,全是True才是True

    print(all([1,2,3,0]))   #False
    print(all([1,2,3,4]))   #True

    any:可迭代对象中,有一个是True就是True

    print(any([1,[],{},0,()]))   #True

    zip:将可迭代对象作为参数,将对象中的元素打包成一个元组,返回由这些元组组成的迭代器。

            如果可迭代对象中元素的数量不一致,则返回元组个与最短的对象相同。zip结果取决于最短的一个,返回的数据是元组。

            拉链方法:将多个iter纵向组成一个个的元组

    l = [1,3,5]
    tu = ('china','america','japan','korean')
    dic = {'name':1,'age':2,'hobby':3}
    for i in zip(l,tu,dic):
        print(i)      
        
    输出结果:
    (1, 'china', 'name')
    (3, 'america', 'age')
    (5, 'japan', 'hobby')
    
    lst1 = [1,2,3]
    lst2 = ['a','b','c','d']
    lst3 = (11,12,13,14,15)
    for i in zip(lst1,lst2,lst3):
        print(i)
    ​
    输出结果:
    (1, 'a', 11)
    (2, 'b', 12)
    (3, 'c', 13)

    filter:通过函数过滤可迭代对象,函数中return的是一个条件,返回一个迭代器。相当于生成器表达式的筛选模式。类似于[i for i in range(10) if i > 3]

      filter(function,iterable)

      function: 用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据

      iterable:可迭代对象

    l = [i for i in range(10)]
    def func1(x):
        return x>5
    
    for i in filter(func1,l):
        print(i)
    lst = [{'id': 1, 'name': 'Joe', 'age': 18},
           {'id': 1, 'name': 'Paul', 'age': 17},
           {'id': 1, 'name': 'May', 'age': 16}, ]
    
    ls = filter(lambda lst: lst['age'] > 16, lst)
    print(list(ls))    # [{'id': 1, 'name': 'Joe', 'age': 18}, {'id': 1, 'name': 'Paul', 'age': 17}]
    取列表中的偶数
    def func(x):
        return x % 2 == 0
    ret = filter(func,[1,2,3,4,5,6,7])
    print(ret)
    for i in ret:
        print(i) 
    
    执行输出:
    <filter object at 0x0000021325A4B6D8>
    2
    4
    6
    使用列表生成式完成
    li = [i for i in [1,2,3,4,5,6,7] if i % 2 == 0]
    print(li) 

    map:根据提供的函数对指定的序列做映射,返回一个迭代器,相当于生成器表达式中的循环模式

      map(function,iterable) 可以对可迭代对象中的每一个元素进映射,分别执行function

    计算列表各个元素的平方
    def square(x):                         
        return x ** 2
    
    ret = map(square,[1,2,3,4,5])                 
    for i in ret:
        print(i) 
    
    执行输出:
    1
    4
    9
    16
    25
    改写成lambda
    lst = [1,2,3,4,5]
    print(list(map(lambda s:s*s,lst)))
    map也是迭代器
    l = [i for i in range(3)]
    def func(x):
        return x**2
    
    for i in map(func,l):
        print(i) 
    计算两个列表中相同位置的数据的和
    lst1 = [1, 2, 3, 4, 5]
    lst2 = [2, 4, 6, 8, 10]
    print(list(map(lambda x, y: x+y, lst1, lst2)))        # [3, 6, 9, 12, 15]

    四、对象操作

    hash:获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值

    print(hash('123'))          #6154395912723147770
    print(hash(123))         #123,数字不变

    id:获取对象的内存地址

    print(id(123))            #1785819168

    dir:查看对象或者当前作用域内的属性列表。函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。

    print(dir(list))         # ['__add__', '__class__', '__contains__'...]
    print(dir())            # ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
    print(dir('hello'))        # ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',             '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__',             '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__ne...........
    print('__iter__' in dir(iter))    # False

    help:返回对象的帮助信息,主要用于查看函数或模块用途的详细说明。

    help(abs)
    help(str)

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

    print(len('abcd'))                     # 4 字符串
    print(len(bytes('abcd','utf-8')))             # 4 字节数组
    print(len((1,2,3,4)))                     # 4 元组
    print(len([1,2,3,4]))                     # 4 列表
    print(len(range(1,5)))                 # 4 range对象
    print(len({'a':1,'b':2,'c':3,'d':4}))             # 4 字典
    print(len({'a','b','c','d'}))                 # 4 集合
    print(len(frozenset('abcd')))             #4 不可变集合

    type:返回对象的类型,或者根据传入的参数创建一个新的类型

    type(1) # <class 'int'>

    五、反射操作

    hasattr(obj, attr): 用于检查obj是否有一个名为attr的值的属性,返回一个布尔值。

    getattr(obj, attr): 返回obj中名为attr值的属性的值

    setattr(obj, attr, val): 给obj的attr属性赋值为val。例如attr为'bar',则相当于obj.bar = val

    delattr(obj, name)该函数删除该obj的一个由string指定的属性。delattr(x, 'foobar')=del x.foobar

    class Test:
        f = '类的静态变量'
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
        def say_hi(self):
            print('hi,%s'%self.name)
    
    obj=Test('Joe',12)
    
    #检测是否含有某属性
    print(hasattr(obj,'name'))          # True
    print(hasattr(obj,'say_hi'))        # True
    
    #获取属性
    n=getattr(obj,'name')
    func=getattr(obj,'say_hi')
    print(n,func)               # Joe <bound method Test.say_hi of <__main__.Test object at 0x0000000009F69128>>
    
    
    #设置属性
    setattr(obj,'self.hobby','paiting')
    setattr(obj,'show_hobby',lambda self:self.name+' like paiting')
    print(obj.__dict__)         # {'name': 'Joe', 'age': 12, 'self.hobby': 'paiting', 'show_hobby': <function <lambda> at 0x00000000029947B8>}
    print(obj.show_hobby(obj))  # Joe like paiting
    
    #删除属性
    delattr(obj,'age')
    delattr(obj,'show_hobby')
    print(obj.__dict__)         # {'name': 'Joe', 'self.hobby': 'paiting'}

    isinstance(a,b):判断a是否是b类(或者b类的基类)实例化的对象

    issubclass(a,b): 判断a类是否是b类(或者b的基类)的派生类

    class A:
        pass
    
    class B(A):
        pass
    
    class C(B):
        pass
    
    obj = B()
    print(isinstance(obj,B))    # True
    print(isinstance(obj,A))    # True
    
    
    print(issubclass(B,A))    # True
    print(issubclass(C,A))    # True

    callable:检测对象是否可被调用。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。callable其实就是判断一个对象是否是函数,是就返回True,其他类型直接返回False

    name = 'summer'
    print(callable(name))      #False,不可调用
    def func1():
        pass
    print(callable(func1))     #True,可以调用
    class A:  # 定义类B
        def __call__(self):
            print('instances are callable now.')
    
    print(callable(A))          # 类A是可调用对象,True
    a = A()                     # 实例
    print(a)                    # <__main__.A object at 0x02A6C490>
    a()                         # 调用实例a成功,instances are callable now.

    六、装饰器

    property:标示属性的装饰器。property是一个装饰器函数,可以将一个方法伪装成属性,调用的时候可以不用加()

    例如:BMI指数

    class Person(object):
        def __init__(self,name,weight,height):
            self.name = name
            self.__weight = weight
            self.__height = height
    
        @property
        def bmi(self):
            return self.__weight / self.__height **2

    classmethod:标示方法为类方法的装饰器。必须通过类的调用,而且此方法的意义:就是对类里面的变量或者方法进行修改添加

    class Goods:
        __discount = 0.8                            # 折扣
        def __init__(self,name,origin_price):
            self.name = name
            self.__price = origin_price             # 原价
    
        @property
        def price(self):                            # 价格
            return self.__price * Goods.__discount
    
        @classmethod
        def change_discount(self,new_discount):     # 类方法 可以直接被类调用 不需要默认传对象参数 只需要传一个类参数就可以了
            Goods.__discount = new_discount
    
    Goods.change_discount(1)    # 不依赖对象的方法 就应该定义成类方法 类方法可以任意的操作类中的静态变量
    apple = Goods('apple',5)
    banana = Goods('banana',8)
    print(apple.price)                              # 5
    print(banana.price)                             # 8

    staticmethod:标示方法为静态方法的装饰器。不依赖类以及对象。 

    class Student:
    def __init__(self,name):pass
    
        @staticmethod
        def login(a):  # login就是一个类中的静态方法 静态方法没有默认参数 就当成普通的函数使用即可
            user = input('user :')
            if user == 'alex':
                print('success')
    
            else:
                print('faild')
    
    Student.login(1) 

    七、变量作用域相关

    globals:返回一个字典,包含全部的全局变量

    locals:返回一个字典,包含当前作用域的全部变量

    vars:返回当前作用域内的局部变量和其值组成的字典,或者返回对象的属性列表

    class Test:
        f = '类的静态变量'
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
        def variation(self):
            hobby = 'paiting'
            print(globals())
            print(locals())
    
    obj = Test('Joe', 12)
    obj.variation()
    print(obj.__dict__)         # {'name': 'Joe', 'age': 12}
    print(vars(obj))            # {'name': 'Joe', 'age': 12}

    globals()的输出:

    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000000001DEC208>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'F:/Python/test.py', '__cached__': None, 'Test': <class '__main__.Test'>, 'obj': <__main__.Test object at 0x0000000001F50A20>}

    locals()的输出:

    {'hobby': 'paiting', 'self': <__main__.Test object at 0x0000000001F50A20>}

    八、字符串类型代码的执行

    eval:执行字符串类型的代码,并返回最终结果。相当于拨开字符串2边的引号,执行里面的代码

    print(eval('3+4'))             # 7
    ret = eval('{"name":"summer"}')
    print(ret)                 #  {'name': 'summer'}

    exec:执行字符串类型的代码,不返回结果

    print(exec('3+4'))         # None
    ret1 = '''
    li = [1,2,3]
    for i in li:
        print(i)
    '''
    print(exec(ret1)) 
    
    执行输出:
    1
    2
    3
    None

    val和exec 功能是类似的, 区别:

      eval有返回值,exec没有没有值

      exec适用于有流程控制的,比如for循环。eval只能做一些简单的。

    compile:将字符串类型的代码编译,代码对象能够通过exec语句执行或eval()求值。(了解即可)

    code1 = 'for i in range(0,3): print (i)'
    compile1 = compile(code1,'','exec')
    exec (compile1) 
    
    执行输出:
    0
    1
    2

    repr:返回一个对象的string形式(原形毕露)。

    #%r  原封不动的写出来
    name = 'Joe'
    print('我叫%r' % name)        # 我叫'Joe'
    
    print(repr('{"name":"Joe"}'))    # '{"name":"Joe"}'
    print('{"name":"Joe"}')        # {"name":"Joe"}

    九、输入输出相关

    input:函数接收一个标准输入数据,返回str类型

    print(self,*args,sep=' ',end=' ',file=None, flush=False)

      sep:打印多个内容的分隔符,默认是空格

      end:默认是换行符

      file:默认是None,默认输出到屏幕,设置文件句柄可输出到文件

      flush: 立即把内容输出到流文件,不作缓存

    sep默认是用空格拼接
    print(11, 22, 33)             # 11 22 33
    
    sep 指定分隔符 |
    print(11, 22, 33, sep = '|')         # 11|22|33
    
    end结尾符
    print(1,end=' ')
    print(222)               # 1 222
    
    
    print(333,end='')
    print(666,)                #333666
    
    print(333,end='**')
    print(666,)             # 333**666

    file写入文件

    with open('log.txt',encoding='utf-8',mode='w') as f1:
        print('5555',file=f1)             # 执行程序,查看log.txt文件内容为: 555
    
    f = open('t1',encoding='utf-8',mode='w')
    print(111,'222',file=f)                # 执行程序,查看t1文件内容为: 111 222
    
    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)

    十、迭代器、生成器相关

    iter:函数用来生成迭代器(将一个可迭代对象,生成迭代器)

    from collections import Iterable
    from collections import Iterator
    l = [1,2,3]
    print(isinstance(l,Iterable))  # 判断是否可迭代 True
    print(isinstance(l,Iterator))  # 判断是否为迭代器 False
    from collections import Iterable
    from collections import Iterator
    l = [1,2,3]
    
    l1 = iter(l)             #生成迭代器
    print(isinstance(l1,Iterable))      # True
    print(isinstance(l1,Iterator))      # True
    print(l1)                           # <list_iterator object at 0x031D3690>
    print(next(l1))                     # 1
    print(next(l1))                     # 2
    print(next(l1))                     # 3
    print(next(l1))                     # 报错 StopIteration

    next:内部实际使用了__next__方法,返回迭代器的下一个项目。

    # 首先获得Iterator对象:
    it = iter([1, 2, 3, 4, 5])
    while True:
        try:
            # 获得下一个值:
            x = next(it) #next内部封装了__next__方法,都是求下一个值
            print(x)
    
        except StopIteration:
            # 遇到StopIteration就退出循环
            break 
    
    执行输出:
    1
    2
    3
    4
    5

    十一、其他

    文件操作相关

    open()  :打开一个文件,返回一个文件操作符(文件句柄), 可以用encoding指定编码。操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)

     

    format:1、提供参数,指定对其方式,<是左对齐,>是右对齐,^是居中

        2、将整数转化成二进制’b‘、’n‘、unicode ’c‘、八进制’o‘、十六进制’x’、’X‘等

        3、将浮点数用科学计数法或小数点计数法表示

    print(format('test', '<20'))
    print(format('test', '>20'))
    print(format('test', '^20')) 
    
    执行输出:
    test                
                    test
            test         

    super:根据传入的参数创建一个新的子类和父类关系的代理对象

    class A(object):
        def __init__(self):
            print('A.__init__')
    
    class B(A):
        def __init__(self):
            print('B.__init__')
            super().__init__()
    
    #super调用父类方法
    b = B()
    
    结果输出:
    B.__init__
    A.__init__

    __import__:动态导入模块

    index = __import__('index')
    index.sayHello()

    特例:reduce()

    在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里,如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:

    from functools import reduce

    语法

    reduce(function, iterable[, initializer])
    • function -- 函数,有两个参数
    • iterable -- 可迭代对象
    • initializer -- 可选,初始参数

    reduce() 函数会对参数序列中元素进行累积

      reduce()函数有2个参数:第一个参数是有两个变量的函数(f(x,y)),第二个是迭代对象 i (元组,列表或字符串)。reduce(f,i)将前两个迭代元素(i[0], i[1])传至函数f,计算f返回的值,然后将该值作为f的第一个参数,迭代器的第三个元素(i[2])作为第二个参数,以此类推。

    实例

    (1)数字加和

    from functools import reduce
    
    def add(x,y):
        return x + y
    
    print (reduce(add, range(1, 101)))  # 5050

    (2)统计某字符串重复次数:

    from functools import reduce
    
    sentences = ['The Deep Learning textbook is a resource intended to help students and practitioners enter the field of machine learning in general and deep learning in particular. '] 
    
    word_count =reduce(lambda a,x:a+x.count("learning"),sentences,0)
    print(word_count)   # 2

    (3)字符串反序

    import functools
    
    str1="hello"
    print(functools.reduce(lambda x,y:y+x,str1))
    # 输出 olleh

    (4)找多个集合中共有元素

    from functools import reduce
    
    a = set((1, 2, 3, 4, 5))
    b = set((2, 4, 6, 7, 1))
    c = set((1, 4, 5, 9))
    
    triple_set = [a, b, c]
    common = reduce(set.intersection, triple_set)
    
    print(common)
    
    '''
    {1, 4}
    '''

      

     参考链接:

            https://www.cnblogs.com/sesshoumaru/p/6140987.html

            https://www.cnblogs.com/vamei/archive/2012/11/09/2762224.html

            https://www.cnblogs.com/pyyu/p/6702896.html

  • 相关阅读:
    我的世界-大堆网易账号免费送!!
    P1016 旅行家的预算
    P1015 回文数
    P1014 Cantor表
    P1013 进制位
    谷歌浏览器插件分享-tampermonkey油猴
    C++逐字输出函数
    P1012 拼数
    Windows下Nginx的启动、停止等命令
    遇到REMOTE HOST IDENTIFICATION HAS CHANGED怎么办?
  • 原文地址:https://www.cnblogs.com/Summer-skr--blog/p/11503602.html
Copyright © 2020-2023  润新知