Python的进阶之道【AIoT阶段一(上)】(十五万字博文 保姆级讲解)—玩转Python语法(二):面向对象—百宝箱(1)(一)

简介: 玩转Python语法(二):面向对象

三、玩转Python语法(二):面向对象

从这一大章节开始,就进入了面向对象的部分,Python 是面向对象的解释型高级动态编程语言,完全支持面向对象的基本功能,只掌握了面向过程是远远不够的,就开发而言,面向对象的重要程度要高于面向过程,如果你学习完了之前所讲的面向过程的内容,并且做了一定量的习题,那么你的基础可以说已经很牢固了,接下来就让我们走进对象的世界,程序员最不缺的是什么?是对象!


1.百宝箱

1.1 自定义模块

🚩首先来介绍一下什么是模块:模块英文为Modules,在Python中一个扩展名为.py的文件就是一个模块,我们写代码时使用模块的好处:

1.方便其它程序和脚本的导入并使用

2.避免函数名和变量名冲突

3.提高代码的可维护性

4.提高代码的可重用性

创建模块其实就是新建一个.py文件,要求名称不能和Python自带的标准模块名称相同,导入模块的代码格式:


# 把模块的内容全部导入

import 模块名称 [as 别名]

# 把模块的部分导入

from 模块名称 import 函数/变量/


下面我们通过导入 math 模块来讲解上述格式,math 模块中存有很多的数学公式,这些公式将被我们经常调用

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/20 20:48
# 欢迎大家关注AIoT相关博客~
import math
print(type(math))
print(math.pi)
print('----------------')
# 使用dir() 可以查看模块中的所有函数
print(dir(math))
# 常用的math中的函数:
# 计算几次方:
print(math.pow(2, 3))  # 计算2的3次方
# 向上取整
print(math.ceil(9.01))
# 向下取整
print(math.floor(9.99))

image.png

我们可以用 [as 别名] 来起别名:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/20 21:09
# 欢迎大家关注AIoT相关博客~
import math as m
# 这个操作其实就是我们以后写代码可以用 m 代替 math
print(type(m))
print(m.pi)
print(m.pow(2, 3))
print(m.ceil(9.01))
print(m.floor(9.99))

image.png

我们使用 dir() 函数可以看出 math 模块中有很多的函数,但是我们写代码可能不需要这么多的函数,往往只需要其中的一两个即可,故我们没必要把所有函数都导入,这个时候就可以使用 from 模块名称 import 函数/变量/类 来导入部分的函数,并且以这种形式导入的这些函数不需要 .的调用,可直接使用:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/20 21:12
# 欢迎大家关注AIoT相关博客~
from math import pi, floor
print(pi)
print(floor(9.99))

image.png

那么,我们不是自己也写了很多的模块嘛,是否可以像导入系统模块这样导入我们自己的模块呢?答案是:如果你和我一样下载的是最新版的 PyCharm,是可以的,如果你下载的原来版本的 PyCharm,需要一点额外的操作:

1️⃣ 新版 PyCharm 支持直接调用:

4.png

2️⃣ 如果你是老版的 PyCharm 需要右击目录,选择最下方的 Mark Dictionary as,选择 Sources Root,这样的操作后,你就可以像调用系统模块一样调用自己写的模块:

image.png


1.2 以主程序形式运行

🚩这部分概念字面理解起来晦涩难懂,没必要看下述定义,如果你很好奇,可以看一下如下定义:在每个模块的定义中都包括一个记录模块名称的变量__name__,程序可以检查该变量,以确定他们在哪个模块中执行。如果一个模块不是被导入到其它程序中执行,那么它可能在解释器的顶级模块中执行。顶级模块的__name__变量的值为__main__

好的,如果我没猜错你没有看懂,无关紧要,我们用代码解释:


image.png

比如我们写好了 demo3,并且在 demo4 中导入了 demo3,我们在 demo4 中调用了 demo3 的 add 函数,显然我们只想计算 100 + 200 的值,但是程序的输出结果却是输出了两个数,这是因为我们的 demo3 中还附带这一个计算 10 + 20,这样的结果是我们不想要的,这时,我们既不想删除 demo3 中的 10 + 20,又不想让我们 demo4 在调用 demo3 时输出额外的东西,就可以在 demo3 中 写一行 main:

image.png

然后按下回车:并把 print(10 + 20) 放入 if 语句中,这样一来,在别的模块调用 demo3 时,不会输出 if 语句中的内容,只有当 运行 demo3 的时候,才会输出 if 语句中的内容

运行 demo4:

2.png

运行 demo3:

3.png

1.3 包

🚩包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下。包的作用:

1.代码规范

2.避免模块名称冲突

包与目录的区别:

包含__init__.py文件的目录称为包

目录里通常不包含__init__.py文件

建立包的方式:

image.png

可以看出,目录和包的区别就是包自带一个__init__.py文件:

image.png

包的导入语法结构:

import 包名.模块名

4.png




目录
相关文章
|
1月前
|
存储 开发者 Python
python基本语法
Python的基本语法简洁而强大,支持多种编程范式,包括面向对象编程和函数式编程。通过掌握变量和数据类型、操作符、控制结构、函数、类和模块等基本概念,可以有效地编写高效、可读的Python代码。无论是初学者还是经验丰富的开发者,Python都提供了丰富的工具和库来满足各种编程需求。
70 13
|
2月前
|
关系型数据库 开发者 Python
Python编程中的面向对象设计原则####
在本文中,我们将探讨Python编程中的面向对象设计原则。面向对象编程(OOP)是一种通过使用“对象”和“类”的概念来组织代码的方法。我们将介绍SOLID原则,包括单一职责原则、开放/封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则有助于提高代码的可读性、可维护性和可扩展性。 ####
|
3月前
|
存储 索引 Python
Python 的基本语法
这些是 Python 的基本语法要素,掌握它们是学习和使用 Python 的基础。通过不断地实践和应用,你将能够更深入地理解和熟练运用这些语法知识,从而编写出高效、简洁的 Python 代码
170 61
|
3月前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
58 7
|
3月前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
80 1
|
人工智能 分布式计算 前端开发
3大阶段,30+教程,超全年度 Python 礼包大放送 | 技术日报(15期)
Python简单易懂,功能强大,同时也是大数据、人工智能时代的首选编程语言之一。这两年 Python 如破竹之势一般出现在开发者眼前,甚至有许多非技术人员也会想通过学习 Python 来提高自己的工作效率。这么火的语言,开发者社区当然要为你带来 “Python 学习大礼包” 了!
997 0
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
52 14
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
115 2
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
126 80

热门文章

最新文章

推荐镜像

更多