变量的命名规则
首字符只能是字母、下划线
系统的保留关键字是不能用作变量名
值类型与引用类型
由上图可以看出,int这种值类型不会随a的变化而改变,列表这种引用类型会随b的变化而改变
id这个方法可以得到变量在内存中的储存地址
列表的可变与元组的不可变
由上图可以看到,修改了列表的第一个元素的值,id方法获得的内存地址是没有改变的。
有上面的代码可以看到,元组和字符串一样,不能修改。
列表有个方法append可以添加元素,元组不能像列表一样用append方法来添加元素。
运算符号
** 表示开次方
Python没有++ 、-- 这种自增运算符
Python里面列表和元组也是可以比较的,比较的规则是从第一个元素和另一个变量的第一个元素对应比较。
在int float中 0被认为是False,非0 被认为是true
在str 列表 元组 集合 字典中 ,空的变量被认为是False 非空的变量被认为是true
由上面两张图可以看到
当非布尔类型参与逻辑运算的时候符合以下规律
由于and逻辑运算符需要判断and符合两边的变量才可得出结果,且判断顺序是从左到右,且返回结果要能代表最后的布尔结果,所以可以认为and逻辑运算后会倒序输出第一个符合结果的变量!
而or逻辑运算符,当第一个变量为true时,不需要判断第二个变量了,所以直接返回第一个变量,因为第一个变量可以代表这个逻辑运算的结果
有上图可以看到,成员运算符只对字典里的key操作,不是对value操作。
由上图可以看出is运算符和 比较运算符的== 很类似,都是只有值相等的时候返回true,值不相等的时候返回false,但is 和 == 的区别在哪里呢?
当a=1 b=1.0的时候,== 和 is返回的结果不相同了,由此可以看出,is比较的不是两个变量的值。
由上图可以看到 is运算符比较的是两个变量的内存地址是否相同,所以is也叫做身份运算符。
==是不会比较内存地址的,只会比较两个变量的值
由于集合是无序的,所以{1,2,3}和{2,1,3}在 == 这个比较运算符是比较中是一样的,他们的顺序并不影响他们的取值,所以结果才会是true,而is比较的是内存地址,所以返回结果肯定为false。
但由于元组是有序的,所以顺序会影响到他的取值,所以 == 这个比较运算符返回的结果是false,而is返回的还是false。
判断类型,可以用type方法和类型比较,也可以用isinstance方法比较,推荐后面的这种方法。
而且isinstance这个方法的第二个参数,可以传一个元组进去,表示只要变量a是元组里面的类型中的其中一种,就会返回结果true。
位运算符
按位与运算,比较的是二进制的数,如果两个数都为1,则返回1,如果两个数其中一个为0,则返回零,2的二进制数为10,3的二进制数为11,他们进行与运算,得到的结果为10,10转换成10进制就是2.
按位或运算,和与运算不同,他只有满足其中一个数为1,就会返回1,所以会返回11,11转换成10进制为3.
表达式的优先级
a or b and c 的优先级是先运算and再运算or的
not > and > or
Python可以用 pycharm vscode sublime 这三种IDE(集成开发环境)来开发,类似C# 用VS这种编程软件一样的
流程控制语句之条件控制
if else的语句是这么写的
在VScode里面 input可以在命令行接收用户的输入,类似C#控制台程序中的Console.ReadLine();
accou = "liuyuan"
password = '123456'
print('Please input account')
user_account = input()
print('Please input password')
user_password = input()
if account == user_account and password == user_password:
print('success')
else:
print('fail')
上面这些代码就是一些简单的if else的语句的一些运用,接收用户输入账号密码的代码。
Python中的常量只是形式意义上的一个常量,因为Python并没有任何手段来阻止你修改常量的值,并且常量的一些书写规范要全部大写字母。
在Python中,一个脚本文件就叫一个模块,一般Pylint的规范都要我们在前面加上一个模块的文档,在常量上面那一段注释掉的字符串就是对这个模块的一个说明文档。
pass是空语句、占位语句
上面两张图可以看到 if else有两种写法,elif 是把 else 和 下级代码块的 if 结合到一起了,大大简化了代码的简洁性。
While循环
while循环还可以配合else来使用
for循环
print函数里面可以加一个参数,end可以是给一个空字符串,就会在同一行打印出来,不给这个参数的话一般默认是换行字符。
for循环也是可以结合else来使用,会在循环体结束循环的时候来执行else代码块。
跳出循环用break或者continue
用break强制跳出循环,for else语句不会被执行
用continue强制跳出循环,for else语句会被执行
在Python里面也有像其他语言里面的for(i=0;i<10;i++)这样的固定次数的循环
就是通过range来生成一个0到10的一个序列,来给for in循环体使用
range函数并不会包含10,只会包含0到9
给range(0,10)加多一个参数,2表示步长,得到一个等差数列
如果需要倒序遍历,把第三个参数改成负数就可以了,上图就是一个例子
切片操作同样可以使用第三个参数来实现间隔步长的操作