2024年最全Python 高级教程之类,2024年最新华为Python面试真题解析

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

obj2 = Base()

调用 Protected 成员可以访问,但由于约定不应该这样做

print("访问 obj1 的 Protected 成员: ", obj1._a)

在外部访问受保护的变量

print("访问 obj2 的 Protected 成员: ", obj2._a)

输出:

调用基类的 Protected 成员:2

调用类外修改的 Protected 成员:3

访问 obj1 的 Protected 成员:3

访问 obj2 的 Protected 成员:2

Private 成员

Private 成员类似于 Protected 成员,不同之处在于声明为私有的类成员既不能在类外访问,也不能被任何基类访问。在 Python 中,不存在只能在类内部访问的私有实例变量。

但是,要定义 Private 成员,请在成员名称前加上双下划线“__”。

注意:可以通过 python name mangling 在类外部访问 Python 的 Private 成员和 Protected 成员。

Python 中的魔术方法

魔术方法确保了一致的数据模型,该模型保留了内置类的继承特性,同时提供了自定义的类行为。这些方法可以丰富类设计,增强语言的可读性。

魔术方法语法

两边用两个下划线包裹的方法称为魔术方法。魔术方法的背后是重载 Python 的内置方法及其运算符。在这里,_syntax 防止程序员为自定义方法定义相同的名称。每种魔术方法都有其用途。让我们考虑一个检查等价的例子。

例子:

class EquivalenceClass(object):

def eq(self, other):

return type(self) == type(other)

print(EquivalenceClass() == EquivalenceClass())

print(EquivalenceClass() == ‘MyClass’)

输出

True

False

__eq__方法采用两个参数——self 和 object——来检查相等性。重要的是要理解,当使用 == 运算符比较两个对象时会调用 __eq__ 方法。让我们来看看 python 中一些常见的魔术方法。

常用魔法方法

在 Python 中,我们有各种各样的魔法方法——每一种都有它的用途。下面我们就梳理一下,几种常见的魔法方法:

  • 创建:__init____new__ 方法

  • 破坏:__del__ 方法

  • 类型转换:__str____int____float____complex____bool__ 方法

  • 比较:__eq____ne__方法

二元运算符的魔术方法:

  • vanilla 方法

  • reversei 方法

  • in-place 方法

一元运算符的魔术方法:

  • __pos__ 方法

  • __neg__ 方法

  • __invert__ 方法

魔术方法其实就是一种一致的数据模型,可以自定义类行为并增强可读性,而不会丢失其继承的特性。但是在提供自定义功能之前,需要确保是否需要自定义。

Python 中的设计模式

设计模式是软件工程中最重要的部分,因为它们为软件设计中常见的问题提供了通用的可重复解决方案。我们不能将设计模式视为可以直接转换为代码的完成设计。它们只是描述如何高效解决特定问题的模板。

设计模式分类

创造性设计模式

创建模式提供有关类实例化或对象实例化的基本信息。类创建模式和对象创建模式是创建设计模式的主要分类。虽然类创建模式在实例化过程中有效地使用了继承,但对象创建模式有效地使用委托来完成工作。

创造性设计模式的分类 ——

  • 工厂模式

  • 抽象工厂模式

  • 建造者模式

  • 原型模式

  • 单例模式

结构设计模式

结构设计模式是关于组织不同的类和对象以形成更大的结构并提供新功能,同时保持这些结构的灵活性和效率。大多数情况下,他们使用继承来组合所有接口。它还确定了导致结构简化的关系。

结构设计模式的分类——

  • 适配器模式

  • 桥接模式

  • 复合模式

  • 装饰器模式

  • 外观模式

  • 代理模式

  • 蝇量模式

行为设计模式

行为模式都是关于识别对象之间常见的通信模式并实现这些模式。这些模式与算法和对象之间的职责分配有关。

行为设计模式分类——

  • 责任链模式

  • 命令模式

  • 迭代器模式

  • 中介模式

  • 记忆模式

  • 观察者模式

  • 状态方模式

  • 策略模式

  • 模板模式

  • 访客模式

举例说明几种常用设计模式

1.工厂设计模式

工厂方法是一种创建型设计模式,它允许接口或类创建对象,但让子类决定要实例化哪个类或对象。使用工厂方法,我们有最好的方法来创建一个对象。这里,对象的创建不向客户端公开逻辑,并且为了创建新类型的对象,客户端使用相同的公共接口。

现在让我们通过一个例子来理解工厂方法:

工厂方法的 Python 代码

它属于创建型设计模式

class FrenchLocalizer:

“”" 只返回法语版本 “”"

def init(self):

self.translations = {“car”: “voiture”, “bike”: “bicyclette”,“cycle”:“cyclette”}

def localize(self, msg):

“”“使用翻译更改信息”“”

return self.translations.get(msg, msg)

class SpanishLocalizer:

“”“只返回西班牙语版本”“”

def init(self):

self.translations = {“car”: “coche”, “bike”: “bicicleta”,“cycle”:“ciclo”}

def localize(self, msg):

“”“使用翻译更改信息”“”

return self.translations.get(msg, msg)

class EnglishLocalizer:

“”“只需返回相同的消息”“”

def localize(self, msg):

return msg

def Factory(language =“English”):

“”“工厂方法”“”

localizers = {

“French”: FrenchLocalizer,

“English”: EnglishLocalizer,

“Spanish”: SpanishLocalizer,

}

return localizerslanguage

if name == “main”:

f = Factory(“French”)

e = Factory(“English”)

s = Factory(“Spanish”)

message = [“car”, “bike”, “cycle”]

for msg in message:

print(f.localize(msg))

print(e.localize(msg))

print(s.localize(msg))

2.单例设计模式

单例方法是一种创建设计模式,是我们可用的最简单的设计模式之一。这是一种提供一个且仅一个特定类型的对象的方法。它只涉及一个类来创建方法和指定对象。在单例设计模式的经典实现中,我们简单地使用静态方法来创建能够返回共享资源的 getInstance 方法。我们还使用所谓的虚拟私有构造函数来引发异常,但这并不是必需的。

单例设计模式的经典实现

class Singleton:

__shared_instance = ‘GeeksforGeeks’

@staticmethod

def getInstance():

“”“Static Access Method”“”

if Singleton.__shared_instance == ‘GeeksforGeeks’:

Singleton()

return Singleton.__shared_instance

def init(self):

“”“virtual private constructor”“”

if Singleton.__shared_instance != ‘GeeksforGeeks’:

raise Exception (“This class is a singleton class !”)

else:

Singleton.__shared_instance = self

main 方法

if name == “main”:

创建单例类的对象

obj = Singleton()

print(obj)

选择类的实例

obj = Singleton.getInstance()

print(obj)

3.外观设计模式

外观设计模式是一种结构设计模式,它为更复杂的系统提供更简单的统一接口。Facade 这个词意味着系统的表面,或者特别是复杂系统的外部界面,由几个子系统组成。

想象一下,我们有一台洗衣机,它可以洗衣服、漂洗衣服和旋转衣服,但所有任务都是分开的。由于整个系统相当复杂,我们需要将子系统的复杂性抽象出来。我们需要一个可以自动完成整个任务而不受我们干扰或干扰的系统。

“”“以洗衣机为例的外观设计模式”“”

class Washing:

‘’‘子系统 # 1’‘’

def wash(self):

print(“Washing…”)

class Rinsing:

‘’‘子系统 # 2’‘’

def rinse(self):

print(“Rinsing…”)

class Spinning:

‘’‘子系统 # 3’‘’

def spin(self):

print(“Spinning…”)

class WashingMachine:

‘’‘Facade’‘’

def init(self):

self.washing = Washing()

self.rinsing = Rinsing()

self.spinning = Spinning()

def startWashing(self):

self.washing.wash()

self.rinsing.rinse()

self.spinning.spin()

“”" main 方法 “”"

if name == “main”:

washingMachine = WashingMachine()

washingMachine.startWashing()

使用设计模式的优势
  • 可重用性:通过使用继承,它们有助于使代码可重用,因此我们可以在多个项目中使用它们。
  • 透明:它提高了所有将来要使用它的开发人员的代码透明度。

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值