作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

栏目: IT资讯 · 发布时间: 5年前

内容简介:作者:Pulkit Agrawa编译:公众号编辑部

作为 <a href='https://www.codercto.com/topics/20097.html'>Python</a> 中级程序员,有句话不知当讲不当讲 ( ̄へ ̄) 标星★公众号      爱你们

作者:Pulkit Agrawa

编译:公众号编辑部

近期原创文章:

♥  基于无监督学习的期权定价异常检测(代码+数据)

♥  5种机器学习算法在预测股价的应用(代码+数据)

♥  深入研读:利用Twitter情绪去预测股市

♥  Two Sigma用新闻来预测股价走势,带你吊打Kaggle

  利用深度学习最新前沿预测股价走势

♥  一位数据科学PhD眼中的算法交易

♥  基于RNN和LSTM的股市预测方法

♥  人工智能『AI』应用算法交易,7个必踩的坑!

♥  神经网络在算法交易上的应用系列(一)

♥  预测股市 | 如何避免p-Hacking,为什么你要看涨?

♥  如何鉴别那些用深度学习预测股价的花哨模型?

♥  优化强化学习Q-learning算法进行股市

祝妈妈们节日快乐!

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

这句话里有10个问题

Python中都是对象吗?

字符串是对象。列表对象。函数对象。甚至模块也是对象。任何东西都是一个对象,因为它可以赋值给一个变量或作为参数传递给一个函数。

任何可以(合法地)放在等号右边的东西都是(或创建)Python中的对象。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

对象:

1、ID

2、值(可变的或不可变的)

可变的: 当更改项目时,ID仍然是相同的。比如:字典、列表。

不可变的: 字符串、整数、元组。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

Comprehension——用于创建集合和可迭代对象的简写语法。

▍列表推导式

▍集合推导式

▍字典推导式

▍Generator 推导式

▍ If-clause 推导式

▍多重推导式

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

▍嵌套推导式

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

扩展关键字参数

在Python中调用函数时,通常必须在使用关键字参数和位置参数之间进行选择。 关键字参数通常可用于使函数调用更加明确。当我们使用关键字参数时:我们通常可以省略具有默认值的参数。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

扩展形式参数语法:

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

扩展参数的数据类型:

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

扩展实参语法:

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

闭包和装饰器

在开始闭包之前,我们先了解一下local 函数:

  • 适用于特殊的、一次性的功能

  • 使得代码具有组织性和可读性

  • 类似于lambdas,但更为一般

  • 可能包含多个表达式

  • 可能包含statements

LEGB含义解释

  • L-Local(function):函数内的名字空间

  • E-Enclosing function locals:外部嵌套函数的名字空间(例如closure)

  • G-Global(module):函数定义所在模块(文件)的名字空间

  • B-Builtin(Python):Python内置模块的名字空间

Python的命名空间是一个字典,字典内保存了变量名称与对象之间的映射关系,因此,查找变量名就是在命名空间字典中查找键-值对。

Python有多个命名空间,因此,需要有规则来规定,按照怎样的顺序来查找命名空间,LEGB就是用来规定命名空间查找顺序的规则。

LEGB规定了查找一个名称的顺序为 :local-->enclosing function locals-->global-->builtin (局部变量———闭包空间———全局变量———内建模块内置)

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

▍Returning Function 

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

▍闭包

维持对早期范围对象的引用。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

我们可以使用_closure__来验证函数是否为闭包。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

一个函数和它的环境变量合在一起,就构成了一个闭包(closure) 。在Python中,所谓的闭包是一个包含有环境变量取值的函数对象。环境变量取值被保存在函数对象的 __closure__ 属性中。比如下面的代码:

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

__closure__ 里包含了一个元组。这个元组中的每个元素是cell类型的对象。我们看到第一个cell包含的就是整数15,也就是我们创建闭包时的环境变量b的取值。

下面看一个闭包的实际例子

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

这个例子中,函数line与环境变量a,b构成闭包。在创建闭包的时候,我们通过line_conf的参数a,b说明了这两个环境变量的取值,这样,我们就确定了函数的最终形式(y = x + 1和y = 4x + 5)。我们只需要变换参数a,b,就可以获得不同的直线表达函数。由此,我们可以看到,闭包也具有提高代码可复用性的作用。

如果没有闭包,我们需要每次创建直线函数的时候同时说明a,b,x。这样,我们就需要更多的参数传递,也减少了代码的可移植性。利用闭包,我们实际上创建了泛函。line函数定义一种广泛意义的函数。这个函数的一些方面已经确定(必须是直线),但另一些方面(比如a和b参数待定)。随后,我们根据line_conf传递来的参数,通过闭包的形式,将最终函数确定下来。

一个函数闭包 是一个函数和一个引用集合的组合,这个引用集合指向这个函数被定义的作用域的变量。后者通常指向一个引用环境(referencing environment),这使得函数能够在它被定义的区域之外执行。在Python中,这个引用环境被存储在一个cell的tuple中。你能够通过func_closure或Python 3中的__closure__属性访问它。要铭记的一点是引用及是引用,而不是对象的深度拷贝。当然了,对于不可变对象而言,这并不是问题,然而对可变对象(list)这点就必须注意。请注意函数在定义的地方也有__globals__字段来存储全局引用环境。

▍装饰器

装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过继承或是直接修改源代码实现,那么可以使用装饰器模式。简单来说Python中的装饰器就是指某些函数或其他可调用对象,以函数或类作为可选输入参数,然后返回函数或类的形式。

简单地说,decorator就像一个wrapper一样,在函数执行之前或者之后修改该函数的行为,而无需修改函数本身的代码,这也是修饰器名称的来由。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

生成器和迭代协议

Iterable :可以将对象传递给内置的iter()函数来获得迭代器。

Iterator :可以将对象传递给内置的next()函数来获取下一项。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

▍生成器

Python生成器是创建迭代器的一种简单方法。上面提到的都由Python中的生成器自动处理的。

生成器是一个函数,它返回一个对象(迭代器),我们可以遍历该对象(每次一个值)。

如果一个函数包含至少一个 yield 语句,则它将成为生成器函数。

不同之处在于,虽然return语句完全终止了一个函数,但是yield语句暂停保存函数的所有状态,然后在后续调用时继续执行。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

为什么在Python中使用生成器?

  • Easy to Implement

  • Memory Efficient

  • Represent Infinite Stream

  • Pipelining Generators

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

上下文管理器

ContextManager :上下文管理器就是实现了上下文管理协议的对象。主要用于保存和恢复各种全局状态,关闭文件等,上下文管理器本身就是一种装饰器

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

__enter__ ()

  • 在进入with-statement主体之前调用

  • 返回绑定到变量的值

  • 可以返回任何类型的值

  • 通常返回上下文管理器本身

__exit__()

当语句体退出时调用

__exit__(self, exc_type, exc_val, exc_tb)

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

@staticmethod、 @classmethod

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

如果需要访问函数中的类属性,请使用@classmethod。

如果不需要使用cls对象,则使用@static method。

与其他语言不同,Python中的静态方法可以在子类中重写。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

继承和封装

继承

继承是一个类获取另一个类的属性的机制。例如,一个孩子继承了他/她父母的特点。通过继承,我们可以重用现有类的字段和方法。因此,继承促进了可重用性,并且是OOPs的一个重要概念。

单继承

子类将具有基类的所有功能,还可以修改和增强。

子类初始化器希望调用基类初始化器,以使整个对象被初始化。

调用其他类初始化器:

1、其他语言自动调用base class初始化器

2、Python像对待其他方法一样处理 _init__()

3、base class _init__()在被覆盖时不会被调用

4、使用super()调用 base class _init__()

isinstance(instance, class):确定对象是否具有指定的类型。

Issubclass (subclass,base class):确定一个类型是否是其他类型的子类。

多继承

即子类有多个父类,并且具有它们的特征:

Python如何知道应该调用哪个base class函数?

Python使用方法解析Order和super来做到这一点。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

方法解析顺序

确定方法名称查找的顺序

1、通常称为“MRO”

2、方法可以在多个地方定义

3、MRO是继承图的排序

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

▍封装

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

Python包和程序设计

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

Sys.path Python搜索模块的目录列表。

PYTHONPATH 添加到sys.path的环境变量列表路径。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

1、包是包含其他模块的模块。

2、包通常实现为包含特殊 _init__.py 文件的目录。

3、导入包时执行 __init__.py 文件。

4. 包可以包含自己实现的子包。这些子包本身是用目录中的 __init__.py 文件实现的。

5、包的模块对象具有__path__属性。

绝对导入 :使用模块完整路径的导入。 比如 import a,Python 会在 sys.path 里寻找所有名为 a 的顶层模块。

相对导入 :使用相同包中模块的相对路径的导入。比如一个 package 下有 a.py 和 b.py 两个文件,在 a.py 里 from . import b 即是相对导入 b.py。

__all__ :是一个字符串list,用来定义模块中对于 from XXX import * 时要对外导出的符号,即要暴露的借口,但它只对 import * 起作用,对f rom XXX import XXX 不起作用。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)

来自:https://medium.com/@agrawal.pulkit1994

—End—

量化投资与机器学习微信公众号,是业内垂直于 Quant MFE CST 等专业的主流自媒体。公众号拥有来自 公募、私募、券商、银行、海外 等众多圈内 10W+ 关注者。每日发布行业前沿研究成果和最新资讯。

作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)


以上所述就是小编给大家介绍的《作为Python中级程序员,有句话不知当讲不当讲 ( ̄へ ̄)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

物联网导论(第2版)

物联网导论(第2版)

刘云浩 / 科学出版社 / 2013-8 / 45.00元

物联网是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。它具有普通对象设备化、自治终端互联化和普适服务智能化三个重要特征。 《物联网工程专业系列教材:物联网导论(第2版)》从物联网的感知识别层、网络构建层、管理服务层和综合应用层这四层分别进行阐述,深入浅出地为读者拨开萦绕于物联网这个概念的重重迷雾,引领求知者渐渐步入物联网世界,帮助探索者把握第三......一起来看看 《物联网导论(第2版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具