Python for Data Analysis 2.3 节概括
2.3 节是 Python 语言基础,还是在这里概括一下,方便以后查询。
首先,Python 的缩进(indentation)十分重要,相当于 C/C++ 的花括号,定义了作用域。PEP 8 规范是 Python 的官方代码样式指南,值得读一下。缩进建议是 4 个空格 spaces,尽量不要用 tab。
Colons 冒号 : 后面是缩进的代码块。
多个语句可以用 Semicolons 分号 ; 隔开写在一行上,但是不要这么做。
Python 语言里一切东西都是 object,在解释器里都有一个存储“盒”。
Hash mark or pound sign 井号 # 后空一格开始注释。多行注释形成注释块 block comments。行内注释 inline comments 在代码后面。
调用函数 function 和 object 的方法 method,并给变量赋值。函数的位置参数和关键字参数。
变量赋值 variable assignment 的深入理解请看这篇文章。
理解了变量的赋值,理解 函数的参数传递 argument passing 就容易多了,也就是 形参 arguments 指向了 实参 parameters 指向的 object,或者说同一个 object 有两个 references,一个 reference 让形参找到自己,另外一个 reference 让实参找到自己。
所以,在函数域内,给形参赋予另外一个 object 后,形参就指向到这个 object 了,形参 reference 变了,形参和实参就脱离了关系。
如果传递的参数是可变类型,比如 list,那么在函数域内可能会改变了 list 内的内容,但是形参 reference 没变,也就是还是指向实参所指向的那个 list,这样就影响到了函数外的 object 了。不得已,不要这么做。
Object 都有类型,但是它的编号 reference 是没类型的。既然 python 里所有东西都是 object,所以 python 是强类型语言,但是你不用关心类型,一切都隐式的储藏着。
变量 Variable 是给 Object 起的名字,都有 namespace,出了这个 namespace 就不起作用了。
isinstance() 函数的用法。
object 的 属性 attibutes 和方法 methods。dir()、getattr()、hasattr()、setattr() 的基本用法。
Duck typing 网上叫鸭子类型;动态类型;行为决定类型,我不懂。意思是虽然你不需要那么关心 object 的类型,但是你需要知道 object 的方法(行为),只有这样你就知道如何用这个 object 了,否则这个 object 对你有什么用处?第 35 页上的那个 isiterable(obj) 函数好好学习一下,配合 isinstance() 使用。
模块 Module 和它的多种导入使用方法。
二元操作符 binary operators 和比较。关键词 is 和 关键词 is not (对比编号指向的是否是同一 object),它们与 == (对比 objects 内容是否一样)的区别。
可变对象 mutable objects: lists, dicts, arrays, Numpy arrays, pandas series, pandas dataframes, classes...
不可变对象 immutable objects: strings, tuples
标量类型 Scalar Types: NoneType - None, str, bytes, float, bool - True/False, int, complex...
单引号 ' 和双引号 " 包围下就是字符串 string literals。含换行符的多行字符串可以用三个单引号 ''' 或者双引号 """ 包围起来。换行符不显示出来,但是包含在里面,查看有多少行,可以 print() 或者 repr()。
backslash character 反斜杠字符 \ 也叫转义符号 escape character。
raw string 表示方法。
str 类型 object 有很多 methods,查看 python 文献。
str 类型 format 的方法的基本用法,更深的解释请看这个。
bytes 类型 和 Unicode 字符串之间的互换,也就是 encode 和 decode 方法。
bool 类型的两个布尔值分别是 True 和 False,首字母大写。
None 是保留关键字,也是 NoneType 的一个实例 Instance。
datetime 和 date 和 time 在后面章节里会更详细的讲解。Table 2-5 后面会参考到。
Control flow 流程控制与别的程序语言大同小异,但是 Python 对 Sequence 进行 loop 循环的时候有特别的优势,需要好好体会一下。对 if 控制流程、range() 函数、break/continue、pass 等请看这里。对 while、for、try、with 等看这里。
Tenary expression 三元表达式。
Type casting 类型转换
Type casting 类型转换的几个函数 str()、float()、int()、bool()。内置的 eval() 函数也可以把字符串转换成整数,但是尽量不要用 eval()。
tuple()、list()、dict()、numpy.array()、numpy.arange()、pandas.Series()、pandas.DataFrame() 等都可以把其它类型的 object 转换成各自的数据结构类型,也可以说是类型转换。
Python 的 Try Exception
第 35 页的 isiterable 函数中用到了 Try Exception,在书中第 77 页有讲解。
def isiterable(obj):
try:
iter(obj)
return True
except TypeError: # not iterable
return False
这里的一个知识点是 Python 的错误 Errors 和异常 Exceptions,及如何处理的,可以看 Python 官方文献,这篇文章也写得很好。
No comments:
Post a Comment