crossin的编程教室吧 关注:3,828贴子:3,788

Python 初学者必备的常用内置函数

只看楼主收藏回复

Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间。目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很常见,这里主要介绍一些新手必备函数及其用法。


IP属地:福建1楼2021-03-04 12:50回复
    为了便于说明,我把这些内置函数粗略地分为六大类:
    输入输出 print() open() input()
    迭代相关 enumerate() zip()
    序列属性 sum() max() min() len()
    操作序列 sorted() reversed() range()
    对象属性 dir() id() isinstance() type()
    映射类型 eval() map() slice()


    IP属地:福建2楼2021-03-04 12:50
    回复
      广告
      立即查看
      输入输出
      print 函数将对象输出至控制台
      print(*objects, sep=' ', end='\n', file=
      sys.stdout, flush=False)
      *objects 为可变参数,可以接受任意多个对象。sep 参数表示输出对象之
      间的分隔符,默认为空格。
      >>> print('Crossin', '的编程教室')
      Crossin的编程教室
      分隔符为'*':
      >>> print('Crossin', '编程教室', sep = '的')
      Crossin的编程教室
      格式化输出字符串的三种方式:
      name = 'Crossin的编程教室'
      fmt1 = f'学编程就来:{name}'
      fmt2 = '学编程就来:{}'.format(name)
      fmt3 = '学编程就来:%s' %name
      print(fmt1)
      print(fmt2)
      print(fmt3)
      输出
      学编程就来:Crossin的编程教室


      IP属地:福建3楼2021-03-04 12:51
      回复
        open 函数打开文件并返回文件对象
        open(file, mode='r', buffering=-1,
        encoding=None, errors=None, newline=
        None, closefd=True, opener=None)
        file 为文件地址,mode 为打开文件的模式,默认为 'r',表示读取文件,常用的还有:'w' 表示写入文件、'b' 表示以二进制形式打开。
        常用上下文管理器 with 打开文件,f.read( ) 读取全部内容,f.readline() 读取一行内容。
        with open('test.txt', 'r') as f:
        text1 = f.read()
        with open('test.txt', 'r') as f:
        text2 = ''
        line = f.readline()
        while line:
        text2 += line
        line = f.readline()
        assert text1 == text2
        print(text1)
        ###############
        输出内容:
        Crossin的编程教室
        Crossin的编程教室
        Crossin的编程教室
        Crossin的编程教室
        ###############


        IP属地:福建4楼2021-03-20 12:47
        回复
          input 函数获取控制台输入
          input([prompt])
          input 可接受字符串为参数,提示用户输入。
          >>> s = input('请输入名称:')
          请输入名称:Crossin的编程教室
          >>> s
          'Crossin的编程教室'


          IP属地:福建6楼2021-04-24 18:40
          回复
            迭代相关
            enumerate 函数返回元素的序号与对应值
            enumerate(iterable, start=0)
            iterable 参数表示可迭代对象,start 参数是元素序号的起点,默认为 0。
            enumerate 函数的等价形式如下:
            def enumerate(sequence, start=0):
            n = start
            for elem in sequence:
            yield n, elem
            n += 1
            seq = ['P', 'y', 't', 'h', 'o', 'n']
            for i, elem in enumerate(seq):
            print(i, elem)


            IP属地:福建7楼2021-05-07 10:35
            回复
              zip 函数用于同时迭代多个对象
              zip(*iterables)
              *iterable 可以接受任意多个可迭代对象
              a = ["**", '**', '**']
              b = ['abc', '123', 'Crossin的编程教室']
              c = a
              print('#'*20)
              for i, j, k in zip(a, b, c):
              print(i, j, k)
              print('#'*20)
              ####################
              ** abc **
              ** 123 **
              ** Crossin的编程教室 **
              ####################


              IP属地:福建8楼2021-05-14 14:35
              回复
                序列属性
                序列最大值:max
                序列最小值:min
                序列的和: sum
                序列长度: len
                基本用法:向这四个函数中传入序列,可以得到对应属性。
                import random
                random.seed(21)
                seq = [random.randint(0, 100) for i in range(10)]
                print(seq)
                # [21, 53, 88, 53, 81, 36, 61, 27, 60, 65]
                print(max(seq))
                # 88
                print(min(seq))
                # 21
                print(sum(seq))
                # 545
                print(len(seq))
                # 10


                IP属地:福建9楼2021-06-11 14:04
                回复
                  广告
                  立即查看
                  作为内置函数,可以直接传入生成器(不需要括号)作为参数:
                  import random
                  random.seed(21)
                  num = max(random.randint(0, 100) for i in range(10))
                  print(num)
                  # 88


                  IP属地:福建10楼2021-07-02 14:25
                  回复
                    可传入 key 参数,作为比较大小的依据,相当于把序列中每一个元素 item 先传入函数 key 中,将函数返回的数值作为判断对象大小的依据。
                    def foo(x):
                    return 1. / x
                    max(seq, key = foo)
                    # 21


                    IP属地:福建11楼2021-07-23 15:21
                    回复
                      对于我们自定义的类型,必须实现特殊方法,才能进行 len 等操作。
                      __len__ 代表:len 操作,__eq__ 代表:= 操作,__lt__ 代表 < 操作。
                      class foo:
                      def __init__(self, num, seq):
                      self.num = num
                      self.seq = seq
                      def __len__(self):
                      return len(self.seq)
                      def __eq__(self, other):
                      return self.num == other.num
                      def __lt__(self, other):
                      return self.num < other.num
                      >>> f1 = foo(18, [1, 4, 6])
                      >>> f2 = foo(21, [1, 7, 9, 10])
                      >>> f1 < f2
                      True
                      >>> f1 > f2
                      False
                      >>> f1 == f2
                      False
                      >>> f3 = foo(18, [9, 9, 0, 7])
                      >>> f1 == f3
                      True
                      >>> len(f1)
                      3
                      >>> len(f2)
                      4


                      IP属地:福建12楼2021-08-13 22:39
                      回复
                        操作序列
                        range 函数生成序列
                        range(start, stop[, step])
                        start 可选参数,默认为 0 ,表示序列起
                        stop 必选参数,表示序列终点,不包括终
                        step 可选参数,序列的步长,默认为 1
                        >>> range(6)
                        range(0, 6)
                        >>> list(range(6))
                        [0, 1, 2, 3, 4, 5]
                        >>> list(range(0, 6, 2))
                        [0, 2, 4]
                        range 函数生成的对象可以迭代,和列表很类似,_ 表示废弃变量(为了避免污染变量环境):
                        for _ in range(3):
                        print('Crossin的编程教室')


                        IP属地:福建14楼2021-09-04 22:27
                        回复
                          reversed 函数可以将序列逆置
                          reversed 可以将序列逆置,包括元组、字符串、列表。对于列表和字符串的逆置,使用 list[::-1] 或者slice()更加方便。
                          import random
                          random.seed(21)
                          seq = [random.randint(0, 100) for i in range(10)]
                          print(seq)
                          # [21, 53, 88, 53, 81, 36, 61, 27, 60, 65]
                          reversed(seq)
                          print(list(reversed(seq)))
                          # [65, 60, 27, 61, 36, 81, 53, 88, 53, 21]


                          IP属地:福建15楼2021-09-26 20:49
                          回复
                            字符串逆置:
                            >>> a = 'Crossin的编程教室'
                            >>> a[::-1]
                            '室教程编的nissorC'
                            >>> ''.join(reversed('Crossin的编程教室'))
                            '室教程编的nissorC'


                            IP属地:福建16楼2021-10-18 23:52
                            回复
                              广告
                              立即查看
                              sorted 函数可以对序列进行排序
                              sorted(iterable, *, key=None, reverse=False)
                              sorted 不同于 list.sort 操作(原地排序),返回一个新的有序序列,原序列保持不变。* 表示仅限关键字参数(keyword-only),也就是说,key、reverse 参数只能通过关键字传参,而不能通过位置传参。reverve 参数表示逆置操作,key 与之前 len 中的 key 参数类似,是函数排序的依据。
                              >>> sorted([9, 6, 2, 3, 6])
                              [2, 3, 6, 6, 9]


                              IP属地:福建17楼2021-12-19 00:43
                              回复