函数签名; 类与实例属性; 类与实例方法; 元组
2025.6.29
函数签名语法
中括号相关
collections 是 Python 官方提供的常见数据容器库,内含双端队列 deque 。相关文档可以看 Python 的官方网站。
以双端队列为例,这玩意是这样一个类:
Python | |
---|---|
这里的函数签名语法 [iterable[, maxlen]]
值得学习:
函数签名=参数个数+参数类型+返回值
一言以蔽之,中括号表示里面的参数可以不给。比如,以下都是合法的初始化:
Python | |
---|---|
[, maxlen]
表示第二个参数 maxlen
可以不给,但如果想按位置传参 maxlen
,必须先给定第一个参数 iterable
。
除非,如下按关键字传参
Python | |
---|---|
星号相关
Python 官方提供的 random 库里有这样一个函数
Python | |
---|---|
这里的 *
是用于分隔 位置参数 和 关键字-only参数 的。
首先,这个函数一共有三个参数,分别是 population, k
和 counts
,其中, population
和 k
是位置参数,也就是说,它们既可以按位置传,也可以按关键字传;而 *
后的所有参数(此处是 counts
)都是关键字参数,也就是说,它们只能按关键字传参。
类属性与实例属性
Python 里的类和 C++ 里的不一样,C++ 里的类只是一个类型,而 Python 里的类是一个独立的对象。
Python | |
---|---|
类属性直接在类的顶层作用域中定义,属于类本身;实例属性通常在类的 __init__
函数(或其它实例函数)中以 self.xxx = ...
的形式定义,属于特定实例。
类属性保存在类的 __dict__
中,而实例属性保存在实例的 __dict__
中。
Python | |
---|---|
类方法,实例方法与静态方法
如下所示:
实例方法默认第一个参数为 self
,代表调用该方法的实例对象。也就是说,obj.instance_method(5)
等价于 MyClass.instance_method(obj, 5)
。
类方法用 @classmethod
在定义处修饰,默认第一个参数为 cls
,代表调用该方法的类。
静态方法用 @staticmethod
在定义处修饰,用法和普通函数完全一致,不接受 self
和 cls
参数。
元组 tuple
元组 tuple
是 Python 内建的序列类型之一,用于存储有序、不可变(immutable)的元素集合。