Python学习笔记-1

doc string 三重引号
 
if条件域中 数字0,空list, tuple,dictionary为False,非零数字,非空list, tuple, dictionary为True
 
布尔环境中,0、''、{}、[]、()、None为False,其他任何东西都为真
 
bool and a or b
类似C中的?表达式,但只有当a不为''时才有效
进阶  bool and [a] or [b]
即使a为'',[a]仍为非空
 
and 返回最后一个真值,或者第一个假值
or 返回第一个真值,或者最后一个假值
and or 表达式从左到右运算,优先级相同
 
list 运算符'+' 相当于list.extend
若运算对象为大型list,extend性能更好
 
tuple 一旦被创建,就不能改变
 
tuple没有方法,但可以用in
 
Dictionary {}
List []
Tuple ()
 
类的构造函数__init__ 被实例化之后即执行
Python 支持多重继承,在类定义中用逗号分隔列出多个父类即可
 
习惯上,任何Python类方法的第一个参数(对当前实例的引用)都叫做self。
 
定义包括__init__的类方法时,需要将self作为第一个参数列出
在子类中调用父类方法时,要显式列出self
类外调用方法时不需要写出self
 
子类定义__init_方法时,必须显式调用父类的__init__方法(若父类定义过__init__)     多重继承时要调用所有__init__方法?
 
创建一个类的实例只需像函数一样调用类,指定需要的参数即可
 

 
分割一个list会得到一个list,分割一个tuple会得到一个tuple。
 
tuple没有方法。但是支持in判断元素是否存在。
 
tuple可以用作Dicitonary的key。 Dictionary的key是不可变的。
 
类属性可以通过类而被引用,也可以借助实例被引用。两种方式公用同一个类属性。
 
try
  ...
except  Error
  ...
else
  ...
 
open返回的文件对象有write方法,但不会自动附带换行,需要手动添加
 
使用tuple多变量赋值,将一个dictionary映射为一个list
 
dictionary.items() 返回一个对应字典内容的list,其中元素是形如(key, value)的tuple
 
format conversion specifier
getattr() 通关module名获取module的引用
sys.module()
 
module参数仅在模块被导入时计算一次
 
文件操作
os.path.split()
os.path.splitext()
os.listdir()
os.path.isfile()
os.path.isdir()
os.getcwd()
os.path.normcase()
module glob
glob.glob() 可匹配所有子目录
 
嵌套函数
 
函数返回一个类,而非类的实例。在调用时传入参数即可实例化。
可实现动态的将类看成对象并传入参数,动态的实例化未知类型的类。
 
关于编译器返回语法错误
可讲编译器视作小狗,需要用合适的语言进行交流。
 
zip(*a) 
iter()
 
re.search(pattern, string)
 
python的del()函数只是删除变量名,无法删除变量所指向的值。要删除一个值(或某种数据结构),需要删除所有指向该值的变量名,然后该值作为无法再被指向的废弃数据,有python编译器的gc回收
 
locals() 当前module范围,返回局部命名空间的一个copy,更改变量不会造成实际影响
globals() 当前Python程序空间范围,返回实际的全局命名空间,更改变量会造成变量实际改变
from module import  是将指定方法导入locals()空间,import module 则是将对象module导入locals()空间
 
* 修饰tuple,**修饰dictionary。这种语法仅在参数列表中有效。
在函数声明时的*,作用是表示从这个参数开始,参数列表中的其他参数都存储在一个由*修饰名字的tuple中,作用范围直到参数列表结束或者遇到显示写出“参数名=默认值”这样的参数,因为这样的参数时存储在dictionary中的,而其后如果还有只写出参数值形式的参数,不再存储进之前的tuple
函数声明时的**, 作用是表示从该参数开始的key=value形式的参数存储入由**修饰名字的dictionary中,作用范围同*,遇到不同格式的参数定义时即结束。
 
在函数调用时参数中的*,表示传入的这个参数是一个tuple,类似利用tuple多重赋值操作。其中的值与参数的对应关系,需要参照函数声明时的参数格式确定,1:1,n:1均有可能。
函数调用时的**,表示传入的这个参数是一个dictionary,这个dictionary的所有key都应该是在函数声明时已经确定的参数,否则将报错。但如果函数声明时只是声明为dictionary,而未明确定义参数名,那么调用时的dictionary中key可以任意,后续操作必须引用传入的key才能取到对应的值。
 
最重要的一点,单个参数与*修饰的tuple的位置可变,但是如果参数列表中存在**修饰的dictionary,也即keyword arguments,必须将dictionary放在最后,否则报错。
 
一般的顺序:

def print_params_4(x, y, z=3, *pospar, **keypar):

         print x, y, z

         print pospar

         print keypar

A function such as multiplyByFactor that stores it enclosing scopes is called a closure.

If a function or an algorithm is complex and difficult to understand, clearly defining it in your own language before implementing it can be very useful. aka. pseudocode.

 

递归可以稍微增加函数的可读性

 

lambda表达式:mainly used to build in-line function

 

声明类的私有方法时,需要在方法前加上双下划线 __inaccessible

 

MRO method resolution order 查询父类中属性或者方法的顺序,Python内置算法

python支持多重继承

不同父类中有同名的方法时,优先使用声明时写在前面的父类的方法,并会使后面父类中的同名方法不可访问。(多重继承父类顺序很重要!)

 

dict.get(name[, default])     either create or update

 

try:/catch exception:      捕捉异常

raise Exception   抛出异常,若raise后无参数异常,则抛出最近的一个异常(也可能为raise Empty,总会抛出一个异常)。

 

Any function that contains a yield statement is called a generator.

def flatten(nested):
    for sublist in nested:
        for element in sublist:
            yield element

package import的时候只是执行package目录下的__init__.py,如果__init__.py中没有import package内的module,则package内部的module仍不可用,如果需要使用,则仍需显式import

两种显式import package中module的方式:

 import package.module

 from package import module

若__init__.py未import module,只import package有什么用?

 

re

the period (dot) can match anything, so is called a wildcard (通配符).

^ to invert the character set. '[^abc]' matches any character except a, b, or c

? nongreedy mode

emphasis_pattern = r'\*\*(.*?)\*\*'  (.*?) matches the least substring needed to the next '\*\*'

 

set can remove duplicated elements

module email processes text saved email files

 

pat = re.compile(r'[a-z\-\.]+@[a-z\-\.]+', re.IGNORECASE)

pat.match().group(1)            MatchObject.group(0) is the entire string.

 

zip()  使用指定的list作为字典的键和值,建立字典

>>> a = [1, 2, 3]
>>> b = ['j', 'v', 'm']
>>> dic = dict(zip(a, b))
>>> dic
{1: 'j', 2: 'v', 3: 'm'}

 

timeit  a more efficient module for code performance measurements

profile similar to timeit, but with a more comprehensive result

trace a module that can provide coverage analysis

itertools  used for operating iterable objects

logging provides a set of tools managing one or more central log

getopt optparse    used for processing parameters of Python script

optparse is newer, more efficient and easier

cmd  enables you to write a command line interpreter in which you can define your own commands. A personal specific prompt

 

Packages are implemented as directories that contain a file named __init__.py.

Exploring modules use dir, examine the __all__ variable, and use help

fileinput: A module that makes it easy to interate over the lines of several files or streams.

shelve: A module for creating a persistent mapping, which stores its contents in a database with a given name.

 

with help the user to manage files, returns a fileobject and automatically call the close method at the end of the with block

with open('d:\\somefile.txt') as f:
    print type(f)

 

If you want to make sure your file is closed, even if something goes wrong, you can use the with statement.

file contents can be iterated directly:

for line in open(filename):

    process(line)

 

python中整型与float比较时,float会被round up,需要将整型转为float再做比较

 

注意直接用list转化string,会转化为单个字符的list

>>> list('guttagonol')
['g', 'u', 't', 't', 'a', 'g', 'o', 'n', 'o', 'l']

直接加[]才会是整个string的list
>>> ['guttagonol']
['guttagonol']

 

对已经import的模块进行修改后,需要重新导入时,要使用reload()函数。

swap

a, b = b, a

 


在2015年5月25日 12:25:19出现冲突的修改:

doc string 三重引号
 
if条件域中 数字0,空list, tuple,dictionary为False,非零数字,非空list, tuple, dictionary为True
 
布尔环境中,0、''、{}、[]、()、None为False,其他任何东西都为真
 
bool and a or b
类似C中的?表达式,但只有当a不为''时才有效
进阶  bool and [a] or [b]
即使a为'',[a]仍为非空
 
and 返回最后一个真值,或者第一个假值
or 返回第一个真值,或者最后一个假值
and or 表达式从左到右运算,优先级相同
 
list 运算符'+' 相当于list.extend
若运算对象为大型list,extend性能更好
 
tuple 一旦被创建,就不能改变
 
tuple没有方法,但可以用in
 
Dictionary {}
List []
Tuple ()
 
类的构造函数__init__ 被实例化之后即执行
Python 支持多重继承,在类定义中用逗号分隔列出多个父类即可
 
习惯上,任何Python类方法的第一个参数(对当前实例的引用)都叫做self。
 
定义包括__init__的类方法时,需要将self作为第一个参数列出
在子类中调用父类方法时,要显式列出self
类外调用方法时不需要写出self
 
子类定义__init_方法时,必须显式调用父类的__init__方法(若父类定义过__init__)     多重继承时要调用所有__init__方法?
 
创建一个类的实例只需像函数一样调用类,指定需要的参数即可
 

 
分割一个list会得到一个list,分割一个tuple会得到一个tuple。
 
tuple没有方法。但是支持in判断元素是否存在。
 
tuple可以用作Dicitonary的key。 Dictionary的key是不可变的。
 
类属性可以通过类而被引用,也可以借助实例被引用。两种方式公用同一个类属性。
 
try
  ...
except  Error
  ...
else
  ...
 
open返回的文件对象有write方法,但不会自动附带换行,需要手动添加
 
使用tuple多变量赋值,将一个dictionary映射为一个list
 
dictionary.items() 返回一个对应字典内容的list,其中元素是形如(key, value)的tuple
 
format conversion specifier
getattr() 通关module名获取module的引用
sys.module()
 
module参数仅在模块被导入时计算一次
 
文件操作
os.path.split()
os.path.splitext()
os.listdir()
os.path.isfile()
os.path.isdir()
os.getcwd()
os.path.normcase()
module glob
glob.glob() 可匹配所有子目录
 
嵌套函数
 
函数返回一个类,而非类的实例。在调用时传入参数即可实例化。
可实现动态的将类看成对象并传入参数,动态的实例化未知类型的类。
 
关于编译器返回语法错误
可讲编译器视作小狗,需要用合适的语言进行交流。
 
zip(*a) 
iter()
 
re.search(pattern, string)
 
python的del()函数只是删除变量名,无法删除变量所指向的值。要删除一个值(或某种数据结构),需要删除所有指向该值的变量名,然后该值作为无法再被指向的废弃数据,有python编译器的gc回收
 
locals() 当前module范围,返回局部命名空间的一个copy,更改变量不会造成实际影响
globals() 当前Python程序空间范围,返回实际的全局命名空间,更改变量会造成变量实际改变
from module import  是将指定方法导入locals()空间,import module 则是将对象module导入locals()空间
 
* 修饰tuple,**修饰dictionary。这种语法仅在参数列表中有效。
在函数声明时的*,作用是表示从这个参数开始,参数列表中的其他参数都存储在一个由*修饰名字的tuple中,作用范围直到参数列表结束或者遇到显示写出“参数名=默认值”这样的参数,因为这样的参数时存储在dictionary中的,而其后如果还有只写出参数值形式的参数,不再存储进之前的tuple
函数声明时的**, 作用是表示从该参数开始的key=value形式的参数存储入由**修饰名字的dictionary中,作用范围同*,遇到不同格式的参数定义时即结束。
 
在函数调用时参数中的*,表示传入的这个参数是一个tuple,类似利用tuple多重赋值操作。其中的值与参数的对应关系,需要参照函数声明时的参数格式确定,1:1,n:1均有可能。
函数调用时的**,表示传入的这个参数是一个dictionary,这个dictionary的所有key都应该是在函数声明时已经确定的参数,否则将报错。但如果函数声明时只是声明为dictionary,而未明确定义参数名,那么调用时的dictionary中key可以任意,后续操作必须引用传入的key才能取到对应的值。
 
最重要的一点,单个参数与*修饰的tuple的位置可变,但是如果参数列表中存在**修饰的dictionary,也即keyword arguments,必须将dictionary放在最后,否则报错。
 
一般的顺序:

def print_params_4(x, y, z=3, *pospar, **keypar):

         print x, y, z

         print pospar

         print keypar

A function such as multiplyByFactor that stores it enclosing scopes is called a closure.

If a function or an algorithm is complex and difficult to understand, clearly defining it in your own language before implementing it can be very useful. aka. pseudocode.

 

递归可以稍微增加函数的可读性

 

lambda表达式:mainly used to build in-line function

 

声明类的私有方法时,需要在方法前加上双下划线 __inaccessible

 

MRO method resolution order 查询父类中属性或者方法的顺序,Python内置算法

python支持多重继承

不同父类中有同名的方法时,优先使用声明时写在前面的父类的方法,并会使后面父类中的同名方法不可访问。(多重继承父类顺序很重要!)

 

dict.get(name[, default])     either create or update

 

try:/catch exception:      捕捉异常

raise Exception   抛出异常,若raise后无参数异常,则抛出最近的一个异常(也可能为raise Empty,总会抛出一个异常)。

 

Any function that contains a yield statement is called a generator.

def flatten(nested):
    for sublist in nested:
        for element in sublist:
            yield element

package import的时候只是执行package目录下的__init__.py,如果__init__.py中没有import package内的module,则package内部的module仍不可用,如果需要使用,则仍需显式import

两种显式import package中module的方式:

 import package.module

 from package import module

若__init__.py未import module,只import package有什么用?

 

re

the period (dot) can match anything, so is called a wildcard (通配符).

^ to invert the character set. '[^abc]' matches any character except a, b, or c

? nongreedy mode

emphasis_pattern = r'\*\*(.*?)\*\*'  (.*?) matches the least substring needed to the next '\*\*'

 

set can remove duplicated elements

module email processes text saved email files

 

pat = re.compile(r'[a-z\-\.]+@[a-z\-\.]+', re.IGNORECASE)

pat.match().group(1)            MatchObject.group(0) is the entire string.

 

zip()  使用指定的list作为字典的键和值,建立字典

>>> a = [1, 2, 3]
>>> b = ['j', 'v', 'm']
>>> dic = dict(zip(a, b))
>>> dic
{1: 'j', 2: 'v', 3: 'm'}

 

timeit  a more efficient module for code performance measurements

profile similar to timeit, but with a more comprehensive result

trace a module that can provide coverage analysis

itertools  used for operating iterable objects

logging provides a set of tools managing one or more central log

getopt optparse    used for processing parameters of Python script

optparse is newer, more efficient and easier

cmd  enables you to write a command line interpreter in which you can define your own commands. A personal specific prompt

 

Packages are implemented as directories that contain a file named __init__.py.

Exploring modules use dir, examine the __all__ variable, and use help

fileinput: A module that makes it easy to interate over the lines of several files or streams.

shelve: A module for creating a persistent mapping, which stores its contents in a database with a given name.

 

with help the user to manage files, returns a fileobject and automatically call the close method at the end of the with block

with open('d:\\somefile.txt') as f:
    print type(f)

 

If you want to make sure your file is closed, even if something goes wrong, you can use the with statement.

file contents can be iterated directly:

for line in open(filename):

    process(line)

 

python中整型与float比较时,float会被round up,需要将整型转为float再做比较

 

注意直接用list转化string,会转化为单个字符的list

>>> list('guttagonol')
['g', 'u', 't', 't', 'a', 'g', 'o', 'n', 'o', 'l']

直接加[]才会是整个string的list
>>> ['guttagonol']
['guttagonol']

 

对已经import的模块进行修改后,需要重新导入时,要使用reload()函数。

 

swap

a, b = b, a

 


在2015年5月25日 22:28:16出现冲突的修改:

doc string 三重引号
 
if条件域中 数字0,空list, tuple,dictionary为False,非零数字,非空list, tuple, dictionary为True
 
布尔环境中,0、''、{}、[]、()、None为False,其他任何东西都为真
 
bool and a or b
类似C中的?表达式,但只有当a不为''时才有效
进阶  bool and [a] or [b]
即使a为'',[a]仍为非空
 
and 返回最后一个真值,或者第一个假值
or 返回第一个真值,或者最后一个假值
and or 表达式从左到右运算,优先级相同
 
list 运算符'+' 相当于list.extend
若运算对象为大型list,extend性能更好
 
tuple 一旦被创建,就不能改变
 
tuple没有方法,但可以用in
 
Dictionary {}
List []
Tuple ()
 
类的构造函数__init__ 被实例化之后即执行
Python 支持多重继承,在类定义中用逗号分隔列出多个父类即可
 
习惯上,任何Python类方法的第一个参数(对当前实例的引用)都叫做self。
 
定义包括__init__的类方法时,需要将self作为第一个参数列出
在子类中调用父类方法时,要显式列出self
类外调用方法时不需要写出self
 
子类定义__init_方法时,必须显式调用父类的__init__方法(若父类定义过__init__)     多重继承时要调用所有__init__方法?
 
创建一个类的实例只需像函数一样调用类,指定需要的参数即可
 

 
分割一个list会得到一个list,分割一个tuple会得到一个tuple。
 
tuple没有方法。但是支持in判断元素是否存在。
 
tuple可以用作Dicitonary的key。 Dictionary的key是不可变的。
 
类属性可以通过类而被引用,也可以借助实例被引用。两种方式公用同一个类属性。
 
try
  ...
except  Error
  ...
else
  ...
 
open返回的文件对象有write方法,但不会自动附带换行,需要手动添加
 
使用tuple多变量赋值,将一个dictionary映射为一个list
 
dictionary.items() 返回一个对应字典内容的list,其中元素是形如(key, value)的tuple
 
format conversion specifier
getattr() 通关module名获取module的引用
sys.module()
 
module参数仅在模块被导入时计算一次
 
文件操作
os.path.split()
os.path.splitext()
os.listdir()
os.path.isfile()
os.path.isdir()
os.getcwd()
os.path.normcase()
module glob
glob.glob() 可匹配所有子目录
 
嵌套函数
 
函数返回一个类,而非类的实例。在调用时传入参数即可实例化。
可实现动态的将类看成对象并传入参数,动态的实例化未知类型的类。
 
关于编译器返回语法错误
可讲编译器视作小狗,需要用合适的语言进行交流。
 
zip(*a) 
iter()
 
re.search(pattern, string)
 
python的del()函数只是删除变量名,无法删除变量所指向的值。要删除一个值(或某种数据结构),需要删除所有指向该值的变量名,然后该值作为无法再被指向的废弃数据,有python编译器的gc回收
 
locals() 当前module范围,返回局部命名空间的一个copy,更改变量不会造成实际影响
globals() 当前Python程序空间范围,返回实际的全局命名空间,更改变量会造成变量实际改变
from module import  是将指定方法导入locals()空间,import module 则是将对象module导入locals()空间
 
* 修饰tuple,**修饰dictionary。这种语法仅在参数列表中有效。
在函数声明时的*,作用是表示从这个参数开始,参数列表中的其他参数都存储在一个由*修饰名字的tuple中,作用范围直到参数列表结束或者遇到显示写出“参数名=默认值”这样的参数,因为这样的参数时存储在dictionary中的,而其后如果还有只写出参数值形式的参数,不再存储进之前的tuple
函数声明时的**, 作用是表示从该参数开始的key=value形式的参数存储入由**修饰名字的dictionary中,作用范围同*,遇到不同格式的参数定义时即结束。
 
在函数调用时参数中的*,表示传入的这个参数是一个tuple,类似利用tuple多重赋值操作。其中的值与参数的对应关系,需要参照函数声明时的参数格式确定,1:1,n:1均有可能。
函数调用时的**,表示传入的这个参数是一个dictionary,这个dictionary的所有key都应该是在函数声明时已经确定的参数,否则将报错。但如果函数声明时只是声明为dictionary,而未明确定义参数名,那么调用时的dictionary中key可以任意,后续操作必须引用传入的key才能取到对应的值。
 
最重要的一点,单个参数与*修饰的tuple的位置可变,但是如果参数列表中存在**修饰的dictionary,也即keyword arguments,必须将dictionary放在最后,否则报错。
 
一般的顺序:

def print_params_4(x, y, z=3, *pospar, **keypar):

         print x, y, z

         print pospar

         print keypar

A function such as multiplyByFactor that stores it enclosing scopes is called a closure.

If a function or an algorithm is complex and difficult to understand, clearly defining it in your own language before implementing it can be very useful. aka. pseudocode.

 

递归可以稍微增加函数的可读性

 

lambda表达式:mainly used to build in-line function

 

声明类的私有方法时,需要在方法前加上双下划线 __inaccessible

 

MRO method resolution order 查询父类中属性或者方法的顺序,Python内置算法

python支持多重继承

不同父类中有同名的方法时,优先使用声明时写在前面的父类的方法,并会使后面父类中的同名方法不可访问。(多重继承父类顺序很重要!)

 

dict.get(name[, default])     either create or update

 

try:/catch exception:      捕捉异常

raise Exception   抛出异常,若raise后无参数异常,则抛出最近的一个异常(也可能为raise Empty,总会抛出一个异常)。

 

Any function that contains a yield statement is called a generator.

def flatten(nested):
    for sublist in nested:
        for element in sublist:
            yield element

package import的时候只是执行package目录下的__init__.py,如果__init__.py中没有import package内的module,则package内部的module仍不可用,如果需要使用,则仍需显式import

两种显式import package中module的方式:

 import package.module

 from package import module

若__init__.py未import module,只import package有什么用?

 

re

the period (dot) can match anything, so is called a wildcard (通配符).

^ to invert the character set. '[^abc]' matches any character except a, b, or c

? nongreedy mode

emphasis_pattern = r'\*\*(.*?)\*\*'  (.*?) matches the least substring needed to the next '\*\*'

 

set can remove duplicated elements

module email processes text saved email files

 

pat = re.compile(r'[a-z\-\.]+@[a-z\-\.]+', re.IGNORECASE)

pat.match().group(1)            MatchObject.group(0) is the entire string.

 

zip()  使用指定的list作为字典的键和值,建立字典

>>> a = [1, 2, 3]
>>> b = ['j', 'v', 'm']
>>> dic = dict(zip(a, b))
>>> dic
{1: 'j', 2: 'v', 3: 'm'}

 

timeit  a more efficient module for code performance measurements

profile similar to timeit, but with a more comprehensive result

trace a module that can provide coverage analysis

itertools  used for operating iterable objects

logging provides a set of tools managing one or more central log

getopt optparse    used for processing parameters of Python script

optparse is newer, more efficient and easier

cmd  enables you to write a command line interpreter in which you can define your own commands. A personal specific prompt

 

Packages are implemented as directories that contain a file named __init__.py.

Exploring modules use dir, examine the __all__ variable, and use help

fileinput: A module that makes it easy to interate over the lines of several files or streams.

shelve: A module for creating a persistent mapping, which stores its contents in a database with a given name.

 

with help the user to manage files, returns a fileobject and automatically call the close method at the end of the with block

with open('d:\\somefile.txt') as f:
    print type(f)

 

If you want to make sure your file is closed, even if something goes wrong, you can use the with statement.

file contents can be iterated directly:

for line in open(filename):

    process(line)

 

python中整型与float比较时,float会被round up,需要将整型转为float再做比较

 

注意直接用list转化string,会转化为单个字符的list

>>> list('guttagonol')
['g', 'u', 't', 't', 'a', 'g', 'o', 'n', 'o', 'l']

直接加[]才会是整个string的list
>>> ['guttagonol']
['guttagonol']

 

对已经import的模块进行修改后,需要重新导入时,要使用reload()函数。

 

swap

a, b = b, a

When two classes share some common behavior, it's probably better to create a generic superclass that both classes can inherit.

字典的KeyError异常:当请求字典对象里面没有的key时,python会抛出异常KeyError。

转载于:https://www.cnblogs.com/harelion/p/4856175.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值