Python 进阶
参考文献
Map
map会将一个函数映射到一个输入列表的所有元素上
规范
使用样例
Filter
过滤列表中的元素,并且返回一个有所有符合要求的元素所构成的列表。符合要求
即函数映射到该元素是返回值为True
规范
使用样例
Reduce
对一个列表进行一些计算并返回结果
规范
使用样例
Global和Return
global
global变量意味着我们可以在函数以外的区域都能访问这个变量。
# 首先,是没有使用global变量
def add(value1, value2):
result = value1 + value2
add(2, 4)
print(result)
# Oh 糟了,我们遇到异常了。为什么会这样?
# python解释器报错说没有一个叫result的变量。
# 这是因为result变量只能在创建它的函数内部才允许访问,除非它是全局的(global)。
Traceback (most recent call last):
File "", line 1, in result
NameError: name 'result' is not defined
# 现在我们运行相同的代码,不过是在将result变量设为global之后
def add(value1, value2):
global result
result = value1 + value2
add(2, 4)
print(result)
6
多个 return 值
如果想从一个函数里返回两个变量而不是一个呢?
global
注意:不要试着使用上述方法。返回一个包含多个值的 tupple
,list
或者 dict
惯例
这是一种比列表和字典更好的方式。不要使用global
关键字。
对象变动(Mutation)
考虑一下例子:
这是对象可变性( mutability )的原因。每当你将一个变量赋值为另一个可变类型的变量时,对这个数据的任意改动会同时反映到这两个变量上去。新变量只不过是老变量的一个别名而已。这个情况只是针对可变数据类型。虚拟环境(virtualenv)
virtualenv
是一个工具,它能够帮我们创建一个独立的 python 环境。
使用 virtualenv
,可以针对每个程序创建独立(隔离)的python环境,而不是在全局安装所依赖的模块。
安装命令:
重要的命令: 执行第一个命令在myproject
文件夹创建一个隔离的 virtualenv 环境,第二个命令激活这个隔离的环境。
在创建 virtualenv 时,必须决定,使用系统全局的模块,还是内部模块。默认为内部模块。如果想使用全局模块:
使用一下命令退出:枚举
枚举是 Python 内置函数。它允许我们遍历数据并自动计数。
实例1
my_list = ["apple", "banana", "grapes", "pear"]
for c, value in enumerate(my_list, 1):
print(c, value)
实例2
my_list = ["apple", "banana", "grapes", "pear"]
counter_list = list(enumerate(my_list, 1))
print(counter_list)
对象自省
自省(introspection),在计算机编程领域里,是指运行时来判断一个对象的类型的能力。
dir
dir, 列出了一个对象所拥有的的属性和方法。如果我们运行 dir()
而不传入参数,那么它会返回当前作用域的所有名字。
type 和 id
tpye
函数返回一个对象的类型。id()
函数返回任意不同种类对象的唯一ID
inspect 模块
inspect
模块也提供了许多有用的函数,来获取活跃对象的信息。
各种推导式(comprehensions)
推导式(又称解析式)是 python 的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。共有三种推导,在 python2 和 3 中都有支持: - 列表(list)推导式 - 字典(dict)推导式 - 集合(set)推导式
列表推导式
列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建表。它的结构是在一个中括号里包含一个表达式,然后是一个 for
语句,然后是 0 个或多个 for
或者 if
语句。那个表达式可以使任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if
和 for
语句为上下文的表达式运行完成之后产生