首页 > 代码库 > python 学习笔记

python 学习笔记

1.操作符

与Java和C中十分类似, +(加), -(减), *(乘), /(除), %(求余), **(指数运算), = (赋值).以及减便运算,如 +=, -=, *=和/= 等.
赋值运算与其他语言一致.
逻辑操作
> < <= >= != ==与其他语言一样.
不一样的有not逻辑非,and逻辑与和or逻辑或.

2.注释与文档

一行当中,从#开始地方就是注释.不会影响下一行.
""引号放在文件的开头,函数的开头或者一个类的开头,就是文档注释,与Java中的/** ... */作用和目的是一样的.

3.折行

如果一行太长了,写不下了,就需要在下一行接着写,这时可以使用\来告诉Python,下一行继续.

4.一行写多个语句

Python是一个语句放在一行,行尾可以选择性的加上;但如果想在一行放多个语句,就需要用;来分隔语句:
a = 1; b = 2; c = 3;
虽然这在语法上可行,但不是一个好习惯,绝大多数的编程规范都是要一行写一个语句.

5.List和Tuple

这就是Java或C中的数组.它是一个容器,能用来顺序的,以整数索引方式检索, 存储一组对象.List用[]来表示,如[1, 2, 3]就是一个List;而Tuple用()来表示,如(3, 4, 5)就是一个Tuple.它们的区别在于List是可变的;而Tuple是不可变的.也就是说不可以增,删和改.
索引方式除了与Java一样的以一个整数下标方式外,还可以指定开始,结束和步长,和使用负索引来分割List:
通用语法格式是:list[start:end:step]

  • list[index] --- 返回第(index+1)个元素,受C语言影响,下标亦是从0开始
  • list[start:end] --- 返回从start开始,到end-1,也就是list[start], list[start+1].....list[end-1]
  • list[start:end:step] --- 与上面类似,只不过每隔step取一个
  • list[:end]  ---- 缺省的开端是0
  • list[start:] ---- 缺省的结尾是len(list),或者-1
负数索引更是方便,它与正数的对应关系为:
正数索引   0    1      2      3
数组元素  [1]   [3]    [5]    [7]
负数索引  -4    -3      -2    -1
>>> a = [1, 3, 5, 7];  
>>> a[0]  
1  
>>> a[3]  
7  
>>> a[-1]  
7  
>>> a[-2]  
5  
>>> a[0:3]  
[1, 3, 5]  
>>> a[1:3:2]  
[3]  
>>> a[0:3:2]  
[1, 5]  
>>> a[0:-1:2]  
[1, 5]  
>>>

List是一个对象,它有一此内置的方法,如:

  • in 和 not in
>>> 3 in a  
True  
>>> 8 in a  
False  
>>> 8 not in a  
True  
>>>
  • 符号+
    >>> a + [9, 11]  
    [1, 3, 5, 7, 9, 11]
  • 重复*
    >>> a * 2  
    [1, 3, 5, 7, 1, 3, 5, 7]  
    >>>

5.字符串

字符串就是一个字符的数组,List的操作都可以对String直接使用.也就是符合以上的操作方式:

>>> str = hello, world  
>>> str[0:3]  
hel  
>>> str[0:3:2]  
hl  
>>> str[-1]  
d

6.字串格式化符%

这是一个类似C语言printf,

语句是:formats % (var1, var2,....)

>>> "Int %d, Float %d, String ‘%s‘" % (5, 2.3, hello)  
"Int 5, Float 2, String ‘hello‘"  
>>>

7.字典

用于以Key/Value方式存储的容器.更改方式为dict[key] = new_value;索引方式为dict[key].

dict.keys()方法以List形式返回容器中所有的Key;dict.values()以List方式返回容器中的所有的Value:

>>> box = {fruits: [apple,orange], money: 1993, name: obama}  
>>> box[fruits]  
[apple, orange]  
>>> box[money]  
1993  
>>> box[money] = 29393  
>>> box[money]  
29393  
>>> box[nation] = USA  
>>> box  
{money: 29393, nation: USA, name: obama, fruits: [apple, orange]}  
>>> box.keys()  
[money, nation, name, fruits]  
>>> box.values()  
[29393, USA, obama, [apple, orange]]  
>>>

ps:box.keys()和 box.values() 输出的结果并不是按照逻辑顺序的。

8. if语句

>>> a = 3; b = 4; c = 5;  
>>> if a == b and a != c:  
... print "Are you sure"  
... elif (a == c and b == c):  
... print "All equal"  
... else:  
... print "I am not sure"  
...   
I am not sure  
>>>

大笑

9.while

>>> int i=0
SyntaxError: invalid syntax哭泣的脸
>>> i=0
>>> while i<3:
    print ydd!
    i=i+1

ydd!
ydd!
ydd!

10.for

>>> a=abcdef
>>> for i in a:
    print i

a
b
c
d
e
f

11.数组运算

格式为:

list = [expression for var in list condition]

>>> s=[1,2,3,4,5]
>>> s
[1, 2, 3, 4, 5]
>>> [x*3 for x in s if x%2==0]
[6, 12]

12.函数

如何定义函数

def function_name(args):
      function_body;

调用函数的方式function_name(formal_args):

13.设置为当前路径

>>> import os
>>> os.getcwd()
D:\\Python27
>>> os.chdir(e:\\)
>>> os.getcwd()
e:\\
>>>

14.lambda函数

它没有名字,只有参数和表达式,

>>> d= lambda x: x*x;
>>> d(2)
4

lambda最大的用处是用作实参:

>>> def iter(func, list):  
... ret = [];  
... for var in list:  
... ret.append(func(var));   #func 在这里就是x*x
... return ret;  
...   
>>> iter(lambda x: x*x, a)  
[0, 1, 4, 9]  
>>>
>>> d(2)
4
>>> d
<function <lambda> at 0x01F33030># 因为是作为实参,很明显地址是随机分配的
>>> d= lambda x:x*x
>>> d(2)
4
>>> d
<function <lambda> at 0x01F2FC70>
>>>

15.print

print与%结合更为强大:

print formats % (var1, var2, ...):

>>> print "today is %d, welcome %s" % (2013, alex);  
today is 2013, welcome alex  
>>>

16.range

  • range([start], stop, [step]) --- 生成一个整数列表,从,start开始,到stop结束,以step为步长
  • >>> range(4)  
    [0, 1, 2, 3]  
    >>> range(1,4)  
    [1, 2, 3]  
    >>> range(1,4,2)  
    [1, 3]  
    >>>