注释 # 标注的文本
1.单行注释以 # 开头
2.多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来
如1:
# 这是一个注释
print("Hello, World!")
如2:3个单引号 '''
#!/usr/bin/python3
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print("Hello, World!")
如3:3个双引号
#!/usr/bin/python3
"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
print("Hello, World!")
数字
1.整数,不区分long和int
进制 0xa 0o10 0b10
bool 2个值True、False
2.浮点数
1.2、3.1415、-0.12、1.46e9等价于1.46*(10 的9次方)
3.复数 1+2j
字符串
1、使用'"单双引号引用的字符的序列
2、'''和"""单双三引号,可以跨行、可以在其中自有的使用单双三引号
3、在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理
4、转义序列(转义字符)
\\ (用本来\的意思) \t(Tab键) \r (回车) \n (换行符) \' (不代表界定符,代表本身') \"
前缀r,把里面的所有字符当普通字符对待
4.缩进
未使用C语言的花括号,而是采用缩进的方式表示层次关系
约定使用4个空格表示缩进
标识符
1.一个名字,用来指代一个值
2.只能字母,下划线和数字
3.只能以字母或下划线开头
4.不能是python的关键字(保留字),例如def、class、True就不能作为标识符
5.Python是大小写敏感的
约定:(不成文的规定)
不允许使用中文
不允许使用歧义单词,例如 class_
在python中不要使用下划线开头的标识符
python保留字
保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
常量
1.一旦赋值就不能改变值的标识符
2python中无法定义常量
字面常量
一个单独的量,例如12、"abc"、'2341556514.03e-9'
变量
赋值后,可以改变值的标识符
运算符
算数运算符
+ - * / % **(多少次方)
自然除/结果是浮点数,整除// 注:2.x中 /和//都是整除
位运算符
& 位与
| 位或
~ 按位取反
^ 异位
<< 位左移
>> 位右移
常用方式:乘除2的倍数,32 // 4相当于 32 >> 2 (32的2进制往右移2位)
12,0xc , 0o14 ,0b1100
比较运算符
== != > < >= <=
返回一个bool值(True Flase)
1 < '1' 1 == '1'
链式比较操作符
4 > 3 > 2 4 > mynumber >= 1
逻辑运算符
与 或 非 ( and or not )
短路运算符
and如果第一个表达式为Flase,后面就没有必要计算了,这个逻辑表达式一定是Flase
or 如果一个表达式为True,后面就没有必要计算了,这个逻辑表达式一定是True
赋值运算符
a = min(3,5)
+= -= *= /= %= 等
x = y = z = 10
成员运算符
in、not in
身份运算符
is、is not
表达式Expression
由数字、符号、括号、变量等的组合
算数表达式
逻辑表达式
赋值表达式
python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义
内存管理
变量无须事先声明,也不需要知道类型
动态语言的特性
编程中一般无须关系变量的存亡,也不用关心内存的整理
python使用引用计数记录所有对象的引用数
当对象引用数变为0,它就可以被垃圾回收GC
计数增加:赋值给其他变量就增加引用计数,例如 x=3;y=x
计数减少:
函数运行结束时,局部变量就会自动销毁,引用计数减少
变量被赋值给其他对象,例如x=3,y=x,x=4
有关性能的时候,就要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求