【开发者空间实践指导】Python第二课:打工人的一天
【摘要】 本次实验主要讲述了函数的概念、内建函数、自定义函数和面向对象编程的内容,通过在云主机的CodeArts IDE中实操练习增进理解。实验最后通过案例让开发者能够更加形象的理解面向对象编程,以更低的成本和更高的效率对Python有一个入门级别的理解。
一、案例介绍
在Python第二课中,我们会学习Python中的函数和面向对象编程。
本次实验主要讲述了函数的概念、内建函数、自定义函数和面向对象编程的内容,通过在云主机的CodeArts IDE中实操练习增进理解。实验最后通过案例让开发者能够更加形象的理解面向对象编程,以更低的成本和更高的效率对Python有一个入门级别的理解。
二、免费领取云主机
如您还没有云主机,可点击链接 ,根据领取指南进行操作。
如您已领取云主机,可直接开始实验。
三、实验资源
本次实验预计花费总计0元。
资源名称 |
规格 |
单价(元) |
时长(分钟) |
云桌面 |
2vCPUs | 4GB RAM |
免费 |
30 |
CodeArts IDE |
CodeArts IDE for Python |
免费 |
30 |
四、准备开发环境
4.1 登陆云主机
在浏览器中输入华为云-开发者空间网址:https://developer.huaweicloud.com/developerspace进入华为云-开发者空间首页。点击“立即体验”,进入“开发者空间”页面。
在华为云的首页右上方,点击“登录”,在弹出的对话框中输入自己的用户名和密码。
在“我的开发桌面”-“我的云主机(基础)”中点击“在浏览器中打开”,进入云主机页面。
稍等3~5分钟,系统正在为您准备云主机。
云主机启动后,页面如下图所示:
4.2 使用CodeArts IDE创建项目
双击“CodeArts IDE”启动编译器。
进入CodeArts IDE首页,选择“新建工程”。
接下来填写项目信息,信息填写说明参照下表。
参数 |
值 |
说明 |
名称 |
pythonProject |
项目名称 |
位置 |
/home/developer/CodeArtsProjects |
项目存放路径 |
新环境使用 |
Virtualenv |
一种创建虚拟环境的工具 |
位置 |
/home/developer/CodeArtsProjects/ pythonProject |
虚拟环境的存放路径,一般位于项目的根目录 |
基础解释器 |
Python 3.10.12 |
选择Python解释器的版本,云主机中的默认版本是3.10.12 |
点击“创建”后,完成项目创建,界面如下:
五、函数和类
5.1 函数
函数(function),是组织好的、可以重复使用的代码片段。
我们为什么要学习函数呢?
因为函数能提高程序的可移植性、还可以增加代码的复用性。
在Python中,我们将函数分为两类:内建函数和自定义函数。
5.2 内建函数
简单来说就是Python中自带的函数,这类函数不用我们自己编写,直接调用即可。
下面罗列出一些常见的内建函数:
• print:打印函数
• type:返回对象的类型
• range:生成一个整数序列
• sum:对序列进行求和
• max:求序列中的最大值
接下来,我们将在CodeArts IDE中创建一个Python文件,并尝试使用上述内建函数。
单击创建图标新建文件,如下图所示。
输入文件名字(名字可以自定义),并以.py结尾(Python文件标识)。
输入如下图所示的代码,并运行查看效果。
"""
内建函数
"""
# 1.print函数
print("Learning python.") # 输出:Learning python.
# 2.type函数
print(type(5)) # 输出:<class 'int'>
# 3.range函数
# 例如:生成一个1-10的整数列表
numbers = list(range(1, 11))
print(numbers) # 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 4.sum函数
# 例如:求numbers列表中所有元素的总和
total = sum(numbers)
print(f"total: {total}") # 输出:total: 55
# 5.max函数
max_number = max(numbers)
print(f"max number is: {max_number}") # 输出:max number is: 10
5.3 自定义函数
相对于内建函数的便捷,Python也无法帮我们提前写好所有逻辑,所以就需要我们自己来写函数,通过自定义函数,我们可以写出更符合场景的代码。
接下来,我们再创建一个Python文件,用于编写自定义函数的代码,命名为“learn_custom_function.py”。
首先,我们先看一下无参函数,代码如下:
def function_name():
return "function_name"
这样一个简单的无参函数就定义好了,接下来就是对函数的调用。
调用函数时,我们需要输入函数的名字,CodeArts IDE提供智能感知功能,按下回车即可补全代码,方便我们快速编写代码。
代码和调用结果如下:
def function_name():
return "function_name"
result = function_name()
print(result) # 输出:function_name
接下来再看一下有参函数的定义和使用,代码如下:
def sum_two_numbers(number1, number2):
return sum(number1, number2)
result2 = sum_two_numbers(3, 5)
print(result2) # 输出:8
5.4 面向对象编程
什么是面向对象编程呢?
以对象为基本单位,通过封装、继承、多态等机制来组织和管理代码。
我们为什么要学习面向对象编程呢?原因有以下几点:
• 代码复用性:一旦定义了一个类,就可以创建该类的多个对象,无需反复编写。
• 模块化:将代码分别放到不同的类中,每个类负责特定的功能,提高代码的可读性和可维护性。
• 可扩展性:新创建的类可以通过类的“继承”特性获取原类中的属性和方法,在此基础之上可以定义新的属性和方法。
• 解决复杂问题:通过将一个复杂问题拆分为若干个类,通过各个类之间的交互实现功能,使问题由大到小,逐个击破。
首先,我们需要了解一个概念“类”,类提供了把数据和功能绑定在一起的方法,所以类可以是看作一组功能和数据的集合。那么接下来,让我们一起创建两个类,Person类和Student类,其中Student类继承自Person类。
Python中定义类的关键字为class,如果是继承某个超类,需要在声明类的括号中注明。代码如下:
class Person:
def __init__(self):
print("Person.__init__")
def say(self):
print("I am a person")
class Student(Person):
def __init__(self):
print("Student.__init__")
def say(self):
print("I am a student")
可以看到CodeArts还对类和方法的引用有标注,Person类拥有一个子类(Student类),而Student类拥有两个超类(Person类,Object类),因为Python中所有的类都继承自Object类。
CodeArts IDE不仅会标注类的引用关系,还会标注类中方法的覆写情况,帮助开发者更清晰的理解代码逻辑。
六、打工人的一天
6.1 需求分析
在学习过函数和类后,我们可以将它们组装起来实现一个简单程序,“打工人的一天”。
首先,我们需要定义打工人一天需要做哪些事情:
• 起床(get_up)
• 吃早饭(eat_breakfast)
• 去公司(go_to_company)
• 工作(work)
• 下班回家(go_home)
• 睡觉(sleep)
此外,还需要提供一个让打工人运行的入口方法(start),让打工人开始运行他的一天。在这个入口方法中,我们需要编排好做每件事的顺序。
6.2 代码实现
新建一个Python文件,名为“one_day_of_worker.py”。
代码如下:
"""
打工人的一天
"""
import time
class Human:
def __init__(self, name):
self.name = name
class Worker(Human):
def __init__(self, name):
super().__init__(name)
def get_up(self):
print(f"7点钟了,{self.name}该起床了。")
def eat_breakfast(self):
print("吃个早饭")
time.sleep(3)
def go_to_company(self):
print("去公司上班")
time.sleep(3)
def work(self):
print("终于到公司了...")
print("开始工作!!")
time.sleep(3)
print("开会讨论XX项目的落地方案")
time.sleep(3)
print("认真的编写程序")
time.sleep(5)
print("提交程序到CodeArts")
time.sleep(1)
print("伸个懒腰,准备下班")
time.sleep(1)
def go_home(self):
print("7点了,下班回家")
def sleep(self):
print(f"时间到了晚上10点,{self.name}该睡觉了")
def start(self):
self.get_up()
self.eat_breakfast()
self.go_to_company()
self.work()
self.go_home()
self.sleep()
worker = Worker(name="张三")
worker.start()
代码说明:
• 我们定义了两个类,Human表示人类,Worker表示打工人类,打工人也是人,所以需要继承Human类。
• 由于Worker类继承了Human类,所以Worker对象还可以共享Human对象的name属性。
• 代码中用time.sleep方法模拟耗时操作,例如go_to_company方法,用sleep方法模拟打工人在上班路上消耗的时间。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)