注释符号# 右边的所有东西都被当做说明文字,而不是真正要执行的程序,只起到辅助说明作用
#单行注释 ''' 多行注释 多行注释 多行注释 '''
单引号和双引号的用法相同: 都是用来表示字符串的一行的字符串,如果需要多行字符串则需要加连接符
三引号则可以表示长字符串(多行字符串),也可以表示多行注释
#号则是单行注释
#! 就是指定运行这个py文件的解释器,同时给这文件添加可执行权限就可以使用"./ + 文件名"直接运行该.py文件
因为如果字符串里面包含单引号的话,那么最外层的引号则要使用双引号,或者内层的单引号前添加转义字符['\']
标识符是自己定义的,如变量名 、函数名等
标识符是由字母,下划线和数字组成,且不能以数字开头
3.1 小驼峰
3,2 大驼峰
3.3 下划线
符合PEP8规则
关键字,是python已经使用的了,所以不允许开发者自己定义和关键字相同的名字的标识符
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
算数运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加数字 或 字符串相加 | 假设变量: 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 |
比较运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | 假设变量: 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 |
赋值运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | 假设变量: 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 |
(0、''、[]、()、{}、None、False) 均为 false
逻辑运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。>>> a = 0>>> b = 1>>> a and b0>>> a = 'a'>>> a and b1 | a = 10 , b =20(a and b) - - -> 20(b and a) - - -> 10都为真,返回最后一个值a = 0 , b = 10只要有1个数为0返回值都为0 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。>>> a = 0>>> b = 1>>> a or b1 | (a or b) 返回 10。有一个值为真,就返回该值都为假,则返回最后一个假 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。>>> a = 0>>> not aTrue | not(a and b) 返回 False |
位运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为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 |
成员运算符 | 描述 | 实例 |
---|---|---|
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 |
身份运算符 | 描述 | 实例 |
---|---|---|
is | is是判断两个标识符是不是引用自一个对象 | 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 not | is 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的时间复杂的近似O(n)。
+操作符连接操作符时,由于字符串是不可变对象,所以多个字符串拼接操作时从前向后的依此计算,用前一次的计算结果再和下一个字符串拼接。所以每次操作都需要申请一块新的内存。举例:S1+S2+S3+…Sn,实际过程是:1、先申请一块内存;2、将S1、S2复制到这块内存中(这样这块内存就是S1+S2);3、继续第一步申请内存;4、继续把第二步的内存内容和S3复制到第三步申请的内存。然后重复第一步到第二步至计算到Sn。所以操作符”+“的时间复杂的近似O(n^2)
链接字符串数量 | join操作消耗时间 | +操作消耗时间 |
---|---|---|
3 | 0.011083841323852539 | 0.02231597900390625 |
10 | 0.014094829559326172 | 0.05936312675476074 |
100 | 0.1445930004119873 | 0.6129770278930664 |
1000 | 1.340691089630127 | 6.07816481590271 |
10000 | 13.942554950714111 | 61.60126209259033 |
is是比较对象是否相同(is表示对象标识符即object identity),即用id()函数查看的地址是否相同,如果相同则返回True,如果不同则返回False。is不能被重载。
”==“是比较两个对象的值是否相等,此操作符内部调用的是”__eq__()“方法。所以a==b等效于a.__eq__(b),所以”==“可以被重载。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。