看完《简明Python教程》后,记录下来的一些知识点:
1. python语句结尾不需要分号,但如果要在一个物理行使用多于一个的逻辑行,需要使用分号隔开。分号表示一个逻辑行(语句)的结束。
2. 注释使用#
3. *表示乘法,**表示幂乘。如:3*4=12,3**4=81
4. python3.0以后,没有raw_input函数,只有input函数,这个就相当于raw_input。通过input输入的任何数据都相当于是字符串,需要强制类型转换,比如需要输入整数,则应写为int(input("Enter an integer: ")),引号中的是一句提示信息。
5. print函数的用法变成了print(sth),而不再是print sth
6. python3.0以后,而且4/3=1.33333,不再是1,跟4.0/3的结果相同。//表示取整除,即结果只取商的整数部分,如4//3=1
7. <<左移,>>右移。如:2<<2=8, 8>>2=2
8. &按位与,|按位或,^按位异或,~按位翻转
9. 没有&&,||,!,使用and,or,not表示布尔的与或非
10. if(for等)语句结尾有个冒号,表示下面是if(for等)的语句块
11. for in 循环 在使用range的时候相当于在集合[x,y)中逐一使用集合中的每个元素。如for i in range(1,5):i是从1到4的,没有5。
12. range的默认步长是1,可以设置步长,如range(1,5,2),步长为2,取值为1,3
13. for i in range(1,5):等价于for i in [1,2,3,4]:之间用逗号隔开,不能用空格隔开,这点又与matlab不同。
14. [1,2,3,4]基本格式是这样,他们之间可以随便加空格,如[1, 2, 3, 4],[ 1,2, 3,4],[1 ,2,3,4]这些都是对的
15. python中print("input is",i,"cm")等价于java中的System.out.println("input is "+i+" cm") 这里java中要用加号连接组成字符串,python中不用,原因是函数定义的时候格式不一样,python中会自动在各部分之间加空格(因为sep选项默认为‘ ’,如果不需要,则可设置为sep=''),java不行,所以虽然第一句的is后面没有空格,cm前面也没有空格,但跟java的输出完全一样。c++的是cout<<"input is "<<i<<" cm"<<endl 与java类似
16. 函数通过def关键字定义,如def sayHello():下来就是函数体了
17. python简明教程中47页的使用局部变量的例子我做了修改,因为原例子里面将x作为参数传递进去了,这样虽然结果一样,但原因是值传递还是局部变量就不清晰了,如果python中没有值传递这一概念的话,原例子是清晰的,但我不知道有没有,文中没说,可能以后会在其他地方见到吧原代码:
def func(x):
print("x is",x)
x=2
print("Change local x to",x)
x=50
func(x)
print("x is still",x)
修改后代码:
def func():
x=2
print("Inside of func x is",x)
x=50
func()
print("x is now",x)
18. python中想要在子函数内使用子函数外面定义的变量,需要在子函数内使用关键字global,如global x 则意味着x是定义在这个函数外面的变量。与MATLAB类似。
19. python定义函数的时候可以给形参默认值,但有默认值的形参要放到没有默认值的形参的后面,这点和c++一样
20. python可以在函数参数赋值时打乱顺序赋值,这时需要显式地给出参数名字。如def func(a,b):... 复制时可以这样:func(b=10,a=20)
21. 三引号('''或""")指示一个多行的字符串,其中可以自由使用单引号与双引号。在python的函数的文档字符串中就使用了三引号。如下:(doc前后都是两个下划线,文档字符串必须在其他所有内容的前面,三引号内的格式建议写成下面这样的,当然其他的也能运行)def printMax(x,y):
'''Prints the Maximum of two numbers.
The two values must be integers.'''
x=int(x)
y=int(y)
if x>y:
print(x,"is maximum.")
else:
print(y,"is maximum.")
printMax(3,5)
print(printMax.__doc__)
22. python3.0以后的print如果想取消自动换行,使用如下结构:print("The first part is",end="")
23. print函数直接输出list的时候会带[],如果不想带[],可以使用for i in list:
24. 单个元素的元组这样使用:singleton=(2,)
25. 元组在print函数中使用:print("%s is %d years old"%(name,age))
26. 使用切片操作取得列表或其他序列的拷贝,如: mylist=shoplist[:]
27. 当在字符串中,不需要转义符时,可以在字符串前使用r或者R,如:r'This i\s a string.\n'