为了账号安全,请及时绑定邮箱和手机立即绑定
3. js 文件引入

日常开发过程中,我们经常会在js文件中或者在 .vue 文件中的 <script> 标签内引入第三方js插件。可以使用相对路径和绝对路径引入。

3.3 调用 js 插件方法

实例:// config.js插件内容const host = 'http://imooc.com'export default host// 引入插件并调用<script>import host from '../../common/config.js';export default {onLoad() {console.log(‘打印出js插件的内容’,host)} }</script>打印结果:http://imooc.com调用插件的时候,明明文件已经成功引入了,却不会成功打印出js插件中的内容。这个时候可以检查一下是否在js插件中使用 export 将变量暴露出去了。因为js插件是独立的文件,该文件内部的所有的变量外部都无法获取。如果希望获取某个变量,必须通过export输出,不然将会读取失败。

2. 引入 jQuery

jQuery 可以直接从官网下载,也可以用 npm 安装,也可以使用 bower 等这些包管理工具,本篇幅采用 CDN 的形式引入,本身 jQuery 就是一个 .js 文件,只需引入就能使用。<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>引入之后就可以在全局下通过 jQuery 或者 $ 调用 jQuery 了。<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script><script> console.log($); console.log(jQuery); console.log($ === jQuery); // 输出:true</script>

3.2 HTML 中使用 JavaScript

3.2.1 直接使用 JS直接在 html 中使用 JS 是十分方便的,我们只要是在 <body> 标签中加入 <script> 标签即可,在 <script> 标签内部,我们就可以写 JavaScript 语句了。<script type="text/javascript"> console.log('计算1+...+100的结果:') sum = 0 for (var i = 0; i < 100; i++) { sum += i } console.log(sum)</script>3.3.2 引用外部 JS引入 JS,又分为引入网络上的 JS 和内部 JS,直接指定 JS 的路径即可。不过一般不会引入互联网上的 JS,因为不如直接下载下来,放在本地引用。<script src="my_internal.js"></script>这个和我们之前编程的库函数一样,外部 JS 封装了许多常用的函数,我们引入相关的 JS 代码之后便能够极大简化 JS 的开发。其中对于 JS 影响最大的就是 jQuery,它极大简化了对 HTML 中元素操作,而且非常容易学习,互联网上海量的 JS 插件库大多都是基于 jQuery 开发的 。在做前端开发时,熟练使用 jQuery 是十分必要的。

5. 小结

项目开发过程中,除了自身的代码之外,对于外部资源的引用也是不可或缺的,所以需要熟练掌握在各种情况下,引入外部资源的方式。本节课程我们主要学习了 uni-app 的资源路径。本节课程的重点如下:了解并掌握在模板内引入静态资源;了解并掌握 js文件的引入,以及调用 js 插件的方法;了解并掌握 css 文件的引入,了解 css 中各类本地文件的引入。

4.1 引入 css 和 js 文件

<html><head><meta charset='utf-8'><script src="https://lib.baomitu.com/jquery/2.2.4/jquery.min.js"></script><link href="{{url_for('static', filename='style.css')}}" rel="stylesheet"><script src="{{url_for('static', filename='script.js')}}"></script></head>在第 4 行,引入库 jquery,在前端需要使用 jquery 的 ajax 功能调用后端服务。在第 5 行,引入静态文件 style.css,函数 url_for(‘static’, filename=‘style.css’) 的输出为 ‘/static/style.css’。在第 6 行,引入静态文件 script.js,函数 url_for(‘static’, filename=‘script.js’) 的输出为 ‘/static/script.js’。

2. 匿名函数引用外部变量

如果在匿名函数内,使用了外部环境的变量,就构成了一个闭包。简单来讲就是一个函数内,使用匿名函数来操作函数内声明的变量。代码示例:package mainimport ( "fmt")func main() { str := "Hello World!" func() { str = "Hello Codey!" }() fmt.Println(str)}第 10 行:匿名函数直接操作了main函数之中的变量str,将其修改为了"Hello Codey!";第 12 行:输出变量的值。执行结果:上述例子简单的构造了一个闭包,在匿名函数中并没有声明或者定义str这个变量,但是可以直接操作,就是引用可main函数中的自由变量。这个例子可能对自由变量的引用表现不是很直观,我们接下来使用defer和闭包相结合,深入了解一下闭包中的引用外部变量。代码示例:package mainimport ( "fmt")func main() { str := "Hello World!" defer func() { fmt.Println("defer str=", str) }() str = "Hello Codey!" fmt.Println("main str=", str)}执行结果:从执行结果上来看应该是蛮出人意料的,因为前文介绍 defer 的时候明确介绍了 defer 后变量是保留它在 defer 时的值,而不会被 defer 之后的代码所改变。但是在闭包这边这个看起来不太适用,其实是适用的,只是闭包是引用了这个变量,也就是说,在 defer 时被保留下来的是这个变量的地址,后续代码改变的不是地址,而是这个地址存储的值,所以后续代码对这个变量的操作,都会反应到这个 defer 中。Tips:关于变量的地址,在后续的Go语言的指针中会有详细的介绍。

3.3 外部类

如果你的事件处理逻辑需要在多个类中使用,那么以上两种方式都无法满足,这时候就需要声明一个外部类来实现OnClickListener接口了:package com.emercy.myapplication;import android.content.Context;import android.view.View;import android.widget.Toast;public class EventHandle implements View.OnClickListener { Context mContext; public EventHandle(Context context) { mContext = context; } @Override public void onClick(View v) { // 点击回调中处理事件 Toast.makeText(mContext.getApplicationContext(), "Button被点击了", Toast.LENGTH_LONG).show(); }}由于需要弹 Toast,所以这里在构造器中传入了一个 Context 对象,这样一来 MainActivity 就可以更整洁一些了:package com.emercy.myapplication;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = findViewById(R.id.button); // 绑定点击监听器 button.setOnClickListener(new EventHandle(this)); }}

1.1 引入相关的库

<html><head> <meta charset='utf-8'> <script src="https://lib.baomitu.com/jquery/2.2.4/jquery.min.js"></script> <link href="https://lib.baomitu.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> <link href="{{url_for('static', filename='style.css')}}" rel="stylesheet"> <script src="{{url_for('static', filename='script.js')}}"></script> <title>每日清单</title></head>在第 4 行和第 5 行,引入 JQuery 和 font-awesome 库。在第 6 行,引入网站的样式文件 static/style.css,函数 url_for(‘static’, filename=‘style.css’) 表示 static 文件夹下的文件 style.css,它的输出为 static/style.css。在第 7 行,引入 JS 文件 static/script.js,函数 url_for(‘static’, filename=‘script.js’) 表示 static 文件夹下的文件 static/script.js,它的输出为 static/script.js。

4.7 JS DOC 注释

使用 JS DOC 描述函数是非常良好的习惯,良好的 JS DOC 书写还可以使用工具快速生成文档。JS DOC 对函数的描述大体如下:/** * 这是这个求幂函数 计算 x 的 y 次方 * @param {Number} x - 底数 * @param {String} y - 指数 */function pow(x, y) { // ...}除此之外还可以描述返回值等。

2.2 部分导入

什么是部分导入呢? 我的理解是局部的使用导入,也就是说可以仅导入 Sass 或 Scss 文件,而不将它们编译为 CSS, 那么应该怎么做呢?假如我要导入一个 my.scss 文件,我不希望将它编译为 CSS ,那么需要使用下划线开头的文件名,也就是说需要改名为 _my.scss ,然后使用如下导入代码:@import 'my';上面的代码导入的就是 _my.scss 文件,并且不会将它编译为 CSS 。另外需要注意的是:不可以同时存在带有下划线和不带下划线的同名文件!

HTML、CSS/JS 基础

HTML 是全程是超文本标记语言,是用来创建网页的标准语言,学习本门课程我们只需要掌握一些基础的 HTML 语法就可以,因为 Django 框架提供了更加强大的网页构建工具 DTL。并且现在主流的开发模式是前后端分离开发模式,前端工程师和后端工程师的职责泾渭分明,所以我们只需要掌握最基础的 HTML 能够用来进行必要的代码调试就好。如果你对 HTML 不太了解,可以学习这门《HTML5 入门教程》,通过这门课程的学习,你会对 HTML 有一个系统的认知并达到学习这门课程的要求。HTML 用来快速的搭建页面结构,CSS 则是负责页面的样式让页面更加的美观,JS 则是负责页面的交互行为和动画效果。这三样技术结合起来才能更好的构建我们的页面。CSS 技术在这里推荐这门《CSS3 基础教程》,JS 入门则推荐学习这门《JS 入门教程》。出了必须的 Python 语法基础外,课程中也会带着大家过一遍课程中所需要的这些前端基础知识,如果你不想自己去学习的话跟着课程走也是没问题的。

2. 内部函数访问外部函数的局部变量

嵌套定义函数时,内部函数可能需要访问外部函数的变量,例子代码如下:def outter(): local = 123 def inner(local): print('Inside inner, local = %d', local) inner(local)outter() 在第 1 行,定义了外部函数 outter在第 2 行,定义了函数 outter 的局部变量 local在第 4 行,定义了内部函数 inner函数 inner 需要访问函数 outter 的局部变量 local在第 7 行,将函数 outter 的局部变量 local 作为参数传递给函数 inner在第 5 行,函数 inner 就可以访问函数 outter 的局部变量 local程序运行结果如下:Inside inner, local = 123在上面的例子中,将外部函数 outter 的局部变量 local 作为参数传递给内部函数 inner。Python 允许内部函数 inner 不通过参数传递直接访问外部函数 outter 的局部变量,简化了参数传递,代码如下:def outter(): local = 123 def inner(): print('Inside inner, local = %d', local) inner()在第 1 行,定义了外部函数 outter在第 2 行,定义了函数 outter 的局部变量 local在第 4 行,定义了内部函数 inner函数 inner 需要访问函数 outter 的局部变量 local在第 5 行,函数 inner 可以直接访问函数 outter 的局部变量 local在第 7 行,不用传递参数,直接调用函数 inner()

5.4 额外索引

但是如果你使用->>操作符,则不会走索引。SELECT info FROM movie WHERE info->>'title' = '铁拳';若要支持->>索引,你必须为它也建立单独的索引,如下:CREATE INDEX movie_info_title_index ON movie USING btree((info ->> 'title'));

1. 访问局部变量

Lambda 表达式不会从父类中继承任何变量名,也不会引入一个新的作用域。Lambda 表达式基于词法作用域,也就是说 Lambda 表达式函数体里面的变量和它外部环境的变量具有相同的语义。访问局部变量要注意如下 3 点:可以直接在 Lambda 表达式中访问外层的局部变量;在 Lambda 表达式当中被引用的变量的值不可以被更改;在 Lambda 表达式当中不允许声明一个与局部变量同名的参数或者局部变量。现在我们来仔细说明下这三点。

3.2 引入项目依赖

引入 Web 项目依赖、热部署依赖。此处使用 Thymeleaf 演示控制器返回视图时的异常处理方式,所以引入 Thymeleaf 依赖。实例: <!-- web项目依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- ThymeLeaf依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>

3.1 引入 RabbitTemplate

以 Maven 引入方式为例,引入代码如下所示:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.6.5</version></dependency>和 RabbitAdmin 相同,在将这两个依赖进行引入之后,我们就可以对 RabbitTemplate 进行配置了。

1. 从外部迭代到内部迭代

对于一个集合迭代是我们常用的一种操作,通过迭代我们可以处理返回每一个操作。常用的就是 for 循环了。我们来看个例子:1273输出: 2这里我们统计数组 numbers 中大于 5 的元素的个数,我们通过 for 循环对 numbers 数组进行迭代,随后对每一个元素进行比较。这个调用过程如下:在这个过程中,编译器首先会调用 List 的 iterator() 方法产生一个 Iterator 对象来控制迭代过程,这个过程我们称之为 外部迭代。 在这个过程中会显示调用 Iterator 对象的 hasNext() 和 next() 方法来完成迭代。这样的外部迭代有什么问题呢?Tips: 对于循环中不同操作难以抽象。比如我们前面的例子,假设我们要对大于 5 小于 5 和等于 5 的元素分别进行统计,那么我们所有的逻辑都要写在里面,并且只有通过阅读里面的逻辑代码才能理解其意图,这样的代码可阅读性是不是和 Lambda 表达式的可阅读性有着天壤之别呢?Java 8 中提供了另一种通过 Stream 流来实现 内部迭代 的方法。我们先来看具体的例子:1274输出: 2在这个例子中,我们调用 stream() 方法获取到 Stream 对象,然后调用该对象的 filter() 方法对元素进行过滤,最后通过 count() 方法来计算过滤后的 Stream 对象中包含多少个元素对象。与外部迭代不同,内部迭代并不是返回控制对象 Iterator, 而是返回内部迭代中的相应接口 Stream。进而把对集合的复杂逻辑操作变成了明确的构建操作。在这个例子中,通过内部迭代,我们把整个过程被拆分成两步:找到大于 5 的元素;统计这些元素的个数。这样一来我们代码的可读性是不是大大提升了呢?

4.2 引入项目依赖

我们引入 Web 项目依赖、热部署依赖。由于本项目需要访问数据库,所以引入 spring-boot-starter-jdbc 依赖和 mysql-connector-java 依赖。 pom.xml 文件中依赖项如下:实例: <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- myql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>

3.2 引入项目依赖

我们引入 Web 项目依赖、热部署依赖。由于本项目需要使用 JPA 访问数据库,所以引入 spring-boot-starter-jdbc 、 mysql-connector-java 和 spring-boot-starter-data-jpa 依赖。 pom.xml 文件中依赖项如下:实例: <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- jpa --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- myql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>

4.2 引入项目依赖

引入 Web 项目依赖、热部署依赖即可。实例: <!-- web项目依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>

2.2 模块的局部状态

对于模块内部的 mutation 和 getter,接收的第一个参数是模块的局部状态对象。const moduleA = { state: { count: 0 }, mutations: { increment (state) { // 这里的 `state` 对象是当前模块的局部状态 state.count++ } }, getters: { doubleCount (state) { // 这里的 `state` 对象是当前模块的局部状态 return state.count * 2 } }}同样,对于模块内部的 action,局部状态通过 context.state 暴露出来,根节点状态则为 context.rootState:const moduleA = { // ... actions: { incrementIfOddOnRootSum ({ state, commit, rootState }) { if ((state.count + rootState.count) % 2 === 1) { commit('increment') } } }}对于模块内部的 getter,根节点状态会作为第三个参数暴露出来:const moduleA = { // ... getters: { sumWithRootCount (state, getters, rootState) { return state.count + rootState.count } }}完整示例:802代码解释JS 代码第 4-26 行,我们定义了模块 moduleA。JS 代码第 9-11 行,在 moduleA 定义 getter countSum。JS 代码第 13-20 行,在 moduleA 定义 mutations。JS 代码第 21-25 行,在 moduleA 定义 actions。JS 代码第 27-34 行,我们定义了 store,并将 moduleA 传入 modules 的属性中。

2.3 引入项目依赖

我们引入 Web 项目依赖、热部署依赖。由于本项目需要访问数据库,所以引入 spring-boot-starter-jdbc 依赖和 mysql-connector-java 依赖。pom.xml 文件中依赖项如下:实例: <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- myql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>

3.3 引入项目依赖

我们引入 Web 项目依赖、热部署依赖。由于本项目需要访问数据库,所以引入 spring-boot-starter-jdbc 依赖和 mysql-connector-java 依赖,由于使用 Druid ,所以还需要添加 Druid 相关依赖。pom.xml 文件中依赖项如下:实例: <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- myql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- springboot druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.22</version> </dependency>

4.2 引入项目依赖

我们引入 Web 项目依赖、热部署依赖。由于本项目需要访问数据库,所以引入 spring-boot-starter-jdbc 依赖和 mysql-connector-java 依赖。由于项目中使用了 MyBaits ,所以还需要引入 mybatis-spring-boot-starter 依赖。本节实例开发完成后会使用 JUnit 进行测试,所以引入 junit 依赖。最终,pom.xml 文件中依赖项如下:实例: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- Web支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- JDBC --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- MySQL驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 集成MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency> <!-- junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <!-- 测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency>

1.2 HTML 基础组成部分

HTML 的最基本的结构如下:<html><head> <!-- 这里是页面的头部,可以引入的js库,也可以写css --></head><body> <!-- 页面的主体内容 --></body><!-- 在下面还可以写js脚本<script type="text/javascript"> document.write("Hello World!")</script> --> </html>可以看到,最简单的 HTML 就是这样子的。它的几个注意点如下:注释使用 <!-- -->;用 <> 这样的包裹起来的叫 HTML 标签或者元素,它是构成 HTML 的基础。后面将重点介绍各种各样的 HTML 标签,有针对文本的 <h1>,<p>,<b> 等,有通用标签 <div>、<span> 等,还有表格、表单标签 <table>、<form>;<xx> 必须要对应 </xx> 收尾;

5. 全局混入

混入也可以进行全局注册。使用时需要格外小心!一旦使用全局混入,它将影响每一个之后创建的 Vue 实例。使用恰当时,这可以用来为自定义选项注入处理逻辑。通过 Vue.mixin ({…}) 可以注册全局混入:Vue.mixin({ data: { name: "Imooc" }})具体示例:690代码解释:JS 代码第 3-12 行,定义了一个全局混入对象,并定义了钩子函数 created 和 sayHello 方法。JS 代码第 14-16 行,创建了 Vue 实例。因为全局混入会在之后创建的每一个 Vue 实例上混入,所以,控制台会输出以下数据:全局 mixin createdhello 大家好

2.2 传入多组索引序列

一次性传入多个索引数组,这种情况会有一些特殊,其返回的是一个一维数组,其中的元素对应各个索引元祖。案例data[[3,1,2],[0,2,1]]out: array([-0.76501214, -1.51730244, -0.92494003])一次性传入两个列表:[3,1,2]、[0,2,1],最终选取出三个元素,其在data数组中的位置分别是(3, 0)、(1, 2)、(2, 1)。并没有和切片索引一样,返回一个矩形区域。那么如何能够索引矩形区域呢?案例下面是得到矩形区域的一个这种的办法:data[[3,1,2]][:,[0,2,1]]out: array([[-0.76501214, 1.0350961 , 2.01128245], [ 0.03461754, -1.51730244, -0.91921724], [-0.0584198 , -0.08106442, -0.92494003]])另外,需要记住一个结论是:花式索引和切片不一样,它总是将数据复制到一个新的数组中。

3.2 局部注册

指令的局部注册和组件的局部注册类似,在实例的参数 options 中使用 directives 选项来注册局部指令,局部指令只能在当前这个实例中使用:// 注册// 短横线命名{ directives: { 'my-directive': { inserted: function (el) { el.focus() } } }}// 驼峰命名{ directives: { 'MyDirective': { inserted: function (el) { el.focus() } } }}// 使用<div v-my-directive></div>692代码解释:JS 代码第 8-14 行,我们定义了局部指令 v-focus,定义 inserted 钩子函数,在节点被插入时获得焦点。HTML 代码第 4 行,我们在 input 元素上使用指令,当页面打开时 id 为 name 的输入框会自动获取焦点。

2.2 修改列索引值

# 导入pandas包import pandas as pd# 指定导入的文件地址data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小节/execl数据demo.xlsx"# 解析数据data = pd.read_excel(data_path)print(data)# --- 输出结果 --- 编程语言 推出时间 价格 主要创始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# 修改行索引和 rename({0: "aa", 2: "bb", 3: "cc"},axis=0) 等价data_res=data.rename(index={0: "aa", 2: "bb", 3: "cc"})print(data_res)# 修改列索引和 rename({"编程语言": "bcyy", "价格": "jiage"},axis=1) 等价data_res=data.rename(columns={"编程语言": "bcyy", "价格": "jiage"})print(data_res)# --- 输出结果 --- bcyy 推出时间 jiage 主要创始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup输出解析:我们这里通过 columns 指定了映射关系,将列索引值编程语言和价格分别修改为 bcyy 和 jiage ,通过输出结果可以看到修改的效果。当然如果我们同时设置 index 和 columns 的映射关系,则会同时修改对应的索引值:# 修改列索引和 rename({"编程语言": "bcyy", "价格": "jiage"},axis=1) 等价data_res=data.rename(index={0: "aa", 2: "bb", 3: "cc"},columns={"编程语言": "bcyy", "价格": "jiage"})print(data_res)# --- 输出结果 ---bcyy 推出时间 jiage 主要创始人aa java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossumbb C 1972年 33.9 Dennis MacAlistair Ritchiecc js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup

首页上一页1234567下一页尾页
直播
查看课程详情
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号