Tonychow

在学,在前行,be a fool

Python 核心编程读书笔记 Day3

| Comments

今天阅读的章节是 8 和 9 章,前面的章节已经介绍了 Python 的基本的数据类型,这两章分别介绍了 Python 的条件 循环语句和文件类型。

第八章:条件和循环

这章主要就是介绍 Python 中的条件和循环语句,Python 中的条件语句有 if-else,而循环则有 while 和 for。要点:

1.if 语句有 if-else 和 if-elif-elif-else 模式;

2.Python 中也存在条件表达式,和其他语言的不同,是利用 if 实现的:X if C else Y;

3.Python 中的 while 和其他语言的类似,而 for 循环则不一样,for 循环可以遍历可迭代对象;

4.在遍历迭代器的时候,for 循环会调用迭代器的 next 方法,并且在遇到 StopIteration 异常结束遍历;

5.range(start, stop, step=1) 函数可以生成一个列表;

6.sorted 和 zip 函数返回一个列表,而 reversed 和 enumerate 函数则返回一个迭代器;

7.else 同样可以用在 while 和 for 循环语句中,在循环结束后执行,break 则会跳出这个 else;

8.迭代器对象需要实现 next 和 __iter__ 方法;

9.列表解释:[expr for iter_var in iterable],返回列表;

10.生成器表达式:(expr for iter_var in iterable);

Python 核心编程读书笔记 Day2

| Comments

今天主要阅读了 5 – 7 章的内容,继续总结每章的内容及要点。

第五章:数字

本章介绍 Python 中的各种数字类型及其运算符和处理数字的内建函数。要点如下:

1.Python 中的数字类型包括整型,长整型,布尔型,双精度浮点型,十进制浮点型和复数,都是不可变类型,对数字类型变量的变 更都会产生一个新的对象;

2.现在的 Python 支持整型自动转换为长整型,不会溢出;

3.Python 中只采用了双精度浮点型,不实现单精度浮点型,如果需要进行银行等系统编写可以考虑使用 Decimal 模块;

4.Python 中不同类型数字运算转换规则:存在复数转换为复数,否则存在浮点数则转换为浮点数,否则存在长整数则转换为长整 数,否则都是普通整数;

5.divmod 函数用于数值计算,返回一个包含商和余数的元组;

6.round 函数对数值进行四舍五入取整,返回一个浮点数;

7.chr 函数将 ASCII 值的数字转换为 ASCII 字符,ord 则相反;

Python 核心编程读书笔记 Day1

| Comments

今天主要阅读了 1 – 4 章的内容,下面总结下每章的主要内容和一些要点。

第一章:Python 核心

书本的开始只是一些关于 Python 的常识性的内容,包括但不限于起源、各个特性、各个系统的安装 方式还有其他语言(C 语言之外)的实现方式,下面是一些要点:

1.Python 是一门解释性的语言,但是却有个编译成字节码的编译过程,这一点和 Java 是类似的, 因为编译成字节码可以得到性能上的增强;

2.标准的 Python 官方发行的是 C 实现的 Python 版本,被称为 CPython,此外也有其他语言实现 的版本,比如 Java 实现的 Jython,运行在 JVM 上,可以利用到 JVM 的 JIT 技术,并且可以使用 Java 的类库。此外还有 C# 语言实现的 IronPython,可以运行在 .NET 及 Mono 环境上。还有一个 基于 CPython 修改的 Stackless Python ,这个版本对 CPython 解释器进行了大量的修改,实现了 用户级别的微线程。

Python 类对象与实例对象源码分析

| Comments

一个有趣的现象

最近在翻 Python 的 Tutorial 的对象一章,随手在 Python 的交互 Shell 中敲了几段代码测试一下,发现了一个有趣的情况。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    >>> class TestCls(object):
    ...
    ...     def say_hi(self):
    ...         print 'Hi!'
    ...
    >>> t = TestCls()
    >>> t.say_hi()
    Hi!
    >>> t.ins_new_var = 101
    >>> t.ins_new_var
    101
    >>> TestCls.ins_new_var
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: type object 'TestCls' has no attribute 'ins_new_var'
    >>> TestCls.new_var = 100
    >>> TestCls.new_var
    100
    >>> t.new_var
    100

斯坦福大学公开课-编程范式 笔记 1

| Comments

前言

最近在跟一门斯坦福大学的公开课 Programming Paradigms ,网易公开课也有其中文翻译版,翻译已经完成了:斯坦福大学公开课:编程范式

课程内容:

Advanced memory management features of C and C++; the differences between imperative and object-oriented paradigms. The functional paradigm (using LISP) and concurrent programming (using C and C++). Brief survey of other modern languages such as Python, Objective C, and C#.