看这本书的目的:再熟悉基本概念。

大部分都是知道,但是需要 明确 出来的 概念。 - 欢迎吐槽错误,非常感谢。

<A byte of python> - THIS

1. 组织行 - 形式:#! /usr/bin/python - 告诉linux通过哪个解释器去运行 源文件。

2. print实际上是一个操作符。

3. 自然字符串(又,原始字符串) - r 或 R, 我猜 r = raw - 完全地直接输出,即使是转义符也直接输出了

>>> print r'\n\nhello'
'\n\nhello'

4. Unicode字符串 - 书写国际文本的标准方法。 EX: u'This is a unicode.'

5. 字符串是不可变的 - <Python cookbook> 中,讨论“字符串连接”问题时,使用"+"不是好主意,使用join()更为有效率。

6. 按字面意义级连字符串 - 以前不知道,简单地说:两个字符串相邻放着就会自动拼接成一个字符串.

>>> print 'what\'s ' 'your name?'
what's your name?
>>> strTest = 'hello' 'power'
>>> strTest
'hellopower'

7. python中没有char类型 - <Python cookbook>中,’python中,字符(char)就是长度为1的字符串',这个阐述得很明白了

8. 一定要用 自然字符串 处理 正则表达式。 - 否则会需要使用很多的反斜杠。例如,后向引用符可以写成'\\1'r'\1'

                  - Django中,URL 到 视图函数 的 映射是通过 正则表达式 完成的。这也就是为什么,settings.py - URLConf 都会使用'r'的原因。

9. 变量,一部分内存。 - 内存空间中的程序 - 自己能翻译吗??

10. Python把在程序中用到的任何东西都称为 对象  - 就每一个东西包括数、字符串甚至函数都是对象 - 具体不清楚,函数也是对象是怎么回事。

11. 每个物理行只写一句逻辑行. - 物理行就是我们想法中的一行。逻辑行就是一个python语句了。这样的分类很有趣。

12. 请使用4空格进行缩进。  - 就是为了跨平台,就是不要混用空格和制表符,最好也不要使用制表符。

             - 用vim的时候,:set expandtab 空格 代替 制表符。 :set tabstop=4,就是4个空格呗。 :set list,显示出tab制表符。

13. 运算符 中,//,取整除,返回商的整数部分。 eg:

>>> 4.0 // 3.0
1.0

14. lambda,是 运算符, - -!运算符 和 操作符 有什么区别? operator。不纠结,继续。

15. 在Python中没有switch语句。

16. while语句有一个可选的else从句。

  【else块事实上是多余的,因为你可以把其中的语句放在同一块(与while相同)中,跟在while语句之后,这样可以取得相同的效果。】 - 这是用来搞笑的吗!?还是为了紧凑啊!!?

17. 哈哈哈哈哈哈,大哥!!我刚刚写了这个语句:

>>> i = 9
>>> --i
>>> # 我把自己逗笑了

18. 如果你从forwhile循环中 终止 ,任何对应的循环else块将不执行。 对NO.16的回答。

i = 10

while i > 0:
print i,
i -= 1
if 5 == i:
break
else:
print 'when the statement become False, so u saw this.' print 'End'

19. 函数是重用的程序段。 - 说得好。

20. 只有在形参表末尾的那些参数可以有默认参数值.

>>> def test(a = 1, b):
... print 'a:', a, 'b:', b
...
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument

21. 关键字参数。 1. 更灵活。不用在乎参数位置了。 2. 更易读。  - 与之对应的是,位置参数。

<中间丢了一部分>

30. dir()提供一个模块名的时候,它返回模块定义的名称列表(变量/名称)。如果不提供参数,它返回当前模块中定义的名称列表。

31. 含有0个或1个项目的元组。

  0: 一个空的元组由一对空的圆括号组成,如myempty = ()

  1含有单个元素的元组在第一个(唯一一个)项目后跟一个逗号,这样Python才能区分元组和表达式中一个带圆括号的对象。

32. 遍历 字典:

ab = {       'Swaroop'   : 'swaroopch@byteofpython.info',
'Larry' : 'larry@wall.org',
'Matsumoto' : 'matz@ruby-lang.org',
'Spammer' : 'spammer@hotmail.com'
} for name, address in ab.items():
print 'Contact %s at %s' % (name, address)

33. 列表、元组和字符串都是序列,序列的两个主要特点是索引操作符和切片操作符。

34.  reference. 书中翻译是‘参考’,C++中应该是‘引用’,就直接写英文好了。 此处不清楚,与<python cookbook>的4.1中,深浅拷贝 的区别。

#!/usr/bin/python
# Filename: reference.py print 'Simple Assignment'
shoplist = ['apple', 'mango', 'carrot', 'banana']
mylist = shoplist # mylist is just another name pointing to the same object! del shoplist[0] print 'shoplist is', shoplist
print 'mylist is', mylist
# notice that both shoplist and mylist both print the same list without
# the 'apple' confirming that they point to the same object print 'Copy by making a full slice'
mylist = shoplist[:] # make a copy by doing a full slice
del mylist[0] # remove first item print 'shoplist is', shoplist
print 'mylist is', mylist
# notice that now the two lists are different

35. 程序中使用的字符串都是str类的对象。

36. 调用系统命令 - 很容易引发严重错误,不推荐。

import os
os.system('ls')

37. os.sep: 目录分隔符,即在Linux、Unix下它是'/',在Windows下它是'\\',而在Mac OS下它是':'

38. “软件是长出来的,而不是建造的。

39. self。

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self

这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。

40. __init__方法。 __init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。

41. 下划线:

Python中所有的类成员(包括数据成员)都是 公共的 ,所有的方法都是 有效的 。

只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。这样就有一个惯例,如果某个变量只想在类或对象中使用,就应该以单下划线前缀。而其他的名称都将作为公共的,可以被其他类/对象使用。

记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。同样,注意__del__方法与 destructor 的概念类似。

42. 一个子类型在任何需要父类型的场合可以被替换成父类型,即对象可以被视作是父类的实例,这种现象被称为多态现象

43. Python不会自动调用基本类的Father.__init__(),即constructor,特别地,亲自专门调用它。

44. 如果在继承元组中列了一个以上的类,那么它就被称作 多重继承 。

45. 储存器(存储\取存储) - cPickle. pickle - 使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。这被称为 持久地 储存对象。

46. 命令行参数 - sys.argv

47.

  • os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'

  • os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。

  • os.getenv()os.putenv()函数分别用来读取和设置环境变量。

  • http://docs.python.org/2/library/os.html
    
    http://en.wikipedia.org/wiki/Environment_variable#Unix
  • os.listdir()返回指定目录下的所有文件和目录名。

  • os.remove()函数用来删除一个文件。

  • os.system()函数用来运行shell命令。

  • os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'

  • os.path.split()函数返回一个路径的目录名和文件名。

48. 一些特殊的方法,虽然我不知道什么时候用到,但是还是记下了。

名称 说明
__init__(self,...) 这个方法在新建对象恰好要被返回使用之前被调用。
__del__(self) 恰好在对象要被删除之前调用。
__str__(self) 在我们对对象使用print语句或是使用str()的时候调用。
__lt__(self,other) 当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。
__getitem__(self,key) 使用x[key]索引操作符的时候调用。
__len__(self) 对序列对象使用内建的len()函数的时候调用。

49. exec语句用来执行储存在字符串或文件中的Python语句。

>>> exec 'import os'
>>> exec 'os.name'
>>> exec 'print os.name'
posix

50. eval语句用来计算存储在字符串中的有效Python表达式。

>>> eval(2^3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: eval() arg 1 must be a string or code object
>>> eval('2^3')
1

51. assert语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个AssertionError

P.S: 我记得这玩意叫 断言??

>>> mylist = ['item']
>>> assert len(mylist) >= 1
>>> mylist.pop()
'item'
>>> assert len(mylist) >= 1
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AssertionError

52. repr函数用来取得对象的规范字符串表示。 P.S: 最好不要用 反引号。注意,在大多数时候有eval(repr(object)) == object

53. One more: python 可变数量的参数

def test(*argv, **argv1):
print argv
print argv1 test(2, 3, 4, a=2) # This is normally right.
test(2, 3, 4, { 1:2}) # calling **argv1 should not be used like this
test(2, 3, 4, { 1:2}, a=2, 2) # This is error.

补充:

1. Modules vs Package

  THIS explains very clearly.

  Module THIS

  Package THIS

  In a word, Package = Module * n (n>=1)

>>> print '{', 'OK'.center(20), '}'

OK - A byte of python - 读书笔记的更多相关文章

  1. Web Scraping with Python读书笔记及思考

    Web Scraping with Python读书笔记 标签(空格分隔): web scraping ,python 做数据抓取一定一定要明确:抓取\解析数据不是目的,目的是对数据的利用 一般的数据 ...

  2. python读书笔记-《A Byte of Python》中文第三版后半部分

    编辑器:windows,linux 不要用notepad,缩进糟糕 -------------- 5.18缩进 同一层次的语句必须有相同的缩进.每一组这样的语句称为一个块. i = 5 2  prin ...

  3. 流畅的Python读书笔记(二)

    2.1 可变序列与不可变序列 可变序列 list. bytearray. array.array. collections.deque 和 memoryview. 不可变序列 tuple. str 和 ...

  4. 流畅的python 读书笔记 第二章 序列构成的数组 列表推导

    列表推导是构建列表(list)的快捷方式,而生成器表达式则可以用来创建其他任何类型的序列.如果你的代码里并不经常使用它们,那么很可能你错过了许多写出可读性更好且更高效的代码的机会. 2.2.1 列表推 ...

  5. 【updating】python读书笔记-The Django Book2.0(for django1.4)

    原文:http://www.djangobook.com/en/2.0/frontmatter.html 译文:http://djangobook.py3k.cn/2.0/ 或者http://docs ...

  6. python读书笔记-《简明python教程》上

    1月15日 <简明python教程>上 基本结构: 基础概念+控制流+函数+模块+数据结构+面向对象+I/O+异常+标准库+其他   1.概念 1-0    退出python linux: ...

  7. Head First Python 读书笔记

    记录一下这段时间看<Head First Python>记录的一些小知识,只是记了很少一部分,有需要的话以后再添加吧. for循环的使用: for 目标标识符 in 列表: 处理代码 if ...

  8. Effective Python读书笔记

    有些位置可能翻译理解的不到位,各位看官如有疑问,欢迎留言赐教. Pythonic Thinking 大家经常用Pythonic来形容python语法风格的编程方式:简单优美,没有之一:通过import ...

  9. 流畅的python读书笔记-第十章-继承优缺点

    继承的优缺点 推出继承的初衷是让新手顺利使用只有专家才能设计出来的框架.--Alan Kay 子类化内置类型很麻烦 (如 list 或 dict)) ,别搞这种 直接子类化内置类型(如 dict.li ...

随机推荐

  1. Asp.Net原理Version1.0

    Asp.Net原理Version2.0 Asp.Net原理Version3.0_页面声明周期

  2. 【HDOJ】【2089】不要62

    数位DP cxlove基础数位DP第一题 用容斥把所有的不吉利数字去掉就得到吉利数字的数量= =(满足区间减法) //HDOJ 2089 #include<cmath> #include& ...

  3. 汇编语言中"[]"的用法

    "[]"的用法在"常见问题"已经有所说明,引用如下: 1.push dword ptr [024c1100] 压栈024c1100值的双字 2.cmp eax, ...

  4. What is the difference between Views and Materialized Views in Oracle?

    aterialized views are disk based and update periodically base upon the query definition. Views are v ...

  5. POJ 1456 Supermarket(贪心+并查集优化)

    一开始思路弄错了,刚开始想的时候误把所有截止时间为2的不一定一定要在2的时候买,而是可以在1的时候买. 举个例子: 50 2  10 1   20 2   10 1    50+20 50 2  40 ...

  6. POJ 1906

    #include <iostream> #include <string> #define MAXN 150 using namespace std; int _m[MAXN] ...

  7. Intent(二)

    以Android高级编程一书中的一个例子为例: 1, 创建一个ContactPicker项目,其中包含一个ContactPicker Activity package com.paad.contact ...

  8. 如何处理JSON中的特殊字符

    JSON 是适用于 Ajax 应用程序的一种有效格式,原因是它使 JavaScript 对象和字符串值之间得以快速转换.由于 Ajax 应用程序非常适合将纯文本发送给服务器端程序并对应地接收纯文本,相 ...

  9. http://www.yihaomen.com/article/java/302.htm

    http://www.yihaomen.com/article/java/302.htm

  10. cojs 简单的区间问题 解题报告

    新学了些弦图和区间图的新玩意,于是就想着出一道题目 其实这道题不用弦图和区间图的理论也是可以做的 首先考虑第一问,第一问是一个NOIP普及组水平的贪心 我们把区间按照右端点从小到大排序,之后从头到尾扫 ...