Python基础

发布时间:2019-03-03 10:30:29编辑:auto阅读(1837)

    主要是复习时总结自己不太熟悉的知识点了(面向Internet的总结)。

    函数的参数

    1. 位置参数——按位置依次对应

    2. 关键字参数——按“键值对”对应

      func('hello', val = 1)

      调用时:若有位置参数,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

    3. 默认参数——为参数提供默认值,调用时可不传

      def func(val1, val2 = 7):
          pass
      
      func(10)
      func(10, 20)

      调用时:若有位置参数,位置参数必须在默认参数的前面

    4. 可变参数——可以有不确定个数的参数,非常灵活,收集参数然后packaging

      def func(*args, **kw)

      args接受一堆位置参数打包成tuple, kw接受一堆关键字参数打包成dict,具体示例(混用)如下:

      def person(name, age, *args, hobby="blank", **kwa):
          for i in args:
              print(i)
          for k, v in kw.items():
              print(k, v)
      
      person('Loli', 17)
      person('loli', 17, 'Light of', 'my life', hobby='seduction', otherInfo='fire of my loins')   # 还是位置参数放在关键字参数前
    5. 可变参数之愉快解包——就是直接传入tuple或者dict喵:)

      def func(args, kw):
          pass
      
      l1 = ('hi', 'nice', 2, 'meet', 'u')
      l2 = {'one':1, 'two':2}
      
      func(*l1, **l2)

    内置数据结构

    1. list

      l1 = []
      l2 = list()
      l1.append(2)
      l2 = [i for i in range(1, 10) if i % 2 == 1]
      del l2[2]
      l2.reverse()
      l3 = l1 + l2 # l1.extend(l2)
      l3.insert(2, 12) #insert(index, data)
      l3.count(12)
      l3.clear()
    2. tuple——不可变的list,有序

      t1 = ()
      t2 = (1,) # 只有一个元素记得加’,‘
    3. set——无序,元素互异性,只可存可哈希元素(str, int, float, tuple,冰冻集合)

      s1 = set()
      s2 = {1, 2} # 必须有值,否则为dict
      s1.add(22)
      s1.clear()
      s2.discard(2)
      s2.pop()
      
      # 集合函数
      # intersection: 交集
      # difference:差集
      # union: 并集
      # issubset: 检查一个集合是否为另一个子集
      # issuperset: 检查一个集合是否为另一个超集
      s1 = {1,2,3,4,5,6}
      s2 = {5,6,7,8,9}
      
      s_1 = s1.intersection(s2)
      s_2 = s1.difference(s2)
      s_3 = s1.issubset(s2)
      
      # 冰冻集合frozenset——不可变set
      s = frozenset()
    4. dict——无序序列:无分片索引;key必须可哈希

      d1 = dict({'one':1, 'two':2, 'three':3})
      d2 = dict(one=1, two=2, three=3)
      d3 = dict( [('one',1), ('two',2), ('three',3)])
      
      for k in d:
          print(k,  d[k])
      
      # 上述代码可以改写成如下
      for k in d1.keys():
          print(k,  d[k])
      
      # 只访问字典的值
      for v in d2.values():
          print(v) 
      
      # 注意以下特殊用法
      for k,v in d3.items():
          print(k,'--',v)
      
      dd = {k:v for k,v in d1.items()}
      print(d2.get("on333")) # 没有则返回None
      
      l = ['hi', 'i', 'am']
      d = dict.fromkeys(l, "ha") # 使用指定的序列作为键,使用一个值作为字典的所有的键的值
      # d = {'hi': 'ha', 'i': 'ha', 'am': 'ha'}

关键字