前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你的数据科学python编程能力过关吗?看看这40道题你能得几分

你的数据科学python编程能力过关吗?看看这40道题你能得几分

作者头像
大数据文摘
发布2018-05-24 16:04:50
1K0
发布2018-05-24 16:04:50
举报
文章被收录于专栏:大数据文摘大数据文摘

大数据文摘作品,转载要求见文末

原作者 | FAIZAN SHAIKH

编译 | 颖子,张伯楠,一针,江凡

Python越来越受数据科学爱好者的欢迎,这一现象是有一定原因的。它为整个生态系统带来了一种通用的编程语言。通过Python,人们在一个生态系统中不仅可以转换和操作数据,还可以建立强大的管道模型和机器学习的工作流。

在Analytics Vidhya(一家著名的国外大数据博客,也是本文出处),我们都爱Python。我们中的大多数人使用Python作为机器学习的首选工具。除此之外,如果你想从事深度学习,在所有语言中,Python显然拥有最成熟的生态系统。

如果你因为数据科学而学习Python,该测试可以帮助你评估自己的 Python编程能力。此测试属于DataFest 2017(一个面向美国大学生的限时数据竞赛)的一部分,一千三百多人参加了这一测试,其中有三百多人完成了测试。

以下是完成测试的人员得分的分布情况:

点击这里查询最终成绩,以下是对整体得分情况的一些统计:

平均分:14.16

得分中值:15

得分众数:0

问题&答案

01

你一定看过电视剧“老爸老妈恋爱史”。那你还记得电视剧中主角们玩了一个游戏,即每个人都要在某个人说了“但是,额”之后喝酒。我想把这个游戏变换一下,如果你能借助技术手段来玩这个游戏,情况又如何呢?

为了确定一个人在整个游戏中会喝多少酒,你需要写一组代码。

以下是字幕脚本示例。

注意:Python正则表达式库已被命名为“re”导入。

txt = '''450

00:17:53,457 --> 00:17:56,175

好的,但是,额,

你也加入我们啦,谢谢。

451

00:17:56,175 --> 00:17:58,616

但是,额,要是被学生看到,

452

00:17:58,616 --> 00:18:01,610

但是,额,但是,额,但是,额,

但是,额,但是,额,

453

00:18:01,610 --> 00:18:03,656

我们得喝酒啦,教授。

454

00:18:03,656 --> 00:18:07,507

规则就是规则。

她说了“但是,额”

455

00:18:09,788 --> 00:18:12,515

但是,额,但是,额,但是,额。。。

老天保佑。

下面哪段代码适合于处理这项任务?

A) len(re.findall(‘But, um’, txt))

B) re.search(‘But, um’, txt).count()

C) len(re.findall(‘[B,b]ut, um’, txt))

D) re.search(‘[B,b]ut, um’, txt)).count()

答案(C)

你必须同时识别出“but”的大小写形式,所以选项C是正确的。

02

假设有下述代码

str = “””Email_Address,Nickname,Group_Status,Join_Year aa@aaa.com,aa,Owner,2014 bb@bbb.com,bb,Member,2015 cc@ccc.com,cc,Member,2017 dd@ddd.com,dd,Member,2016 ee@eee.com,ee,Member,2020 “””

为了只将域名从包含上述(例如“aaa”,“bbb”等等)邮箱地址字符串中抽取出来,你写了下列代码:

2)应当在上述横线中填入哪个数字,从而做到只对域名进行索引定位?

注意:Python正则表达式库已被命名为“re”导入。

A) 0

B) 1

C) 2

D) 3

选项(C)

阅读正则表达式re的语法

03

你的朋友提出了一个假设——“所有名字以字母“y”的发音(音同“/i/”)结尾的人都(例如Hollie)很聪明。” 请注意:名字应以“y”的发音(“/i/”)结尾而不是仅仅以字母“y”结尾。

现在你是一个数据狂人,通过从大学官网上抓取数据来挑战这个假设。下表为你收集到的数据。

Name

Marks

Andy

0

Mandi

10

Sandy

20

Hollie

18

Molly

19

Dollie

15

你想要用一个列表列出所有属于此类别的人,因此你写了下列代码:

3)用正则表达式怎么给“pattern”赋值?

注意:Python正则表达式库已被命名为“re”导入。

A) pattern = ‘(i|ie)(,)’

B) pattern = ‘(i$|ie$)(,)’

C) pattern = ‘([a-zA-Z]+i|[a-zA-Z]+ie)(,)’

D) None of these

答案(B)

你需要找到以“i”或“ie”结尾的模式。所以B是正确的。

04

假设,有两个列表:

a = [1,2,3,4,5]

b = [6,7,8,9]

要求创建一个一维列表包含a和b中的所有元素。

输出结果为

a = [1,2,3,4,5,6,7,8,9]

4)下列哪项是正确的?

A) a.append(b)

B) a.extend(b)

C) Any of the above

D) None of these

答案(B)

只有B是正确的。

05

你已经建立了一个机器学习模型,你希望现在锁定这个模型以便日后使用。下面哪条指令可以做到这一点?

注意:Pickle库已被命名为“pkl”导入。

A) push(model, “file”)

B) save(model, “file”)

C) dump(model, “file”)

D) freeze(model, “file”)

答案(C)

只有C是正确的。

06

我们希望将下述字符串转换成data-time的形式。

6)为了转换上述字符串,在data_format处该写入下列哪种格式?

A) “%d/%m/%y”

B) “%D/%M/%Y”

C) “%d/%M/%y”

D) “%d/%m/%Y”

答案(D)

只有D是正确的。

07

我已经为一个图像识别问题建立了一个简单的神经网络。现在,我想要测试一下我是否为隐藏层分配了正确的权重和偏差值。为了执行这一操作,我给出了一个单位矩阵作为输入。下述是我的单位矩阵:

A = [ 1, 0, 0 0, 1, 0 0, 0, 1]

7)你怎么用Python创建这个单位矩阵?

注意:numpy库已被命名为“np”导入。

A) eye(3)

B) np.identity(3)

C) np.array([1, 0, 0], [0, 1, 0], [0, 0, 1])

D) All of these

答案(A)

选项B不存在。选项C的语法是错误的。所以正确答案为A。

08

8)要检查两个数组是否占用相同的空间,你应该怎么做?

我有两个numpy数组“e”和“f”。

当你输出“e”和“f”时会得到下列值。

当你改变第一个数组的值的时候,第二个数组的值也会变化。这就为处理数据造成了麻烦。

例如,如果你将数组e中前五个数设为0;

最终e和f的值为:

你推测这两个数组一定被分配了相同的空间。

A)检查这两个数组的内存,如果内存相同则表示数组占用相同空间。

B)输入“np.array_equal(e, f)”,如果输出值为“True”,则表示两个数组占用相同空间。

C)通过e.flags和f.flags输出两个数组的标志;检查标志“OWNDATA”。如果有一个为“False”,那么两个数组被分配到了同一空间。

D)以上皆错。

答案(C)

只有C是正确的。

09

假设你想要把训练和测试数据集(都由train_set和test_set两个numpy数组构成)放入结果数组中,以便同时处理这些数据。方法如下:

9)该如何添加这两个数组?

注意:Numpy库已被命名为“np”导入。

A) resulting_set = train_set.append(test_set)

B) resulting_set = np.concatenate([train_set, test_set])

C) resulting_set = np.vstack([train_set, test_set])

D) None of these

答案(C)

选项A和B可以进行水平堆叠(horizontal stacking),但是我们需要将数组进行垂直堆叠(vertical stacking)。所以C选项是正确的。

10

假设你为Iris数据集调试一个随机森林分类器的超参数。

Sepal_length

Sepal_width

Petal_length

Petal_width

Species

4.6

3.2

1.4

0.2

Iris-setosa

5.3

3.7

1.5

0.2

Iris-setosa

5.0

3.3

1.4

0.2

Iris-setosa

7.0

3.2

4.7

1.4

Iris-versicolor

6.4

3.2

4.5

1.5

Iris-versicolor

10)“ random_state (Seed value)”的最佳值为?

A) np.random.seed(1)

B) np.random.seed(40)

C) np.random.seed(32)

D) 无法判断

答案(D)

没有最佳的种子值,这与数据有关。

11

在使用numpy读一个csv文件时,你希望能用“01/01/2010”自动替换“Date_Of_Joining”一列中的缺失值。

Name

Age

Date_Of_Joining

Total_Experience

Andy

20

01/02/2013

0

Mandy

30

01/05/2014

10

Sandy

10

0

Bandy

40

01/10/2009

20

11)下列哪个命令在读取有numpy的文件时,能填充表中的空值?

注意:numpy已被导入为np。

A) filling_values = (“-“, 0, 01/01/2010, 0) temp = np.genfromtxt(filename, filling_values=filling_values)

B) filling_values = (“-“, 0, 01/01/2010, 0) temp = np.loadtxt(filename, filling_values=filling_values)

C) filling_values = (“-“, 0, 01/01/2010, 0) temp = np.gentxt(filename, filling_values=filling_values)

D) None of these

正确答案:(A)

A选项是正确选项。

12

12)在sklearn包中如何导入决策树分类(decision tree classifier)?

A) from sklearn.decision_tree import DecisionTreeClassifier

B) from sklearn.ensemble import DecisionTreeClassifier

C) from sklearn.tree import DecisionTreeClassifier

D) None of these

答案:(C)

C选项是正确答案

13

13)你在google制表程序里上传并公开分享了一个csv格式的数据集。你想在python中获取它,你应该如何实现这一点?

注意:库文件StingIO已经导入为StringIO。

D)以上选项都不正确

正确答案:(A)

A选项是正确答案。

14

假设你有一个已经在pandas包里加载的,2列3行的数据框架(dataframe)训练文件。

pandas已经导入为pd。

train = pd.DataFrame({'id':[1,2,4],'features':[["A","B","C"],["A","D","E"],["C","D","F"]]})

现在你想在“features”列中使用lambda函数:

train['features_t'] = train["features"].apply(lambda x: " ".join(["_".join(i.split(" ")) for i in x]))

14)下列打印命令的输出结果是什么?

print train['features_t']

A)

0 A B C 1 A D E 2 C D F

B)

0 AB

1 ADE

2 CDF

C) Error D) None of these

D)上述选项都不对

答案:(A)

A选项是正确答案。

15

现在考虑一个多类别分类问题。这个问题将通过酒的各属性值来预测它的品质。数据已经装载进一个数据框架“df”,如下表所示

fixed acidity

volatile acidity

citric acid

residual sugar

chlorides

free sulfur dioxide

total sulfur dioxide

density

pH

sulphates

Alcohol

quality

0

7.4

0.70

0.00

1.9

0.076

11

34

0.9978

3.51

0.56

9.4

5

1

7.8

0.88

0.00

2.6

0.098

25

67

0.9968

3.20

0.68

9.8

5

2

7.8

0.76

0.04

2.3

0.092

15

54

0.9970

3.26

0.65

9.8

5

3

11.2

0.28

0.56

1.9

0.075

17

60

0.9980

3.16

0.58

9.8

6

4

7.4

0.70

0.00

1.9

0.076

11

34

0.9978

3.51

0.56

9.4

5

现在quality列中有值1到10,现在我们想用二值分类问题来替换他们。你想将临界值设定为5,这样的话如果值大于5,输出结果为1,否则输出为0.

15)下列哪个代码能帮助你完成这项任务?

注意:Numpy已被作为np导入,数据框设为df。

答案:(A)

A选项是正确答案。

16

假设我们编写了如下数据框:

16)下列给出的两组数据系列有什么差别?

1. df[‘Name’] and

2. df.loc[:, ‘Name’]

注意:Pandas已经作为pd导入。

A) 2 is view of original dataframe and 1 is a copy of original dataframe.

B) 1 is view of original dataframe and 2 is a copy of original dataframe.

C) Both are copies of original dataframe.

D) Both are views of original dataframe

答案:(B)

B选项是正确答案。

17

假设有一个定义如下的函数“fun”:

现在定义一个包含三个数的list:

g = [10,11,12]

17)下列表达的输出结果是什么:

print fun(g), g

A) [5, 11, 12] [5, 11, 12]

B) [5, 11, 12] [10, 11, 12]

C) [10, 11, 12] [10, 11, 12]

D) [10, 11, 12] [5, 11, 12]

Solution: (A)

答案:A

A选项是正确答案。

18

Sigmoid函数通常用于创建一个神经网络激活函数。一个Sigmoid函数的定义如下:

18)我们必须学会找出sigmoid函数的导数,这在反向传播算法中十分重要。下列哪个选项能得到该导数?

D)上述选项均不正确

正确答案:(C)

C选项是正确选项。

19

假设有一系列用电量的按月统计数据,你要将他们转化为按日统计的数据,例如

首先你需要将每个月的数据展开(假设每个月都有30天)

19)以下那段代码能够实现这个需求

注意:Numpy已被作为np导入,数据框设为df。

A) new_df = pd.concat([df]*30, index = False)

B) new_df = pd.concat([df]*30, ignore_index=True)

C) new_df = pd.concat([df]*30, ignore_index=False)

D) None of these

答案:B

答案B是正确的

20

假设你有这么一个数据框架 df

20)你想将’Count’列的名称改成’Click_Count’,为此你用了如下代码:

df.rename(columns = {'Count':'Click_Count'})

以下这段代码的输出结果是?

print df.columns

注意:Pandas库已经以pd的缩写导入

A) [‘Click_Id’, ‘Click_Count’]

B) [‘Click_Id’, ‘Count’]

C) Error

D) None of these

答案:B

选项B是正确的

21

21)在许多数据科学工程中,你需要将数据框架转换成字典。假设你要将‘df’转成一个数据字典,‘Click_Id’作为键,‘Count’作为每个键对应的值。以下哪个选项会得到这个结果

注意:Pandas库已经以pd的缩写导入

A) set_index(‘Click_Id’)[‘Count’].to_dict()

B) set_index(‘Count’)[‘Click_Id’].to_dict()

C) We cannot perform this task since dataframe and dictionary are different data structures

D) None of these

答案:A

选项A是正确的

22

22)假设你想用以下表达式将df赋值给df1,这样你就可以在将来需要时从df1中获得df的初始内容

df1 = df

Now you want to change some values of “Count” column in df.

现在你想改变df中‘Count’列的一些值

df.loc[df.Click_Id == 'A', 'Count'] += 100

Which of the following will be the right output for the below print statement?

以下表达式输出的结果是?

print df.Count.values,df1.Count.values

Note: Pandas library has been imported as pd.

注意:Pandas库已经以pd的缩写导入

A) [200 200 300 400 250] [200 200 300 400 250]

B) [100 200 300 400 250] [100 200 300 400 250]

C) [200 200 300 400 250] [100 200 300 400 250]

D) None of these

答案:A

选项A是正确的

23

23)你写了一段处理数据的代码,这段代码运行耗时很长。你想通过给代码加上书签来记录每行代码运行的时间以便有针对性的修改。你可以采用以下哪些步骤

1.用time.sleep()作为书签来记录每行代码“睡”了多久

2.用time.time()作为书签记录每行代码耗时多长

3.用detetime.timedelta()作为书签以记录每段代码运行的时间差值

4.你将整段代码拷贝到Ipython/Jipyter记事本中,给每段代码加一个断点,然后在每个断点使用 %%timeit

A) 1 & 2

B) 1,2 & 3

C) 1,2 & 4

D) All of the above

Solution: (C)

Option C is correct

答案:C

选项C是正确的

24

24)你要怎么利用pandas模块从文件中读取数据并且跳过前三行?

注意:panda库已经被命名为”pd”导入到给出的文件中(email.csv),最前面的三行记录为空。

A) read_csv(‘email.csv’, skip_rows=3)

B) read_csv(‘email.csv’, skiprows=3)

C) read_csv(‘email.csv’, skip=3)

D) None of these

答案(B)

选项B是正确的

25

25)在”method”处应该填些什么内容,使得程序能够输出想要的结果?

下面为数据框”df”:

现在,你想要知道BMI和性别会否影响销售额。

因此你想要绘制一幅如下图所示的条状图:

对应的代码为:

A) stacked=True

B) stacked=False

C) stack=False

D) None of these

答案:(A)

这是一幅堆叠条状图。

26

26)假设已知两列表——City_A 和 City_B。

City_A = [‘1′,’2′,’3′,’4’]

City_B = [‘2′,’3′,’4′,’5’]

两个城市中有一些值是一样的。下列哪一段代码可以找到所有在“City_A” 但不在 “City_B”中的城市名?

A) [i for i in City_A if i not in City_B]

B) [i for i in City_B if i not in City_A]

C) [i for i in City_A if i in City_B]

D) None of these

答案:(A)

选项A是正确的

27

假设你正在尝试利用pandas模块读取文件”temp.csv”,然后你收到了如下错误提醒:

27)下列哪一个选项可能改正上述错误?

注意:pandas模块已被命名为”pd”后导入

A) pd.read_csv(“temp.csv”, compression=’gzip’)

B) pd.read_csv(“temp.csv”, dialect=’str’)

C) pd.read_csv(“temp.csv”, encoding=’utf-8′)

D) None of these

答案:(C)

选项C是正确的,因为编码应为”utf-8”。

28

28)假设你正在定义如下元组:

tup = (1, 2, 3, 4, 5 )

现在,你想要将元组的值的第二个值改为10,下列哪项能够满足条件?

A) tup(2) = 10

B) tup[2] = 10

C) tup{2} = 10

D) None of these

答案:(D),元组的值不能被修改。

29

29)你想要访问一个url(统一资源定位符)为www.abcd.org的网页,下列哪一个选项能够完成这项任务?

A) urllib2.urlopen(www.abcd.org)

B) requests.get(www.abcd.org)

C) Both A and B

D) None of these

答案(C)

选项C是正确的

30

30)你要使用BeautifulSoup来读取这个网页的标题,请问哪一段代码能实现这个功能?

提示:你需要利用标题标签提取文本

A. from bs4 import BeautifulSoup soup =BeautifulSoup(html_doc,’html.parser’) print soup.title.name

B. from bs4 import BeautifulSoup soup =BeautifulSoup(html_doc,’html.parser’) print soup.title.string

C. from bs4 import BeautifulSoup soup=BeautifulSoup(html_doc,’html.parser’) print soup.title.get_text

D. None of these

答案:(B)

选项B是正确的

31

想象一下你得到了一个形式如下所示的数据框列表

D = [‘A’,’B’,’C’,’D’,’E’,’AA’,’AB’]

现在,你想要通过LabelEncoder将标注编码应用在这个列表上来进行导入及变换。

31)下面语句的输出是什么?

print le.fit_transform(D)

A. array([0, 2, 3, 4, 5, 6, 1])

B. array([0, 3, 4, 5, 6, 1, 2])

C. array([0, 2, 3, 4, 5, 1, 6])

D. Any of the above

答案:( D )

选项D是正确的

32

32)下面语句的输出是?

print df.val == np.nan

假设你已经定义了一个含有两列的数据框。

A) 0 False 1 False 2 False 3 False

B) 0 False 1 False 2 True 3 False

C) 0 True 1 True 2 True 3 True

D) None of these

答案:(A)

选项A是正确的

33

33)假设数据存储于HDFS,你想知道数据是以什么结构排列的。下列哪个命令可以帮助你找到HDFS对应的键?

注意:HDFS文件已由h5py安装并命名为”hf”.

A) hf.key()

B) hf.key

C) hf.keys()

D) None of these

答案:(C)

选项C是正确的

34

已知电影评论如下:

reviews = [‘movie is unwatchable no matter how decent the first half is . ‘, ‘somewhat funny and well paced action thriller that has jamie foxx as a hapless fast talking hoodlum who is chosen by an overly demanding’, ‘morse is okay as the agent who comes up with the ingenious plan to get whoever did it at all cost .’]

你的任务是从上述评论中发现评论者的情绪。为此你首先写了一段代码来计算评论中的单词数。

34)我们应该选取哪一个分隔符来计算单词数?

A. ‘ ‘

B. ‘,’

C. ‘.’

D. None of these

答案:(A)

选项A是正确的

35

35)在下图中,应该如何设置线的宽度?

针对上图,生成该图片的代码为

A. In line two, write plt.plot([1,2,3,4], width=3)

B. In line two, write plt.plot([1,2,3,4], line_width=3

C. In line two, write plt.plot([1,2,3,4], lw=3)

D. None of these

答案:(C)

选项C是正确的

36

36) 如何重置已知列表数据框的索引?新的索引如下:

new_index=[‘Safari’,’Iceweasel’,’Comodo Dragon’,’IE10′,’Chrome’]

注意:df是一个pandas模块数据框

http_status

response_time

Firefox

200

0.04

Chrome

200

0.02

Safari

404

0.07

IE10

404

0.08

Konqueror

301

1.00

A) df.reset_index(new_index,)

B) df.reindex(new_index,)

C) df.reindex_like(new_index,)

D) None of these

答案:(A)

选项A是正确的

37

37)基于乘客舱位类别决定他们的幸存比例

PassengerId

Survived

Pclass

Name

Sex

Age

SibSp

Parch

Ticket

Fare

Cabin

Embarked

0

1

0

3

Braund, Mr. Owen Harris

male

22.0

1

0

A/5 21171

7.2500

NaN

S

1

2

1

1

Cumings, Mrs. John Bradley (Florence Briggs Th…

female

38.0

1

0

PC 17599

71.2833

C85

C

2

3

1

3

Heikkinen, Miss. Laina

female

26.0

0

0

STON/O2. 3101282

7.9250

NaN

S

3

4

1

1

Futrelle, Mrs. Jacques Heath (Lily May Peel)

female

35.0

1

0

113803

53.1000

C123

S

4

5

0

3

Allen, Mr. William Henry

male

35.0

0

0

373450

8.0500

NaN

S

A. crosstab(df_train[‘Pclass’], df_train[‘Survived’])

B. proportion(df_train[‘Pclass’], df_train[‘Survived’])

C. crosstab(df_train[‘Survived’], df_train[‘Pclass’])

D. None of these

答案:(A)

选项A是正确的

38

38)你想要写一个通用类来生成文本的ngram。例如一个句子“This is a sample text”的2-gram版本如下:[[“this, “is”], [“is”, “a”], [“a, “sample”], [“sample”, “text”]]

下列哪段代码是正确的?

A. def generate_ngrams(text, n): words = text.split(‘\n’) output = [] for i in range(len(words)-n+1): append(words[i+1:i+n]) return output

B. def generate_ngrams(text, n): words = text.split() output = [] for i in range(len(words)-n+1): append(words[i:i+n]) return output

C. def generate_ngrams(text, n): words = text.split() output = [] for i in range(len(words)-n+1): append(words[i+1:i+n]) return output

D. None of these

答案:(B)

选项B是正确的

39

39)下列哪句代码将输出CSV文件中隐藏了索引和头部的编码为UTF-8的数据框?

A. df_1.to_csv(‘../data/file.csv’,encoding=’utf-8′,index=True,header=False)

B. df_1.to_csv(‘../data/file.csv’,encoding=’utf-8′,index=False,header=True)

C. df_1.to_csv(‘../data/file.csv’,encoding=’utf-8′,index=False,header=False)

D. None of these

答案:(C)

选项C是正确的

40

下列哪一项是对mean squared error (均方误差,MSE) 的正确实现?

注意:numpy库已经被命名为”np”导入

A. def MSE(real_target, predicted_target): return np.mean((np.square(real_target) – np.square(predicted_target)))

B. def MSE(real_target, predicted_target): return np.mean((real_target – predicted_target)**2)

C. def MSE(real_target, predicted_target): return np.sqrt(np.mean((np.square(real_target) – np.square(predicted_target))))

D. None of the above

答案:(B)

选项B是正确的

结语

如果你正在学习Python,请确保自己通过上面的测试。这不仅会帮你评估技能,也可以帮你看清自己在整个学习群体中的位置。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档