了解基本的Python语法,基本编程风格、标示符、变量、关键字、内存管理。
基本规则
语句和语法
Python语句中的一些基本规则和特殊字符:
#: 表示之后的字符为Python的注释
\n: 换行符,标准的行分隔符(通常一个语句一行)
\: 反斜扛,继续上一行,有时候句子太长了就用反斜扛来连着
;: 分号,将两个语句连接在一行中,句子短,时候适用
:: 冒号,将代码块的头部和区块体分开
语句(代码块)用缩进块来体现,而不像其它语言中用{}来体现
不同缩进深度,表示不同的代码块
Python文件以模块的形式组织,用import可以导入模块。
变量赋值
Python中,也是使用=做为赋值操作符。
name = "编程列车"
age = 20
x = 1
# 链式赋值
y = x = x + age
print(x,y)
# 21,21
增量赋值
增量赋值一般有:+=,-=,*=,/=,%=,<<=,>>=,^=,\=.
注意中间不要有空格。
x = 123
x += 1 #相当于 x = x + 1
y = 2
y *= 2
print(x,y) #(124,4)
多重赋值: x = y = z = "code"
多元赋值:
x,y,z = 1,'ddd',99: x = 1, y = "ddd",z = 99
x,y = ("name","age"): x = "name", y="age"
x,y = y,x: xy互换
标示符
标示符是计算机语言中允许作为名字的有效字符串集合。其中,有一部分是关键字,构成语言的标示符。这样的标示符是保留字,不能用于其他的用途,否则会引起错误,比如把True = 0用了True这个关键字,其他地方程序就可能出现异常(SyntaxError)。
合法的标示符:
第一个字符必须是字母或者下划线_;
剩下的可以是:字母,数字,下划线_;
大小写敏感的,Abc 和 abc 可不是同一个东西.
不能是数字开头哦!
关键字
关键字有很多,一般是在编程语言使用过程中,慢慢就会记住很多了。比如:
and,or,not
def,if,elif,else
while,for,in,pass
import, from,as
try,except
print,help,None,del,dir
lambda,raise,return,break,continue
内建的
除了关键字外,Python还可以在任何一级代码中使用内建(built-in)的名字集合。
虽然built-in不是关键字,但是应该把它当做"系统保留字",不做他用。
专用下划线标示符
_XXX: 不用from module import *导入的,相当于是模块内才用的
_XXX_: 系统定义名字
__XXX: 类中的私有变量
基本风格
注释、文档(__doc__)、缩进、选择标示符名称、风格指南,可以参考PEP8.
养成好的编程规范,效率上、代码质量上,都会有很大的提升。
内存管理
在python中:
变量无需实现声明;
变量无需指定类型;
程序员不用关心内存管理;
变量名会被"回收";
del 语句能够直接师傅资源:del obj这样obj就被释放了。
Python中,无需变量声明语句,变量名在第一次赋值时自动声明。
变量如果没赋值,如果调用就会报错。
>>> codelieche
Traceback (most recent call last):
File "", line 1, in
NameError: name 'codelieche' is not defined
>>> codelieche = 1
>>> codelieche
1
python还是动态类型的,比如:a = 123,现在a是int类型的,如果吧a = "123"这样a的类型就变成字符串型了。而在其它语言,比如C,java中语言声明了类型后,赋值不是这个类型的,就会报错。而Python就会自动变化类型。是不是觉得很酷,python酷炫的内容太多了,是的:人生苦短,我用Python.
引用计数
要保持追踪内存中的对象,Python使用了引用计数这一技术。也就是说Python内部记录着所有使用中的对象各有多少次引用。内部跟踪变量,被引用一次,计数就加一次。对每个对象各有多少个引用,简称引用计数器。
对象创建的时候,就创建了一个引用计数,这个对象不再需要的时候,也就是引用计数变为0的时候,它就会被垃圾回收[当然不是100%,立刻]。
判断b是不是a的引用,可以用a is b如果为True就表示是引用。
is其实是判断a,b的内存地址是否相等。查看内存地址用id(obj).
示例:
x = "codelieche"
y = x # "codelieche"这个字符串,x其实也是指向它的 引用加一次
z = y # 再 + 1
print(id(z)) #4538673648
# 这个数字是内存地址什么的,每次重新执行都是不同的
print(id(x)) # 4538673648
# z is x True
z = "new" # z不指向x了,x引用就减一次了
del y # 删除y,引用 - 1
x = 1 # x重新指向了,"codelieche" 引用又减一次
>>> id("codelieche")
4536726272
>>> x = "codelieche"
>>> y = x
>>> z = x
>>> id(x)
4536726272
>>> id(z)
4536726272
>>> z is x
True
>>> z = "new"
>>> id(z)
4535270576
>>> del y
>>> z is x
False
>>> x = 1
>>> id(x)
140237623834888