首页 > 代码库 > 再次回味Python2——笔记

再次回味Python2——笔记

一、基本知识

1、一个值可以同时赋给几个变量:

>>> x = y = z = 0  # Zero x, y and z
>>> x
0
>>> y
0
>>> z
0

 

2、创建复数

>>> a=1+6j
>>> x=complex(1,3) # x=1+3j
>>>x.real
1
>>>x
.imag 
3

 

3、字符串

>>> spam eggs
spam eggs
>>> doesn\‘t
"doesn‘t"
>>> "doesn‘t"
"doesn‘t"
>>> "Yes," he said.
"Yes," he said.
>>> "\"Yes,\" he said."
"Yes," he said.
>>> "Isn\‘t," she said.
"Isn\‘t," she said.

字符串可以标识在一对三引号中: """ 或 ‘‘‘ 。三引号中,不需要行属转义,它们已经包含在字符串中。

hello = r"This is a."
print(hello)

字符串也可以被截取(检索)

Unicode

>>> uHello World !
uHello World !
>>> str(u"abc")
abc

 

4、列表

>>> a = [spam, eggs, 100, 1234]
>>> a
[spam, eggs, 100, 1234]

就像字符串索引,列表从 0 开始检索。列表可以被切片和连接

允许嵌套列表(创建一个包含其它列表的列表)

>>> q = [2, 3]
>>> p = [1, q, 4]
>>> len(p)
3
>>> p[1]
[2, 3]
>>> p[1][0]
2

 

5、for语句

Python 的 for 语句依据任意序列(链表或字符串)中的子项,按它们在序列中的顺序来进行迭代。

>>> # Measure some strings:
... a = [cat, window, defenestrate]
>>> for x in a:
...     print x, len(x)
...
cat 3
window 6
defenestrate 12
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(5, 10)
[5, 6, 7, 8, 9]
>>> range(0, 10, 3)
[0, 3, 6, 9]
>>> range(-10, -100, -30)
[-10, -40, -70]

 

6、定义函数

全局变量不能在函数中直接赋值(除非用 global 语句命名)

>>> def fib(n): 
...     """Print a Fibonacci series up to n."""
...     a, b = 0, 1
...     while a < n:
...         print a,
...         a, b = b, a+b

函数体的第一行语句可以是可选的字符串文本,这个字符串是函数的文档字符串,或者称为 docstring 。

  6.1、Lambda 形式

Lambda 形式可以用于任何需要的函数对象。

类似于嵌套函数定义,lambda 形式可以从外部作用域引用变量

>>> def make_incrementor(n):
...     return lambda x: x + n
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43

  6.2、文档字符串

第一行应该是关于对象用途的简介

如果文档字符串有多行,第二行应该空出来,与接下来的详细描述明确分隔。

Python 的解释器不会从多行的文档字符串中去除缩进,所以必要的时候应当自己清除缩进。

文档第一行通常空出,如果写了,__doc__格式不是很好

def test():
    """
    aaaaaaaaaaaaaaaaaaaa
    this is a test document!
    bbbbbbbbbbbbbbbbbbbb
    """
    pass

print test.__doc__
输出如下:
    aaaaaaaaaaaaaaaaaaaa
    this is a test document!
    bbbbbbbbbbbbbbbbbbbb
 

 

7、 插曲:编码风格建议

  • 使用 4 空格缩进,而非 TAB。

    在小缩进(可以嵌套更深)和大缩进(更易读)之间,4空格是一个很好的折中。TAB 引发了一些混乱,最好弃用。

  • 折行以确保其不会超过 79 个字符。

    这有助于小显示器用户阅读,也可以让大显示器能并排显示几个代码文件。

  • 使用空行分隔函数和类,以及函数中的大块代码。

  • 可能的话,注释独占一行

  • 使用文档字符串

  • 把空格放到操作符两边,以及逗号后面,但是括号里侧不加空格: f(1, 2) g(3, 4) 。

  • 统一函数和类命名。

    推荐类名用 驼峰命名, 函数和方法名用 小写_和_下划线。总是用 self 作为方法的第一个参数(关于类和方法的知识详见 初识类 )。

  • 不要使用花哨的编码,如果你的代码的目的是要在国际化 环境。 Python 的默认情况下,UTF-8,甚至普通的 ASCII 总是工作的最好。

  • 同样,也不要使用非 ASCII 字符的标识符,除非是不同语种的会阅读或者维护代码。

 

二、数据结构

1. 关于列表更多的内容

Python 的列表数据类型包含更多的方法。 这里是所有的列表对象方法:

  • list.append(x)  把一个元素添加到链表的结尾
  • list.extend(L  将一个给定列表中的所有元素都添加到另一个列表中
  • list.insert(ix)  在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引
  • list.remove(x)  删除链表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
  • list.pop([i])  从链表的指定位置删除元素,并将其返回。如果没有指定索引, a.pop() 返回最后一个元素。元素随即从链表中被删除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。)
  • list.index(x)  返回链表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
  • list.count(x)  返回 x 在链表中出现的次数。
  • list.sort()  对链表中的元素就地进行排序
  • list.reverse()  就地倒排链表中的元素

 

再次回味Python2——笔记