变量、运算符与数据类型
GitHub:https://github.com/Toplht/python-17-days(一起完善、欢迎pull request!)
1. 注释
- 在 Python 中,单行注释用
#
,多行注释用''' '''
#【例子】单行注释
print("Hello world!")
#Hello world!
#【例子】多行注释
'''
飞流直下三千尺
疑是银河落九天
'''
2. __name__属性的作用
Python中的模块(.py文件)在创建之初会自动加载一些内建变量,__name__就是其中之一。Python模块中通常会定义很多变量和函数,这些变量和函数相当于模块中的一个功能,模块被导入到别的文件中,可以调用这些变量和函数。那么这时 __name__ 的作用就彰显了,它可以标识模块的名字,可以显示一个模块的某功能是被自己执行还是被别的文件调用执行,假设模块A、B,模块A自己定义了功能C,模块B调用模块A,现在功能C被执行了:
如果C被A自己执行,也就是说模块执行了自己定义的功能,那么 __name__==’__main__’
如果C被B调用执行,也就是说当前模块调用执行了别的模块的功能,那么__name__==‘A’(被调用模块的名字)
其实换一种说法也就是表示当前程序运行在哪一个模块中
3. 运算符
Python支持多种运算符,例如:算术运算符、比较运算符、逻辑运算符、位运算符、成员运算符、身份运算符、赋值运算符
运算符 | 功能说明 |
---|---|
[]、[:] | 下标、切片 |
+ | 算术加法,列表、元组、字符串合并与连接,正号 |
- | 算术减法,集合差集,相反数 |
* | 算术乘法,集合交集 |
/ | 算术除法 |
// | 求整商,如果操作数中有实数,结果为实数形式的整数 |
% | 求余数,字符串格式化 |
** | 幂运算 |
<、<=、>、>=、==、!= | (值)大小比较,集合包含关系比较 |
or、and、not | 逻辑或、逻辑与、逻辑非 |
in、not in | 成员测试 |
is、is not | 对象同一性测试,即测试是否为同一个对象或内存地址是否相同 |
|、^、&、<<、>>、~ | 位或、位异或、位与、左移位、右移位、位求反 |
&、|、^ | 集合交集、集合并集、对称差集 |
@ | 矩阵相乘运算符 |
- 赋值运算符
赋值运算符应该是最为常见的运算符,它的作用是将右边的值赋给左边的变量。下面的例子演示了赋值运算符和复合赋值运算符的使用。
#赋值运算符和复合运算符
a = 10
b = 3
a += b # 相当于:a = a + b
a *= a + 2 # 相当于:a = a * (a + 2)
print(a) # 算一下这里会输出什么,答案是:13*15=195
- 比较运算符
比较运算符有时也称为关系运算符,包括==、!=、<、>、<=、>=,没有什么好解释的,大家一看就能懂,唯一需要提醒的是比较相等用的是==,请注意这个地方是两个等号,因为 =是赋值运算符,我们在上面刚刚讲到过,==才是比较相等的比较运算符。比较运算符会产生布尔值,要么是True要么是False。
- 逻辑运算符
逻辑运算符有三个,分别是and、or和not。and字面意思是“而且”,所以and运算符会连接两个布尔值,如果两个布尔值都是True,那么运算的结果就是True;左右两边的布尔值有一个是False,最终的运算结果就是False。相信大家已经想到了,如果and左边的布尔值是False,不管右边的布尔值是什么,最终的结果都是False,所以在做运算的时候右边的值会被跳过(短路处理),这也就意味着在and运算符左边为False的情况下,右边的表达式根本不会执行。or字面意思是“或者”,所以or运算符也会连接两个布尔值,如果两个布尔值有任意一个是True,那么最终的结果就是True。当然,or运算符也是有短路功能的,在它左边的布尔值为True的情况下,右边的表达式根本不会执行。not运算符的后面会跟上一个布尔值,它的作用是得到与该布尔值相反的值,也就是说,后面的布尔值如果是True运算结果就是False,而后面的布尔值如果是False则运算结果就是True。
#比较运算符和逻辑运算符的使用
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not (1 != 2)
print