Python实战从入门到精通
文章平均质量分 61
以python为主线,从入门到精通python
水木流年追梦
清华大学计算机研究生,专研算法工程
展开
-
【python设计模式3】创建型模式2
抽象工厂模式:定义一个工厂类的接口让工厂子类来创建一系列相关或者相互依赖的对象。相比工厂方法模式,抽象工厂模式中的每一个具体工厂都生产一套产品。下面是生产厂商生产一部手机的例子:生产一部手机如果说只需要手机壳、CPU和操作系统这三个类对象,其中每个类对象都有不同的种类。对每个具体工厂,分别生产一部手机需要的三个对象。抽象工厂模式的角色有:抽象工厂角色、具体工厂角色、抽象产品角色、具体产品角色和客户端。抽象工厂模式的优点是:将客户端和类的具体实现相分离;每个工厂创建了一个完整的产品系列。原创 2024-09-18 00:21:55 · 247 阅读 · 0 评论 -
【python设计模式2】创建型模式1
简单工厂模式不是23中设计模式中的,但是必须要知道。简单工厂模式不直接向客户端暴露对象创建的细节,而是通过一个工厂类来负责创建产品类的实例。原创 2024-09-18 00:21:48 · 400 阅读 · 0 评论 -
【python设计模式1】面向对象设计原则
设计模式是对软件设计中普遍存在或反复出向的各种问题所提出的解决方案。每一个设计模式系统地被命名、解释和评价了面向对象系统中一个重要和重复出现的设计。原创 2024-09-17 17:09:02 · 522 阅读 · 0 评论 -
python模块路径问题,如何导入python模块
对于用import语句导入的模块,Python会按照 下面的路径列表顺序地查找我们需要的模块:1.当前的工作目录;2. PYTHONPATH (环境变量)中的每一个目录;3. Python默认的安装目录。如果我们在导入自己写的模块的时候,Python解释器提示找不到这个模块ModuleNotFoundError: No module named '模块名 '那么,说明我们写的模块没有放在上述三类路径。由于这三类目录都保存在标准模块sys的sys.path变量中,因此我们有三种解决方法。1.向sy原创 2021-12-06 10:00:00 · 1079 阅读 · 0 评论 -
数据提取概述
数据提取概述知识点了解 响应内容的分类 了解 xml和html的区别1. 响应内容的分类在发送请求获取响应之后,可能存在多种不同类型的响应内容;而且很多时候,我们只需要响应内容中的一部分数据 结构化的响应内容 json字符串 可以使用re、json等模块来提取特定数据 json字符串的例子如下图 xml字符串 可以使用re、lxml等模块来提取特定数据 xml字符串的例子如下 ..原创 2020-12-29 20:09:54 · 348 阅读 · 1 评论 -
Python面试题解答——第三部分Python高级
元类42.Python中类方法、类实例方法、静态方法有何区别?类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对象和实例对象都可调用 类实例方法: 是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身;静态方法: 是一个任意函数,在其上方使用 @staticmethod 进行装饰,可以用对象直接调用,静态方法实际上跟该类没有太大关系43.遍历一个object的所有属性,并print每一个属性名?clas转载 2020-05-24 22:58:06 · 626 阅读 · 0 评论 -
Python面试题解答——第二部分企业面试题
企业面试题 企业面试题15.python新式类和经典类的区别?a. 在python里凡是继承了object的类,都是新式类b. Python3里只有新式类c. Python2里面继承object的是新式类,没有写父类的是经典类d. 经典类目前在Python里基本没有应用e. 保持class与type的统一对新式类的实例执行a.__class__与type(a)的结果是一致的,对于旧式类来说就不一样了。f.对于多重继承的属性搜索顺序不一样新式类是采用广度优先搜索,旧式类采用深度原创 2020-05-24 21:35:11 · 507 阅读 · 0 评论 -
Python面试题解答——第一部分
文件操作1.有一个jsonline格式的文件file.txt大小约为10Kdef get_lines(): with open('file.txt','rb') as f: return f.readlines()if __name__ == '__main__': for e in get_lines(): process(e) # 处理每一行数据现在要处理一个大小为10G的文件,但是内存只有4G,如果在只修改get_lines 函数而其他原创 2020-05-24 17:58:40 · 874 阅读 · 0 评论 -
程序员如何达到年薪百万?python程序员必读书籍!
《Python编程:从入门到实践》《Python Cookbook》《Effective Python》《流畅的Python》原创 2020-04-22 19:55:29 · 409 阅读 · 0 评论 -
Python实战从入门到精通第二十一讲——构建一个模块的层级包
想将你的代码组织成由很多分层模块构成的包。封装成包是很简单的。在文件系统上组织你的代码,并确保每个目录都定义了一个__init__.py文件。 例如:graphics/ __init__.py primitive/ __init__.py line.py fill.py text.py formats...原创 2020-02-08 11:24:05 · 261 阅读 · 0 评论 -
Python实战从入门到精通第二十讲——调用父类方法
在子类中调用父类的某个已经被覆盖的方法。为了调用父类(超类)的一个方法,可以使用super()函数,比如:class A: def spam(self): print('A.spam')class B(A): def spam(self): print('B.spam') super().spam() # Call...原创 2020-02-08 11:01:11 · 262 阅读 · 0 评论 -
Python实战从入门到精通第十九讲——自定义字符串的格式化
通过format()函数和字符串方法使得一个对象能支持自定义的格式化。为了自定义字符串的格式化,我们需要在类上面定义__format__()方法。例如:_formats = { 'ymd' : '{d.year}-{d.month}-{d.day}', 'mdy' : '{d.month}/{d.day}/{d.year}', 'dmy' : '{d.da...原创 2020-02-08 10:47:05 · 234 阅读 · 0 评论 -
Python实战从入门到精通第十八讲——改变对象的字符串显示
想改变对象实例的打印或显示输出,让它们更具可读性。要改变一个实例的字符串表示,可重新定义它的__str__()和__repr__()方法。例如:lass Pair: def __init__(self, x, y): self.x = x self.y = y def __repr__(self): return ...原创 2020-02-08 10:37:24 · 204 阅读 · 0 评论 -
Python实战从入门到精通第十七讲——将单方法的类转换为函数
有一个除__init__()方法外只定义了一个方法的类。为了简化代码,你想将它转换成一个函数。大多数情况下,可以使用闭包来将单个方法的类转换成函数。 举个例子,下面示例中的类允许使用者根据某个模板方案来获取到URL链接地址。from urllib.request import urlopenclass UrlTemplate: def __init__(self, tem...原创 2020-02-08 09:27:02 · 299 阅读 · 0 评论 -
Python实战从入门到精通第十六讲——匿名函数捕获变量值
用lambda定义了一个匿名函数,并想在定义时捕获到某些变量的值。先看下下面代码的效果:>>> x = 10>>> a = lambda y: x + y>>> x = 20>>> b = lambda y: x + ya(10)和b(10)返回的结果是什么?如果你认为结果是20和30,那么你就错了:...原创 2020-02-08 09:22:12 · 251 阅读 · 0 评论 -
Python实战从入门到精通第十五讲——定义匿名或内联函数
你想为sort()操作创建一个很短的回调函数,但又不想用def去写一个单行函数, 而是希望通过某个快捷方式以内联方式来创建这个函数。当一些函数很简单,仅仅只是计算一个表达式的值的时候,就可以使用lambda表达式来代替了。比如:>>> add = lambda x, y: x + y>>> add(2,3)5>>> ad...原创 2020-02-08 09:16:52 · 596 阅读 · 0 评论 -
Python实战从入门到精通第十四讲——定义有默认参数的函数
定义一个函数或者方法,它的一个或多个参数是可选的并且有一个默认值。定义一个有可选参数的函数是非常简单的,直接在函数定义中给参数指定一个默认值,并放到参数列表最后就行了。例如:def spam(a, b=42): print(a, b)spam(1) # Ok. a=1, b=42spam(1, 2) # Ok. a=1, b=2如果默认参数是一个可修改的容器比如一个列表...原创 2020-02-08 09:10:00 · 268 阅读 · 0 评论 -
Python实战从入门到精通第十三讲——返回多个值的函数
构造一个可以返回多个值的函数能返回多个值,函数直接return一个元组就行了。例如:>>> def myfun():... return 1, 2, 3...>>> a, b, c = myfun()>>> a1>>> b2>>> c3尽管myfun()看上去返回了多个值,实际...原创 2020-02-08 09:03:31 · 319 阅读 · 0 评论 -
Python实战从入门到精通第十二讲——给函数参数增加元信息
写好了一个函数,然后想为这个函数的参数增加一些额外的信息,这样的话其他使用者就能清楚的知道这个函数应该怎么使用。使用函数参数注解是一个很好的办法,它能提示程序员应该怎样正确使用这个函数。 例如,下面有一个被注解了的函数:def add(x:int, y:int) -> int: return x + ypython解释器不会对这些注解添加任何的语义。它们不会被类型检查,...原创 2020-02-08 08:53:28 · 305 阅读 · 0 评论 -
Python实战从入门到精通第十一讲——可接受任意数量参数的函数
构造一个可接受任意数量参数的函数。为了能让一个函数接受任意数量的位置参数,可以使用一个*参数。例如:def avg(first, *rest): return (first + sum(rest)) / (1 + len(rest))# Sample useavg(1, 2) # 1.5avg(1, 2, 3, 4) # 2.5这个例子中,rest是由所有其他位置参数...原创 2020-02-07 21:16:02 · 534 阅读 · 0 评论 -
Python实战从入门到精通第十讲——字符串与文本4之字符串搜索和替换
在字符串中搜索和匹配指定的文本模式对于简单的字面模式,直接使用str.replace()方法即可,比如:>>> text = 'yeah, but no, but yeah, but no, but yeah'>>> text.replace('yeah', 'yep')'yep, but no, but yep, but no, but ye...原创 2020-02-07 16:46:32 · 619 阅读 · 0 评论 -
Python实战从入门到精通第九讲——字符串与文本3之字符串匹配和搜索
匹配或者搜索特定模式的文本匹配的是字面字符串,那么你通常只需要调用基本字符串方法就行, 比如str.find(),str.endswith(),str.startswith()或者类似的方法:>>> text = 'yeah, but no, but yeah, but no, but yeah'>>> # Exact match>...原创 2020-02-07 16:39:53 · 352 阅读 · 0 评论 -
Python实战从入门到精通第八讲——字符串与文本2之合并拼接字符串
将几个小的字符串合并为一个大的字符串合并的字符串是在一个序列或者iterable中,那么最快的方式就是使用join()方法。比如:>>> parts = ['Is', 'Chicago', 'Not', 'Chicago?']>>> ' '.join(parts)'Is Chicago Not Chicago?'>>> ...原创 2020-02-07 16:09:41 · 531 阅读 · 0 评论 -
Python实战从入门到精通第七讲——字符串与文本1之字符串开头或结尾匹配
通过指定的文本模式去检查字符串的开头或者结尾,比如文件名后缀,URL Scheme等等。检查字符串开头或结尾的一个简单方法是使用str.startswith()或者是str.endswith()方法。比如:>> filename = 'spam.txt'>>> filename.endswith('.txt')True>>> ...原创 2020-02-07 15:55:28 · 498 阅读 · 0 评论 -
Python实战从入门到精通第六讲——数据结构与算法4之过滤序列元素
一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列最简单的过滤序列元素的方法就是使用列表推导:>>> mylist = [1, 4, -5, 10, -7, 2, 3, -1]>>> [n for n in mylist if n > 0][1, 4, 10, 2, 3]>>> [n for n in my...原创 2020-02-07 15:46:59 · 263 阅读 · 0 评论 -
Python实战从入门到精通第五讲——数据结构与算法3之序列中出现最多的元素
怎么找到序列中出现次数最多的元素呢?collections.Counter类就是专门为这类问题设计,甚至有一个most_common直接给出答案假设一个数字列表想找出哪个数字出现频率高words = [1,1,1,1,2,3,3,3,4,4,5,6,7,8]from collections import Counterword_counts = Counter(words)t...原创 2020-02-07 14:20:58 · 253 阅读 · 0 评论 -
Python实战从入门到精通第四讲——数据结构与算法2之实现一个优先级队列
实现一个优先级队列import heapqclass PriorityQueue: def __init__(self): self._queue = [] self._index = () def push(self,item,priority): heapq.heappush(self._queue,(-pri...原创 2020-02-07 13:58:56 · 264 阅读 · 0 评论 -
Python实战从入门到精通第三讲——数据结构与算法1之解压序列赋值
1.解压序列赋值给多个变量任何的序列可以通过一个简单的赋值语句解压并赋值给多个变量,唯一前提是变量数与序列元素相同data = ['ACME',50,91.1,(2012,12,21)]name,share,price,data = datanameshare# 输出# 'ACME'# 50解压一部分,丢弃一部分data = ['ACME',50,91.1,(2...原创 2020-02-06 22:13:11 · 249 阅读 · 0 评论 -
Python实战从入门到精通第二讲——类
1. 类的创建class Student: student_Count = 0 def __init__(self, name, age): self.name = name self.age = age Student.student_Count += 1 def dis_student(...原创 2020-02-03 17:47:36 · 641 阅读 · 1 评论 -
Python实战入门到精通第一讲——函数
1. 定义函数def function(): print("Hello,World.") returna = function()print(a)输出:Hello,World.Nonedef function(string = "Hi"): print("What you say is:", string) returnfun...原创 2020-02-03 16:36:49 · 582 阅读 · 1 评论 -
super(XXXX,self).__init__()在类中的作用
这是对继承自父类的属性进行初始化。而且是用父类的初始化方法来初始化继承的属性。也就是说,子类继承了父类的所有属性和方法,父类属性自然会用父类方法来进行初始化。当然,如果初始化的逻辑与父类的不同,不使用父类的方法,自己重新初始化也是可以的。https://www.imooc.com/qadetail/72165...转载 2020-02-02 09:37:33 · 7519 阅读 · 0 评论 -
python文件夹中的__init__.py的作用
一个目录如果包含了__init__.py文件,那么他就变成了一个包(package)。__init__可以是空的,但是必须存在,其他程序才能从这个目录中导入相应的模块或函数。例如data文件夹下有__init__.py,则在main.py中就可以from data.dataset import DogCat....原创 2019-10-09 22:54:18 · 2640 阅读 · 0 评论 -
pyhthon下中文报错问题
在写python时发现加上中文会报错,这里给出解决方案# coding=utf-8在第一行写上原创 2017-02-13 11:12:32 · 380 阅读 · 0 评论 -
pyhton学习-1
Python的变量不需要声明,可以直接输入。内置函数type(), 用以查询变量的类型。 例如: print type(a)如果想让 a 存储不同的数据,不需要删除原有变量就可以直接赋值。print后跟多个输出,以逗号分隔。sequence(序列)是一组有顺序的元素的集合,序列有两种:tuple(定值表; 也有翻译为元组) 和 list (表),tuple和原创 2017-02-16 21:46:10 · 309 阅读 · 0 评论