目录
写在前面
自用向随意整理。
使用 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}')
,r
和s
是两个浮点型变量。
- list:
[]
。.append(x)
、.pop()
、.insert(pos, x)
。
- tuple:
()
,每个元素指向永远不变,但元素的值可以改变。- 一个元素的 tuple:
(x,)
。 - 如:
([1,2], [3,4])
中两个 list 可以改变。
- 一个元素的 tuple:
- dict:
{key=value}
,建立 key 到 value 的映射关系。- key 必须不可变。
d[key] = value
、d.pop(key)
。d.get(x, val)
:d 中不存在 x 这个 key 时返回 val。- 空间换时间,大数据范围下查找插入效率高于 list。
- set:
set([key])
,不可重 key 集。- 创建时提供一个 list。
s.remove(key)
。- 多个 set 间可做数学上
|、&
运算。
- 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。例:
a = 'abc
,b = 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
)、命名关键字参数(如d
、d = 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)
。
- 如果要传入一个 list 或者 tuple:
- 关键字参数:
def person(name, age, **kw):
,允许传入任意个key=value
的参数对(包括 0 个),将传入的参数顺次组装成一个 dict。- 如果要传入一个 dict:
person('Aliemo', 24, **extra)
。
- 如果要传入一个 dict:
- 命名关键字参数:
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。args
与kw
中的元素会按照参数定义的顺序传入。
高级特性
写在最后
曾想用 py 写点竞赛题练习一下 py,现在一想这完全是在侮辱 py。py 为了灵活的写法和大量集成的功能舍弃了运行时间,我却想用它写追求效率的算法,多么讽刺啊!
我终于理解了你!python!
标签:函数,tuple,python,笔记,参数,key,杂记,kw,def From: https://www.cnblogs.com/luckyblock/p/16755832.html