
python
文章平均质量分 74
zhulin1028
这个作者很懒,什么都没留下…
展开
-
Python3高级特性(五)之容器(container)
目录容器(container)迭代器(iterator)生成器(generator)生成器简介yield案例容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中。在Python中,常见的容器对象有:1) list, deque, ….2) set, frozensets, ….3) dict, defaultdict, OrderedDict, Counter, ….4) tuple, na原创 2022-06-28 10:11:21 · 1126 阅读 · 0 评论 -
Python3高级特性(四)之生成器(Generator)
目录生成器的概念创建生成器之一创建生成器之二创建生成器之三生成器的执行流程通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,会占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:genera原创 2022-06-28 10:10:49 · 1027 阅读 · 0 评论 -
Python3高级特性(三)之列表生成式和迭代器(Iterator)
目录列表生成式列表生成式案例1列表生成式案例2列表生成式案例3列表生成式案例4列表生成式案例5迭代器(Iterator)可迭代对象:Iterable迭代器:Iteratoriter()函数小结列表生成式即List Comprehensions:是Python内置的非常简单却强大的可以用来创建list的生成式。要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:可以用list(range(1, 11)):结果为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]但原创 2022-06-28 10:10:20 · 854 阅读 · 0 评论 -
Python3高级特性(二)之迭代(Iterable)
目录什么是迭代Iterable & Iterrator字典的迭代字符串的迭代判断可迭代对象?enumerate函数for循环中的两个变量如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。在Python中,迭代是通过for ... in来完成的,而很多语言比如Java语言,迭代list是通过下标完成的,比如Java代码:可以看出,Python的for循环抽象程度要高于Java的for循环,因为Python的for循环不仅可原创 2022-06-28 10:09:13 · 1032 阅读 · 0 评论 -
Python3高级特性(一)之切片
目录基本概念切片操作符中的数字切片操作符中的负数元组的切片操作字符串的切片操作切片操作符是列表名称后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。注意这与你使用的索引操作符十分相似。记住数字是可选的,而冒号是必须的。 注意:也可以用相同的方法访问元组和字符串。我们先创建一个0-99的数列:L为:[0, 1, 2, 3, ..., 99]可以通过切片轻松取出某一段数列。前10个数: L[:10][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]前11-20个数: L[10:20][10原创 2022-06-28 10:09:48 · 888 阅读 · 0 评论 -
Python进阶系列(十八)
我们还没有谈到__exit__方法的这三个参数:type, value和traceback。在第4步和第6步之间,如果发生异常,Python会将异常的type,value和traceback传递给__exit__方法。它让__exit__方法来决定如何关闭文件以及是否需要其他步骤。在我们的案例中,我们并没有注意它们。那如果我们的文件对象抛出一个异常呢?万一我们尝试访问文件对象的一个不支持的方法。举个例子:我们来列一下,当异常发生时,with语句会采取哪些步骤。 1. 它把异常的type,valu原创 2022-06-27 16:37:32 · 1280 阅读 · 0 评论 -
Python进阶系列(十七)
上下文管理器允许你在有需要的时候,精确地分配和释放资源。使用上下文管理器最广泛的案例就是with语句了。想象下你有两个需要结对执行的相关操作,然后还要在它们中间放置一段代码。上下文管理器就是专门让你做这种事情的。举个例子:上面这段代码打开了一个文件,往里面写入了一些数据,然后关闭该文件。如果在往文件写数据时发生异常,它也会尝试去关闭文件。上面那段代码与这一段是等价的:当与第一个例子对比时,我们可以看到,通过使用with,许多样板代码(boilerplate code)被消掉了。 这就是with语原创 2022-06-27 16:37:03 · 690 阅读 · 0 评论 -
Python进阶系列(十六)
Python中的协程和生成器很相似但又稍有不同。主要区别在于:首先我们先来回顾下生成器的创建过程。我们可以这样去创建一个生成器:然后我们经常在for循环中这样使用它:这样做不仅快而且不会给内存带来压力,因为我们所需要的值都是动态生成的而不是将他们存储在一个列表中。更概括的说如果现在我们在上面的例子中使用yield便可获得了一个协程。协程会消费掉发送给它的值。Python实现的grep就是个很好的例子:等等!yield返回了什么?啊哈,我们已经把它变成了一个协程。它将不再包含任何初始值,相反原创 2022-06-27 16:36:36 · 642 阅读 · 0 评论 -
Python进阶系列(十五)
open 函数可以打开一个文件。超级简单吧?大多数时候,我们看到它这样被使用:我现在写这篇文章的原因,是大部分时间我看到open被这样使用。有三个错误存在于上面的代码中。你能把它们全指出来吗?如不能,请读下去。在这篇文章的结尾,你会知道上面的代码错在哪里,而且,更重要的是,你能在自己的代码里避免这些错误。现在我们从基础开始:open的返回值是一个文件句柄,从操作系统托付给你的Python程序。一旦你处理完文件,你会想要归还这个文件句柄,只有这样你的程序不会超出一次能打开的文件句柄的数量上限。显式地调用原创 2022-06-27 16:36:09 · 664 阅读 · 0 评论 -
Python进阶系列(十四)
Python/C API可能是被最广泛使用的方法。它不仅简单,而且可以在C代码中操作你的Python对象。这种方法需要以特定的方式来编写C代码以供Python去调用它。所有的Python对象都被表示为一种叫做PyObject的结构体,并且Python.h头文件中提供了各种操作它的函数。例如,如果PyObject表示为PyListType(列表类型)时,那么我们便可以使用PyList_Size()函数来获取该结构的长度,类似Python中的len(list)函数。大部分对Python原生对象的基础函数和操作在原创 2022-06-27 16:35:34 · 833 阅读 · 0 评论 -
Python进阶系列(十三)
目录For - Elseelse从句使用C扩展CTypes循环是任何语言的一个必备要素。同样地,for循环就是Python的一个重要组成部分。然而还有一些东西是初学者并不知道的。我们将一个个讨论一下。我们先从已经知道的开始。我们知道可以像这样使用for循环:Output: Apple Banana Mango这是一个for循环非常基础的结构。现在我们继续看看,Python的for循环的一些鲜为人所知的特性。for循环还有一个else从句,我们大多数人并不熟悉。这个else从原创 2022-06-27 16:35:10 · 649 阅读 · 0 评论 -
Python进阶系列(十二)
目录lambda表达式一行式lambda表达式是一行函数。它们在其他语言中也被称为匿名函数。如果你不想在程序中对一个函数使用两次,你也许会想用lambda表达式,它们和普通的函数完全一样。原型 lambda 参数:操作(参数)例子 Output: 8这还有一些lambda表达式的应用案例,可以在一些特殊情况下使用:列表排序 Output: [(13, -3), (4, 1), (1, 2), (9, 10)]列表并行排序 一行式本章节,我将向大家展示一些一行原创 2022-06-27 16:34:47 · 651 阅读 · 0 评论 -
Python进阶系列(十一)
异常处理是一种艺术,一旦你掌握,会授予你无穷的力量。我将要向你展示我们能处理异常的一些方式。最基本的术语里我们知道了try/except从句。可能触发异常产生的代码会放到try语句块里,而处理异常的代码会在except语句块里实现。这是一个简单的例子:上面的例子里,我们仅仅在处理一个IOError的异常。大部分初学者还不知道的是,我们可以处理多个异常。我们可以使用三种方法来处理多个异常。第一种方法需要把所有可能发生的异常放到一个元组里。像这样:另外一种方式是对每个单独的异常在单独的excep原创 2022-06-27 16:34:17 · 671 阅读 · 0 评论 -
Python进阶系列(十)
目录推导式(comprehensions)列表推导式(list comprehensions)字典推导式(dict comprehensions)集合推导式(set comprehensions)推导式(又称解析式)是Python的一种独有特性,如果我被迫离开了它,我会非常想念。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:我们将一一进行讨论。一旦你知道了使用列表推导式的诀窍,你就能轻易使用任意一种推导式了。列表推导式(又称列表解析式)提供了一种简原创 2022-06-20 17:02:58 · 704 阅读 · 1 评论 -
Python进阶系列(九)
目录枚举 Enumerate对象自省dirtype和idinspect模块枚举 Enumerate枚举(enumerate)是Python内置函数。它的用处很难在简单的一行中说明,但是大多数的新人,甚至一些高级程序员都没有意识到它。它允许我们遍历数据并自动计数,下面是一个例子:for counter, value in enumerate(some_list): print(counter, value)不只如此,enumerate也接受一些可选参数,...原创 2022-06-20 17:02:20 · 707 阅读 · 0 评论 -
Python进阶系列(八)
目录容器(Collections)defaultdictCounterdequenamedtupleenum.Enum (Python 3.4+)容器(Collections)Python附带一个模块,它包含许多容器数据类型,名字叫作collections。我们将讨论它的作用和用法。我们将讨论的是:defaultdict counter deque namedtuple enum.Enum (包含在Python 3.4以上)defaultdict我个原创 2022-06-20 17:01:15 · 670 阅读 · 0 评论 -
Python进阶系列(七)
目录对象变动(Mutation)__slots__魔法对象变动(Mutation)Python中可变(mutable)与不可变(immutable)的数据类型让新手很是头痛。简单的说,可变(mutable)意味着"可以被改动",而不可变(immutable)的意思是“常量(constant)”。想把脑筋转动起来吗?考虑下这个例子:foo = ['hi']print(foo)# Output: ['hi']bar = foobar += ['bye']print(原创 2022-06-20 17:00:43 · 699 阅读 · 0 评论 -
Python进阶系列(六)
Global和Return你也许遇到过, python中一些函数在最尾部有一个return关键字。你知道它是干嘛吗?它和其他语言的return类似。我们来检查下这个小函数:def add(value1, value2):return value1 + value2result = add(3, 5)print(result)# Output: 8上面这个函数将两个值作为输入,然后输出它们相加之和。我们也可以这样做:def add(value1,value2): ...原创 2022-06-20 17:00:11 · 662 阅读 · 0 评论 -
Python进阶系列(五)
装饰器使用场景现在我们来看一下装饰器在哪些地方特别耀眼,以及使用它可以让一些事情管理起来变得更简单。授权(Authorization)装饰器能有助于检查某个人是否被授权去使用一个web应用的端点(endpoint)。它们被大量使用于Flask和Django web框架中。这里是一个例子来使用基于装饰器的授权:from functools import wrapsdef requires_auth(f): @wraps(f) def decorated(*......原创 2022-06-16 09:10:30 · 690 阅读 · 0 评论 -
Python进阶系列(四)
从函数中返回函数其实并不需要在一个函数里去执行另一个函数,我们也可以将其作为输出返回出来:def hi(name="yasoob"): def greet(): return "now you are in the greet() function" def welcome(): return "now you are in the welcome() function" if name == "yasoob":......原创 2022-06-16 09:10:00 · 658 阅读 · 0 评论 -
Python进阶系列(三)
目录三元运算符装饰器一切皆对象在函数中定义函数三元运算符三元运算符通常在Python里被称为条件表达式,这些表达式基于真(true)/假(not)的条件判断,在Python 2.4以上才有了三元操作。下面是一个伪代码和例子:伪代码:#如果条件为真,返回真 否则返回假condition_is_true if condition else condition_is_false例子:is_fat = Truestate = "fat" if is_fat原创 2022-06-16 09:09:23 · 686 阅读 · 0 评论 -
Python进阶系列(二)
目录Map,Filter 和 ReduceMapFilterReduceset(集合)数据结构交集差集Map,Filter 和 ReduceMap,Filter 和 Reduce 三个函数能为函数式编程提供便利。我们会通过实例一个一个讨论并理解它们。MapMap会将一个函数映射到一个输出列表的所有元素上。这是它的规范:map(function_to_apply, list_of_inputs)大多数时候,我们要把列表中所有元素一个个地传递给一个函数,原创 2022-06-16 09:08:42 · 688 阅读 · 0 评论 -
python数据类型入门(四)之元祖和字典
目录一、元祖1.1、访问元组1.2、修改元组1.3、删除元组1.4、元组运算符1.5、元组索引&截取1.6、元组内置函数二、字典2.1、字典简介2.2、访问字典里的值2.3、修改字典2.4、删除字典2.5、字典内置函数&方法一、元祖Python的元组与列表类似,不同之处在于元组的元素不能修改;元组使用小括号(),列表使用方括号[];元组创建很简单,只需要在括号中添加元素,并使用逗号(,)隔开即可,例如:tup1 = (原创 2022-06-08 16:57:07 · 1398 阅读 · 0 评论 -
python数据类型入门(三)之列表
目录1、初始化列表2、访问列表中的值3、更新列表4、删除列表元素5、列表脚本操作符6、列表截取7、列表函数&方法1、初始化列表例如:list=['physics', 'chemistry', 1997, 2000];nums=[1, 3, 5, 7, 8, 13, 20];2、访问列表中的值例如:'''nums[0]: 1'''print "nums[0]:", nums[0]'''nums[2:5]: [5, 7, 8] 从下标.原创 2022-06-08 16:56:43 · 672 阅读 · 0 评论 -
python数据类型入门(二)数字类型
目录1、基本使用2、删除数字对象引用3、数字类型转换4、数学函数1、基本使用整数int=20;print int;浮点数float=2.3;print float;2、删除数字对象引用例如:a=1;b=2;c=3;del a;del b, c;#print a; #删除a变量后,再调用a变量会报错3、数字类型转换int(x [,base]) 将x转换为一个整数float(x ) 将x转换到一个浮点数co原创 2022-06-08 16:56:17 · 1029 阅读 · 0 评论 -
python数据类型入门(一)之字符串、布尔类型和日期时间
目录1、字符串2、布尔类型3、日期和时间3.1、获取当前时间3.2、获取格式化的时间3.3、获取日期差3.4、获取时间差3.5、获取上个月最后一天3.6、字符串日期格式化为秒数3.7、日期格式化为秒数3.8、秒数转字符串1、字符串1.1、如何在Python中使用字符串a、使用单引号(')用单引号括起来表示字符串,例如:str='this is string';print str;b、使用双引号(")双引号中的字符串与单引号中的原创 2022-06-08 16:55:42 · 872 阅读 · 0 评论 -
Python常用的七大运算符
目录Python算术运算符Python比较运算符Python赋值运算符Python位运算符Python逻辑运算符Python成员运算符Python运算符优先级什么是运算符?本章节主要说明Python的运算符。举个简单的例子2 +3 = 5。 例子中,"+" 称为运算符,2和3被称为操作数。Python语言支持以下类型的运算符:算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 运算符优先级接下来让我们一....原创 2022-06-04 14:45:17 · 2317 阅读 · 1 评论 -
python最常用七大函数(一)之map()函数和reduce()函数
一、map()函数map()是 Python 内置的高阶函数,它接收一个函数 f和一个list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9]如果希望把list的每个元素都作平方,就可以用map()函数:因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算:def f(x):return x*xprint map(f, [1, ...原创 2022-06-04 14:44:30 · 1232 阅读 · 0 评论 -
python最常用七大函数(四)之闭包
闭包(closure)是函数式编程的重要的语法结构。函数式编程是一种编程范式 (而面向过程编程和面向对象编程也都是编程范式)。在面向过程编程中,我们见到过函数(function);在面向对象编程中,我们见过对象(object)。函数和对象的根本目的是以某种逻辑方式组织代码,并提高代码的可重复使用性(reusability)。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。在函数内部定义的函数和外部定义的函数是一样的,只是他们无法被外部访问:def g(): print '.....原创 2022-06-04 14:43:16 · 693 阅读 · 0 评论 -
python最常用七大函数(三)之返回函数和匿名函数
一、返回函数Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数!例如,定义一个函数 f(),我们让它返回一个函数 g,可以这样写:def f(): print 'call f()...' # 定义函数g: def g(): print 'call g()...' # 返回函数g: return g仔细观察上面的函数定义,我们在函数 f 内部又定义了一个函数 g。由于函数 g 也是......原创 2022-06-04 14:42:38 · 1441 阅读 · 0 评论 -
python最常用七大函数(二)之filter()函数和sorted()函数
一、filter()函数filter()函数是Python内置的另一个有用的高阶函数,filter()函数接收一个函数 f和一个list,这个函数f的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:def is_odd(x):return x % 2 == 1.....原创 2022-06-04 14:41:47 · 827 阅读 · 0 评论 -
Python字符串操作
1.复制字符串#strcpy(sStr1,sStr2)sStr1 = ’strcpy’sStr2 = sStr1sStr1 = ’strcpy2′print sStr22.连接字符串#strcat(sStr1,sStr2)sStr1 = ’strcat’sStr2 = ‘append’sStr1 += sStr2print sStr13.查找字符#strchr(sStr1,sStr2)sStr1 = ’strchr’sStr2 = ‘r’..原创 2022-06-04 14:40:48 · 856 阅读 · 0 评论 -
Python进阶系列(一)
使用 *args 和 **kwargs 来调用函数那现在我们将看到怎样使用*args和**kwargs 来调用一个函数。 假设,你有这样一个小函数:def test_args_kwargs(arg1, arg2, arg3): print("arg1:", arg1) print("arg2:", arg2) print("arg3:", arg3)你可以使用*args或**kwargs来给这个小函数传递参数。 下面是怎样做:# 首先使用 *args......原创 2022-06-16 09:08:05 · 682 阅读 · 0 评论 -
ES6新特性(6)之箭头函数/Class类
目录(一)箭头函数(二)Class类(一)箭头函数1.单参数function cheng0(a = 3) {return a * a;}let cheng = (a = 3) => a * a;console.log(cheng(9));2.多参数function add0(a, b) {return a + b;}let add = (a, b) => a + b; //默认返回值console.log(add(3, 9));原创 2022-04-20 14:30:00 · 1063 阅读 · 0 评论 -
2022年最新Python学习路线图(内附视频资料)【六张图带你掌握Python技巧】
基础语法学习Python的基础语法包括两大部分,其一是函数式编程部分,其二是面向对象编程部分。函数式部分的内容还是比较简单的,包括列表、函数、字符串、流控等内容,这部分实验也比较好理解。面向对象部分则需要具备一定的抽象能力,要理解类的概念以及多态的概念。总的来说,Python的基础语法部分通常还是比较容易掌握的,初学者大概使用2到3周的时间就能初步掌握。制定发展方向Python的应用领域包括Web开发、大数据开发、人工智能开发和嵌入式开发等,对于初学者来说,选择Web开发方向是比较常见的选择,一方原创 2022-02-08 11:05:16 · 10679 阅读 · 23 评论 -
Python学习路线(2022版)【靠这份学习曲线有人逆袭进大厂】
一、前言不管你想学习哪一门知识,都应该对学习目标有清楚认识。只有这样才能少走弯路,享受学习的过程。虽然目前的编程语言有很多,但是基础语法上的概念,本质上都是相通的。学好某一种语言,首先要有清晰的学习路线,然后按照这个路线去执行,你终将成为别人眼中的大佬。为此,整理了一份Python学习路线和资源,也是第一时间与大家分享出来。二、学习曲线这个学习曲线来源于网络,觉得不错就推荐给大家,同时也感谢某马的开源免费精神,竹林也是受益颇多!三、优质资源我把这些资源分为了七个不...原创 2021-12-27 22:40:26 · 1245 阅读 · 20 评论 -
Python爬虫从入门到精通(八)反爬及应对反爬的策略
目录一、 网站如何发现爬虫二、网站如何进行反爬三、爬虫如何发现自己可能被网站识别了四、 爬虫应对反爬的策略总结随着抓取的数据量到一定程度,数据重复及爬取过程中的死链问题会凸显。怎么来解决反爬问题呢?一、 网站如何发现爬虫一般来说,网站会有以下一些简单的策略发现爬虫程序: 1)单一IP非常规的访问频次; 2)单一IP非常规的数据流量; 3)大量重复简单的网站浏览行为,只下载网页,没有后续的JS,CSS请求; 5)通过一些陷阱来发现爬虫,例如一些通过CSS...原创 2021-12-11 16:31:00 · 2483 阅读 · 13 评论 -
Python爬虫从入门到精通(七)Scrapy框架
目录前言一、什么是Scrapy二、怎么安装使用Scrapy前言在了解了爬虫各种基础知识之后,我们有时需要快速搭建一个个爬虫的程序。有没有这么一个方便的工具或框架能让我们快速搭建起一个个爬虫程序呢?Scrapy呼之欲出。一、什么是Scrapy纯Python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架。框架本身把一些重复性的工作给你做好了;你就可以轻轻松松的按照其框架本身写几个简单的模块或者简单的扩展一些模块就可以你个性化的功能;当然带来的问题是首先你要学习了解框架,还原创 2021-12-11 16:30:08 · 878 阅读 · 0 评论 -
Python爬虫从入门到精通(六)表单与爬虫登录问题
目录前言一、关于表单二、管理cookie1、使用cookie登录2、 ##补充知识 cookiejar的使用三、关于验证码(CAPTCHA)前言前面的章节中,我们介绍了如果在客户端与服务器之间进行数据交换。我们可以使用GET方法和POST方法与服务器进行交互,敏感数据只应使用POST请求进行发送,以避免将书暴露在URL中。当然,服务器还支持其他HTTP方法,比如PUT和DELETE等方法,但这些方法在表单中都不支持。一、关于表单客户端的浏览器需要与网站服务器进行交互,原创 2021-12-09 12:53:38 · 856 阅读 · 10 评论 -
Python爬虫从入门到精通(五)动态网页的挑战
目录前言一、动态网页的使用场景二、回到与HTTP服务器发送请求数据的原始方法1、GET方法2、 POST方法三、更加难以对付的动态网站1、应对需要多次数据的交互模拟的网站2、 Selenium3、 PhantomJS及浏览器四、关于动态网站信息抓取的总结前言很多网站的数据,比如电商网站商品的价格,评论等等会采用动态加载的方式来加载,这样可能在爬虫程序刚刚访问时无法直接获取到相关数据。那么怎么应对这样的问题呢?一、动态网页的使用场景先看下面一个例子:原创 2021-12-09 12:52:19 · 1428 阅读 · 7 评论