![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python之路
文章平均质量分 92
THE_Gogh
这个作者很懒,什么都没留下…
展开
-
二十五、匿名函数
匿名函数当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))[1, 4,原创 2017-12-15 16:30:41 · 309 阅读 · 0 评论 -
二十四、返回函数
返回函数函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么原创 2017-12-15 16:27:35 · 275 阅读 · 0 评论 -
二十二、filter
filterPython内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。例如,在一个list中,删掉偶数,只保留奇数,可以这么写:def is_odd(n): retu原创 2017-12-12 15:53:13 · 357 阅读 · 0 评论 -
二十三、sorted
sorted排序算法排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。Python内置的sorted()函数就可以对list进行排序:>>> sorted([36, 5,原创 2017-12-12 15:55:36 · 355 阅读 · 0 评论 -
二十一、map/reduce
map/reducePython内建了map()和reduce()函数。如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念。我们先看map。map()函数接收两个参数,一个是函数,一个是Iterable,ma原创 2017-12-12 15:52:18 · 283 阅读 · 0 评论 -
二十、高阶函数
高阶函数高阶函数英文叫Higher-order function。什么是高阶函数?我们以实际代码为例子,一步一步深入概念。变量可以指向函数以Python内置的求绝对值的函数abs()为例,调用该函数用以下代码:>>> abs(-10)10但是,如果只写abs呢?>>> abs可见,abs(-10)是函数调用,而abs是函数本身原创 2017-12-12 15:50:44 · 270 阅读 · 0 评论 -
十九、函数式编程
函数式编程函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。而函数式编程(请注意多了一个“式”字)——Functional Programming,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算。我原创 2017-12-12 15:49:58 · 211 阅读 · 0 评论 -
十八、迭代器
迭代器我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list、tuple、dict、set、str等;一类是generator,包括生成器和带yield的generator function。这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。可以使用isinstance()判断一个对象是原创 2017-12-12 15:48:45 · 194 阅读 · 0 评论 -
二十六、装饰器
装饰器由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。>>> def now():... print('2015-3-25')...>>> f = now>>> f()2015-3-25函数对象有一个__name__属性,可以拿到函数的名字:>>> now.__name__'now'>>> f.__name__'no原创 2017-12-15 16:44:24 · 290 阅读 · 0 评论 -
二十七、偏函数
偏函数Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下:int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十原创 2017-12-15 16:46:59 · 311 阅读 · 0 评论 -
二十八、模块
模块在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。使用模块有什么好处?最大的好处是大大提高了代码的原创 2017-12-15 16:51:42 · 239 阅读 · 0 评论 -
re正则相关
import reret = re.findall('w\w{2}l', 'hello world')print(ret)ret = re.findall('alex', 'delfffalexdfkjggggalex.1123')print(ret)# 元字符# .:通配符a = re.findall('w..l', 'hell原创 2017-12-22 17:18:35 · 279 阅读 · 0 评论 -
soket相关
soket方法sk.bind(address) s.bind(address) 将套接字绑定到地址。address地址的格式取决于地址族。在AF_INET下,以元组(host,port)的形式表示地址。sk.listen(backlog) 开始监听传入连接。backlog指定在拒绝连接之前,可以挂起的最大连接数量。 backlog等于5,表原创 2017-12-22 15:32:13 · 279 阅读 · 0 评论 -
三十四、面向对象进阶
上一篇《面向对象初识》文章介绍了面向对象基本知识:面向对象是一种编程方式,此编程方式的实现是基于对 类 和对象 的使用类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中)对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数面向对象三大特性:封装、继承和多态 本篇将详细介绍Python 类的成员、成员修饰符、类原创 2017-12-20 16:01:00 · 303 阅读 · 0 评论 -
三十五、面向对象相关扩展
面向对象其他相关一、isinstance(obj, cls) 检查是否obj是否是类 cls 的对象classFoo(object): pass obj =Foo() isinstance(obj, Foo)二、issubclass(sub, super)检查sub类是否是 super 类的派生类classFoo(object)原创 2017-12-20 17:08:23 · 292 阅读 · 0 评论 -
三十一、使用__future__
使用__future__Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动。有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了。从Python 2.7到Python 3.x就有不兼容的一些改动,比如2.x里的字符串用'xxx'表示str,Unicode字符串用u'xxx'表示unicode,而在3.x中,所原创 2017-12-15 17:07:48 · 217 阅读 · 0 评论 -
三十、安装第三方模块
安装第三方模块在Python中,安装第三方模块,是通过包管理工具pip完成的。如果你正在使用Mac或Linux,安装pip本身这个步骤就可以跳过了。如果你正在使用Windows,请参考安装Python一节的内容,确保安装时勾选了pip和Add python.exe to Path。在命令提示符窗口下尝试运行pip,如果Windows提示未找到命令原创 2017-12-15 17:02:08 · 506 阅读 · 0 评论 -
二十九、使用模块
使用模块Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。我们以内建的sys模块为例,编写一个hello的模块:#!/usr/bin/env python3# -*- coding: utf-8 -*-' a test module '__author__ = 'Michael Liao'import sysdef test(原创 2017-12-15 16:55:24 · 217 阅读 · 0 评论 -
十七、生成器
生成器通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量原创 2017-12-12 15:47:39 · 248 阅读 · 0 评论 -
十六、列表生成式
列表生成式列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):>>> list(range(1, 11))[1, 2, 3, 4, 5, 6, 7, 8, 9,原创 2017-12-12 15:46:47 · 305 阅读 · 0 评论 -
三、Python的输入输出
输出用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出'hello, world',用代码实现如下:>>> print('hello, world')print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:>>> print('The quick brown fox', 'jumps over', 'the lazy dog')Th原创 2017-11-15 16:03:26 · 399 阅读 · 0 评论 -
二、python安装简单介绍
Python环境 安装Pythonwindows:12345671、下载安装包 https://www.python.org/downloads/2、安装 默认安装路径:C:\python273、配置环境变量 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--原创 2017-11-15 15:46:34 · 1195 阅读 · 0 评论 -
一、Python编码问题
关于Python编码这哥们的这段话说的太对了,搞Python不把编码彻底搞明白,总有一天它会猝不及防坑你一把。不过感觉这哥们的答案并没把编码问题写明白,所以只好亲自动笔了。 折腾编码问题,有很多次,我以为自已明白了,最终发现,那只不过是自圆其说而已,这一次,终于100%确定,动笔即不再改! 看这篇文章前,你应该已经知道了为什么有编码,以及编码的种类情况转载 2017-11-15 15:33:03 · 479 阅读 · 0 评论 -
十三、递归函数
递归函数在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出:fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n所以,f原创 2017-11-17 16:01:09 · 250 阅读 · 0 评论 -
十二、函数的参数
函数的参数定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简原创 2017-11-17 16:00:22 · 202 阅读 · 0 评论 -
十一、定义函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。我们以自定义一个求绝对值的my_abs函数为例:def my_abs(x): if x >= 0: return x else: return -x请自行测试并调用my_abs看看返回结果是否正确。请注意,函数体原创 2017-11-17 15:59:22 · 364 阅读 · 0 评论 -
十、Python-调用函数
Python内置了很多有用的函数,我们可以直接调用。要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数。可以直接从Python的官方网站查看文档:http://docs.python.org/3/library/functions.html#abs也可以在交互式命令行通过help(abs)查看abs函数的帮助信息。调用abs函数:原创 2017-11-17 15:58:07 · 259 阅读 · 0 评论 -
九、Python之函数
我们知道圆的面积计算公式为:S = πr2当我们知道半径r的值时,就可以根据公式计算出面积。假设我们需要计算3个不同大小的圆的面积:r1 =12.34r2 =9.08r3 =73.1s1 =3.14 * r1 * r1s2 =3.14 * r2 * r2s3 =3.14 * r3 * r3当代码出现有规律的重复的时候,你就需要当心了,每次写3原创 2017-11-17 15:56:49 · 230 阅读 · 0 评论 -
四、Python的数据类型和变量
数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:整数Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8原创 2017-11-15 16:09:15 · 369 阅读 · 0 评论 -
十五、高级特性之迭代
迭代如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。在Python中,迭代是通过for ... in来完成的,而很多语言比如C语言,迭代list是通过下标完成的,比如Java代码:for (i=0; i可以看出,Python的for循环抽象程度要高于C的for循环,因原创 2017-12-12 15:32:28 · 625 阅读 · 0 评论 -
十四、高级特性之切片
高级特性掌握了Python的数据类型、语句和函数,基本上就可以编写出很多有用的程序了。比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现:L = []n = 1while n<=99:L.append(n)n =n +2取list的前一半的元素,也可以通过循环实现。但是在Python中,代码不是越多越好,而是越原创 2017-12-12 15:30:25 · 264 阅读 · 0 评论 -
三十三、面向对象初识
创建类和对象面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。 类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 对象则是根据模板创建的实例,通过实例对象可以执行类中的函数class是关键字,表示类创建对象,类名称后加括号即可ps:类中的函数第一个参数必须原创 2017-12-20 15:19:57 · 320 阅读 · 0 评论 -
三十二、面向对象
面向对象编程面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。而原创 2017-12-20 14:57:04 · 201 阅读 · 0 评论 -
七、Python的循环
循环要计算1+2+3,我们可以直接写表达式:>>> 1 + 2 + 36要计算1+2+3+...+10,勉强也能写出来。但是,要计算1+2+3+...+10000,直接写表达式就不可能了。为了让计算机能计算成千上万次的重复运算,我们就需要循环语句。Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,看例子:names原创 2017-11-15 18:08:17 · 1845 阅读 · 0 评论 -
六、Python的条件判断
条件判断计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现:age = 20if age >= 18: print('your age is', age) print('adult')根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了原创 2017-11-15 18:06:57 · 328 阅读 · 0 评论 -
五、list和tuple
listPython内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。比如,列出班里所有同学的名字,就可以用一个list表示:>>> classmates = ['Michael', 'Bob', 'Tracy']>>> classmates['Michael', 'Bob', 'Tracy']变量classmates就是一个list原创 2017-11-15 18:04:29 · 252 阅读 · 0 评论 -
八、使用dict和set
dictPython内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:names = ['Michael', 'Bob', 'Tracy']scores = [95,75,85]给原创 2017-11-17 15:55:22 · 217 阅读 · 0 评论