1. 注释 #号,三引号
1.注释的作用:
注释符号# 右边的所有东西都被当做说明文字,而不是真正要执行的程序,只起到辅助说明作用
2.注释分类:
#单行注释 ''' 多行注释 多行注释 多行注释 '''
3.谈谈单引号,双引号,三引号,#号的区别:
单引号和双引号的用法相同: 都是用来表示字符串的一行的字符串,如果需要多行字符串则需要加连接符
三引号则可以表示长字符串(多行字符串),也可以表示多行注释
#号则是单行注释
#! 就是指定运行这个py文件的解释器,同时给这文件添加可执行权限就可以使用"./ + 文件名"直接运行该.py文件
4.为什么要同时保留,单引号和双引号呢?
因为如果字符串里面包含单引号的话,那么最外层的引号则要使用双引号,或者内层的单引号前添加转义字符['\']
2.标识符的规则
1. 标识符的定义
标识符是自己定义的,如变量名 、函数名等
2. 标识符规则
标识符是由字母,下划线和数字组成,且不能以数字开头
3. 命名规则
3.1 小驼峰
3,2 大驼峰
3.3 下划线
符合PEP8规则
4. 关键字
关键字,是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符
4.1 查看系统 关键字
import keyword keyword.kwlist
结果:
and as assert break class continue def del elif else except exec finally for from global if in import is lambda not or pass print raise return try while with yield
3. 运算符算术运算符:主要用于两个对象算数计算(加减乘除等运算)
比较(关系)运算符:用于两个对象比较(判断是否相等、大于等运算)
赋值运算符:用于对象的赋值,将运算符右边的值(或计算结果)赋给运算符左边。
逻辑运算符:用于逻辑运算(与或非等)。
位运算符: 对Python对象进行按照存储的bit操作。
成员运算符:判断一个对象是否包含另一个对象。
身份运算符:判断是不是引用自一个对象
1. 算术运算符
算数运算符描述实例+加 - 两个对象相加数字 或 字符串相加假设变量: a=10,b=20,a + b 输出结果 30>>> a = 10>>> b = 15>>> a + b25>>> a = 'ni'>>> b = 'hao'>>> a + b'nihao'
-减 - 得到负数或是一个数减去另一个数仅适用于 数字假设变量: a=10,b=20,a - b 输出结果 -10>>> a = 10>>> b = 3>>> a - b7
*乘 - 两个数相乘或是返回一个被重复若干次的字符串假设变量: a=10,b=20,a * b 输出结果 200>>> a = 2>>> b = 10>>> a * b20
/除 - x除以y假设变量: a=10,b=20,b / a 输出结果 2>>> a = 2>>> b = 10>>> b / a5.0
%取模 - 返回除法的余数假设变量: a=10,b=20,b % a 输出结果 0>>> a = 2>>> b = 10>>> b % a0
**幂 - 返回x的y次幂假设变量: a=10,b=20,a**b 为10的20次方, 输出结果 100000000000000000000>>> a = 2>>> b = 10>>> a ** b1024
//取整除 - 返回商的整数部分假设变量: a=10,b=20,9//2 输出结果 4 , 9.0//2.0输出结果 4.0>>> a = 2>>> b = 10>>> b // a5
2. 比较运行符
比较运算符描述实例==等于 - 比较对象是否相等假设变量: a=10,b=20,(a == b) 返回 False。>>> a = 2>>> b = 10>>> a == bFalse
!=不等于 - 比较两个对象是否不相等假设变量: a=10,b=20,(a != b) 返回 true.>>> a = 2>>> b = 10>>> a != bTrue
<>不等于 - 比较两个对象是否不相等Python3.6中没有这个操作符
>大于 - 返回x是否大于y假设变量: a=10,b=20,(a > b) 返回 False。>>> a = 2>>> b = 10>>> a > bFalse
<小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。假设变量: a=10,b=20,(a < b) 返回 true。>>> a = 2>>> b = 10>>> a < bTrue
>=大于等于 - 返回x是否大于等于y。假设变量: a=10,b=20,(a >= b) 返回 False。>>> a = 10>>> b = 10>>> a >= bTrue
<=小于等于 - 返回x是否小于等于y。假设变量: a=10,b=20,(a <= b) 返回 true。>>> a = 10>>> b = 10>>> a <= bTrue
3.赋值运算符
赋值运算符描述实例=简单的赋值运算符假设变量: a=10,b=20,c = a + b 将 a + b 的运算结果赋值为 c>>> a = 10>>> a10>>> a = 10 + 5>>> a15
+=加法赋值运算符假设变量: a=10,b=20,c += a 等效于 c = c + a>>> a = 0>>> a += 1>>> a1>>> a += 10>>> a11>>> a = 'a'>>> a += 'b'>>> a'ab'
-=减法赋值运算符假设变量: a=10,b=20,c -= a 等效于 c = c - a>>> a = 10>>> a -= 1>>> a9
*=乘法赋值运算符假设变量: a=10,b=20,c *= a 等效于 c = c * a>>> a = 2>>> a *= 10>>> a20>>> a = 'z'>>> a *= 5>>> a'zzzzz'
/=除法赋值运算符假设变量: a=10,b=20,c /= a 等效于 c = c / a>>> a = 10>>> a /= 2>>> a5.0
%=取模赋值运算符c %= a 等效于 c = c % a>>> a = 10>>> a %= 3>>> a1
**=幂赋值运算符c **= a 等效于 c = c ** a>>> a = 2>>> a **= 10>>> a1024
//=取整除赋值运算符c //= a 等效于 c = c // a>>> a = 11>>> a //= 2>>> a5
4.逻辑运算符
(0、''、[]、()、{}、None、False) 均为 false
逻辑运算符逻辑表达式描述实例andx and y布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。>>> a = 0>>> b = 1>>> a and b0>>> a = 'a'>>> a and b1a = 10 , b =20(a and b) - - -> 20(b and a) - - -> 10都为真,返回最后一个值a = 0 , b = 10只要有1个数为0返回值都为0
orx or y布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。>>> a = 0>>> b = 1>>> a or b1(a or b) 返回 10。有一个值为真,就返回该值都为假,则返回最后一个假
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。>>> a = 0>>> not aTruenot(a and b) 返回 False
5.位运算符
位运算符描述实例&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释: 0000 1100>>> a=1>>> b=2>>> a&b0>>> b=3>>> a&b1
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。只要有1 就 为 1. 对应的位都为0才为0(a | b) 输出结果 61 ,二进制解释: 0011 1101>>> a = 1>>> b = 2>>> a|b3
^按位异或运算符:当两对应的二进位相异时,结果为1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001>>> a = 1>>> b = 3>>> a^b2
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。>>> a = 0>>> ~a-1>>> a = 1>>> ~a-2
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。a=2,a << 2 输出结果 8 ,二进制解释:0000 0010向右移两位,0000 0100。>>> a = 2>>> a << 28
>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111>>> a = 16>>> a >> 18
6.成员运算符
成员运算符描述实例in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。>>> a = 'a'>>> b = 'cba'>>> a in bTrue>>> b = list(b)>>> b['c', 'b', 'a']>>> a in bTrue
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。>>> a = 'a'>>> b = 'cba'>>> a not in bFalse>>> b = list(b)>>> b['c', 'b', 'a']>>> a not in bFalse
7. 身份运算符
身份运算符描述实例isis是判断两个标识符是不是引用自一个对象x is y, 如果 id(x) 等于 id(y) , is 返回结果 1>>> a = 'a'>>> b = 'b'>>> a is bFalse>>> b = 'a'>>> a is bTrue>>> id(a)2422111596248>>> id(b)2422111596248
is notis not是判断两个标识符是不是引用自不同对象x is not y, 如果 id(x) 不等于 id(y). is not返回结果 1>>> a = 'a'>>> b = 'b'>>> a is not bTrue>>> b = 'a'>>> a is bFalse>>> id(a)2422111596248>>> id(b)2422111596248
重要运算符说明
join和符号”+“区别
建议:字符串拼接操作尽量多用join,而减少用”+“
join操作时会先计算字符操作所用到的空间总和大小,然后申请内存。然后进行字符串连接操作。所以join的时间复杂的近似O(n)。
+操作符连接操作符时,由于字符串是不可变对象,所以多个字符串拼接操作时从前向后的依此计算,用前一次的计算结果再和下一个字符串拼接。所以每次操作都需要申请一块新的内存。举例:S1+S2+S3+…Sn,实际过程是:1、先申请一块内存;2、将S1、S2复制到这块内存中(这样这块内存就是S1+S2);3、继续第一步申请内存;4、继续把第二步的内存内容和S3复制到第三步申请的内存。然后重复第一步到第二步至计算到Sn。所以操作符”+“的时间复杂的近似O(n^2)
链接字符串数量join操作消耗时间+操作消耗时间30.0110838413238525390.02231597900390625
100.0140948295593261720.05936312675476074
1000.14459300041198730.6129770278930664
10001.3406910896301276.07816481590271
1000013.94255495071411161.60126209259033
is和”==“区别
is是比较对象是否相同(is表示对象标识符即object identity),即用id()函数查看的地址是否相同,如果相同则返回True,如果不同则返回False。is不能被重载。
”==“是比较两个对象的值是否相等,此操作符内部调用的是”__eq__()“方法。所以a==b等效于a.__eq__(b),所以”==“可以被重载。