今天主要学习Python3的基础语法知识
1.注释
python使用#号来表示注释,在语句前面加上#号,解释器就知道了这句是注释
2.代码缩进
if a > 10: print(a)
在语句的末尾加上分号,下一行缩进(默认占4位),则表示改行代码与之前代码属于同一个代码块
3.python的数据类型
整数:0,1,100,-200,还包括十六进制,如0x5b
/:除 //:地板除 %:求余
两个整数相除是浮点数,两个整数进行地板除是整数,两个整数进行求余是整数
9/3 =》 3.0 9 // 3 =》3 9 % 3 => 0
浮点数:1.2,3.14
字符串:可以用单引号'',或者双引号""表示,字符串内部可以带有转义字符\,比如\r,\n,如果要输出\号,需要带两个\\
可以在前面带有r来表示忽略转义字符,r符号相当于C#里面的@符号,转义字符不转义
print("abc\nefg") => 打印出abc,然后换行,再打印efg
print(r"abc\nefg") => 打印出abc,然后打印\n,在打印efg,不会换行
布尔值:python的真和假,用True和False表示,首字母是大写,这个跟其他语言是不一样的,c#和java里面是true和false
布尔运算跟其他语言也不一样,不是通过&,||,!这些符号来操作,而是通过and与运算,or或运算,not非运算
空值:python的空,用None表示
4.变量
python是动态语言,变量的值不是固定的,可以动态变幻的,这个跟c#和java是不一样的
a = 10 a = "123"
变量a可以先赋值整数10,然后在赋值字符串123,这都是可以的
python的变量类似于引用类型,申明一个变量,其实是在内存中将变量指向一个内存中的地址,所以变量是不会变得,变得是他所指向的值,比如:
x = 'ABC' y = x x = 'XYZ' print(x) print(y) x >>> 'XYZ' y >>> 'ABC'
变量x首先指向内存中的'ABC',将x赋值给y,是将x的指向赋予y,变量y也指向'ABC',然后再让x指向'XYZ',所以最后输出的值,x和y是不一样的
5.常量
python的常量,我们默认用大写的字母来表示,比如:PI = 3.1415926 A = 10
6.编码
ascii编码只能表示字母,数字和一些符号,中文可以使用utf-8和gb2312来编码
python的文件建议统一采用utf-8来编码,我们的文件用utf-8编码,然后读取到内存以后,python解释器会转换为unicode编码,操作完成保存到文件再用utf-8编码
一个中文字符,utf-8编码占3个字节;一个中文字符,gb2312编码占2个字节
可以通过ord函数来获取某个字符的ascii编码,比如ord("a") >>> 97
可以通过chr函数来获取某个编码表示的字符,比如chr(97) >>> a
字符串经过加密以后可以转换为对应的字节码:
'ABC'.encode('ascii')
'中文'.encode('utf-8')
'中文'.encode('gb2312')
字节码经过解密以后可以转换为对应的字符串:
b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
b'\xd6\xd0\xce\xc4'.decode('gb2312')
在接口调用中经常会碰到对方返回过来的信息,中文内容会是一串字节码,这是因为经过utf-8或者gb2312加密了,只要做对应编码的解密就能看到中文了
可以通过len()函数获取字符串的长度,len("ABC") >>> 3
7.格式化
占位符: %d 整数 %f 浮点数 %s 字符串 %x 十六进制
在python中使用 % 号来进行占位操作
>>> 'Hello, %s' % 'world' 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('zhang', 100) 'Hi, zhang, you have $100.'
占位符可以表示占几位,数字的话可以表示精确到几位小数
%3d 占三位,但是空位不补0,%03d 占三位,空位补0,%.2f 精确到小数点后两位,这个会四舍五入
也可以使用format()函数来进行格式化
'Hello {0}, 开销占了{1:.2f}%'.format('zhang', 20.128) >>> Hello zhang, 开销占了20.13%
8.list和tuple
list:有序的集合,用中括号[]表示
names = ['zhang', 'wu', 'wang', 'lin']
从前到后顺序:0,1,2,3
从后往前顺序:-1,-2,-3,-4
append('chen') 添加元素,默认添加到末尾
insert(1, 'liao') 插入元素,在指定位置插入元素,后面的元素索引都向后移
pop() 默认删除末尾元素,会把删除的元素返回回来
pop(2) 可以指定删除的索引
list中的元素不限制类型,可以是整型,浮点型,布尔型,字符串
甚至可以把一个list添加到另外一个list,组成多为数组
names.append(['us',1,'au'])
tuple:有序的列表,元组,用小括号()表示
tuple的元素是不能变得,这个不能变,指的是指向不能变
如果元素是整型,字符串,那就不能改变
如果tuple里面有个元素是list,那么这个元素就必须是list,但是list里面的值是可变的
list和tuple都可以组成多维数组来读取
9.条件判断
if elif else,每个if和elif,else后面都是跟冒号
height = input("请输入你的身高:") weight = input("请输入你的体重:") height = float(height) weight = float(weight) bmi = weight / height if bmi < 18.5: print("过轻") elif bmi < 25: print("正常") elif bmi < 28: print("过重") elif bmi < 32: print("肥胖") else: print("严重肥胖")
10.循环
循环操作主要通过while,for x in list
计算1到10的求和
sum = 0 for x in range(1, 11): sum = sum + x print(sum)
sum = 0 n = 1 while n < 11: sum = sum + n n = n + 1 print(sum)
range()函数可以获得对应的整数序列
range(10)表示0到10,不包括10的整数序列,range(1,11)表示1到11的整数序列,不包括11,其实就是1到10
通过list方法,可以把range的序列转换为list:list(range(5)) >>> [0,1,2,3,4]
可以通过break跳出循环,通过continue跳出本次循环,直接进入下一个循环,用法跟c#和java的一样
11.字典dict
python的字典跟c#的一样,其实就是key-value的模式,不过使用不一样,python通过{}来表示,{"age": 30, "gender": "female", "sex": "love" }
dict的每个key都是不一样的,但是可以对一个key重复赋值,后面的赋值会替换前面的赋值
dict可以通过in或者get()方法来判断是否存在key
>>> 'zhang' in d False >>> d.get('zhang') >>> d.get('zhang', -1) -1
可以通过pop(key)的方法删除对应的key,这个方法会返回被删掉的key对应的value
dict的优点是,查找和插入速度快,而且这个速度不会因为key的增加而变慢,缺点是占用大量的内存
dict查找为什么快,这个有点跟我们去字典里面查找汉字差不多,先在索引表里面查找这个字对应的页码,
然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。
dict添加key,存放value 的时候,会先根据key计算这个key的哈希值,然后在内存中这个哈希所在的空间存入value,因为每个key都是不一样的,所以存放的地方都不一样
要保证key是不变的,那么key必须使用不可变的对象,所以可以使用整数,字符串这些不可变得,但是不能使用list,因为list是会变得
如果用list作为key,会报key无法计算哈希值的错
12.set
set和dict类似,只不过set不存放value,存的都是key,set里面的key都是不一样的
给set()函数新增一个list参数,就可以获取一个set
>>> s = set([1, 2, 3]) >>> s {1, 2, 3}
可以通过add(key)和remove(key)给set新增和删除key,重复添加key不会改变set
两个set可以做并集和交集的处理,交集就获取相同的key,并集就合并key,重复的key会被排除