首页 > 编程语言 >「学习笔记」python 杂记

「学习笔记」python 杂记

时间:2022-10-05 16:56:57浏览次数:74  
标签:函数 tuple python 笔记 参数 key 杂记 kw def

目录

写在前面

自用向随意整理。

使用 python 版本 3.10.7。

主要参考文章:Python教程 - 廖雪峰的官方网站

基础

  • r'...' 表示内部字符串默认不转义。
  • input() 的返回值类型为 str,需做强制类型转换。
  • 空语句 pass
  • 格式化的三种方式:
    • 'Hi, %s, you have $%d.' % ('Michael', 1000000)
    • 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125),传入的参数依次替换字符串内的占位符。
    • print(f'The area of a circle with radius {r} is {s:.2f}')rs 是两个浮点型变量。
  • list:[]
    • .append(x).pop().insert(pos, x)
  • tuple:(),每个元素指向永远不变,但元素的值可以改变。
    • 一个元素的 tuple:(x,)
    • 如:([1,2], [3,4]) 中两个 list 可以改变。
  • dict:{key=value},建立 key 到 value 的映射关系。
    • key 必须不可变。
    • d[key] = valued.pop(key)
    • d.get(x, val):d 中不存在 x 这个 key 时返回 val。
    • 空间换时间,大数据范围下查找插入效率高于 list。
  • set:set([key]),不可重 key 集。
    • 创建时提供一个 list。
    • s.remove(key)
    • 多个 set 间可做数学上 |、& 运算。
  • 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。例:a = 'abcb = a.replace('a', 'A')a'abc'

函数

定义与调用

  • 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”。
  • 参数个数不对将抛出 TypeError,参数类型不对无法自动检查,程序仍会执行,可自定义数据类型检查:
    def my_abs(x):
      if not isinstance(x, (int, float)):
          raise TypeError('bad operand type')
      if x >= 0:
          return x
      else:
          return -x
    
  • 执行完没有返回值时自动 return None
  • 返回值实际上是一个 tuple,因此可返回多个值。

参数

  • 参数定义顺序必须为:必选参数(如 a)、默认参数(如 b = 1)、可变参数(如 *c)、命名关键字参数(如 dd = 2)和关键字参数(如 **e)。
    • 如:def f1(a, b, c=0, *args, **kw):
    • 又如:def f2(a, b, c=0, *, d, **kw):
    • 不存在可变参数时需要用 *, 来占位。
  • 位置参数:实参按照位置顺序依次赋给位置参数。
  • 默认参数def power(x, n=2):,没有实参则取默认值。
    • 如果默认参数是一个变量:每次调用该函数,如果改变默认参数的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的了。
    • 原因:与 C 不同,函数及其局部变量都有固定的内存空间。
    • 一个改进的例子:
      def add_end(L=None):
      if L is None:
          L = []
      L.append('END')
      return L
      
    • 定义默认参数要牢记一点:默认参数必须指向不变对象
  • 可变参数def calc(*numbers):,允许传入任意个参数(包括 0 个),将传入的参数顺次组装成一个 tuple。
    • 如果要传入一个 list 或者 tuple:calc(*nums)
  • 关键字参数def person(name, age, **kw):,允许传入任意个 key=value 的参数对(包括 0 个),将传入的参数顺次组装成一个 dict。
    • 如果要传入一个 dict:person('Aliemo', 24, **extra)
  • 命名关键字参数def person(name, age, *, city, job):,使关键字参数的 key 为给定值。
    • 与位置参数不同的是,调用时必须传入参数名,否则会被解释为位置参数。调用方式:person('Jack', 24, city='Beijing', job='Engineer')
    • 可以有缺省值:def person(name, age, *, city='Beijing', job):
  • 对于任意函数,都可以通过类似 func(*args, **kw) 的形式调用,其中 args 是一个 tuple,kw 是一个 dict。argskw 中的元素会按照参数定义的顺序传入。

高级特性

写在最后

曾想用 py 写点竞赛题练习一下 py,现在一想这完全是在侮辱 py。py 为了灵活的写法和大量集成的功能舍弃了运行时间,我却想用它写追求效率的算法,多么讽刺啊!

我终于理解了你!python!

标签:函数,tuple,python,笔记,参数,key,杂记,kw,def
From: https://www.cnblogs.com/luckyblock/p/16755832.html

相关文章