Python学习笔记(一)基本特性

时间:2022-07-02 19:18:59

根据廖雪峰的Python3教程整理记录

输入输出

input(), print()

Python3中的print要加上括号,成了一个函数

数据类型和变量

  • 字符串

字符串使用单引号或者双引号基本没区别。如果字符串不转义可以使用r”将字符串圈起来

  • 布尔值

True False大小写

  • 空值

Python中的空值是None

  • Python是动态语言,因此可给一个变量反复赋值不同类型的值

  • 浮点除/,整数除(地板除)//,求余%

字符串和编码

这一节大部分对我来说就是比较新的知识了,之前做项目使用MFC大都直接用CString类型 ,没有过多关注过编码。

编码

  • ASCII编码是1个字节,Unicode编码通常是2个字节,因此Unicode所能表示的字符比ASCII要多

  • ASCII转化为Unicode,在前边补8个0就可以。但对于ASCII可以表示的字符使用Unicode表示,就造成了浪费

  • 因此可变长编码的UTF-8编码就出现了,ASCII自然可以被看做UTF-8的一部分,UTF-8兼容性很高

  • 计算机内存中统一使用Unicode,需要保存到硬盘或者传输时,转换为UTF-8。很多网页也是用UTF-8

Python中的字符串

  • 单字符使用ord()获取整数编码,chr()把编码转化为字符

  • str.endcode('格式')可以将str编码为指定格式

  • len()计算字符数。如果是ASCII或者UTF-8这样的bytes,计算字节数

  • 通常在Python源代码前加上以下两句,第一句是在Linux/OS X中执行用的,Windows可以忽略;第二句是让Python解释器按utf-8编码读取源代码。因此在编辑代码的时候,所使用的文本编辑器要是utf-8 without bom的

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

list和tuple

Python基础的重头戏之一来啦

list

list和c++中的stl::vector很像,笔者有一定的stl::vector基础,因此这里只记录新内容

  • list中的元素类型可以不同:L = ['Apple', 123, True]

  • 空list: L = []

tuple

  • 元组tuple一旦初始化不可修改,自然也没有append()insert()方法。为了保证数据安全性,能用tuple尽量用tuple

  • 空tuple: t = ()

  • 歧义情况 t = (1),这种情况下()被Python认为是是小括号,因此t就是int 1,不是tuple。如果要定义只有一个元素的tuple,要加一个逗号 t = (1,),Python输出时也会如此显示以免你误解

  • tuple只是指向不变。如果内部元素有可变元素如list,则可以改变元素内容

条件判断

Python的条件语法和C++有所不同。特别低,Python极度强调缩进,缩进表示着代码的嵌套关系

if 条件1:
执行1
elif 条件2:
执行2
else:
执行3

循环

for

for x in list:#如果list太长可以用range(n)生成0~n-1的整数序列。不过如果要输出range(n)的话需要list(range(n))
do something

while用法不再赘述

dict和set

Python基础的又一个重头戏来啦

dict

查找速度非常快 d = {'key1': value1, 'key2': value2} 。也可以通过key放入value d['key1'] = value1 可以对一个key重复赋值,不过新值的会把旧值冲掉。dict内部元素的顺序和放入顺序无关

判断key是否在dict中,可以使用’key’ in d可以返回布尔值,使用d.get('value', n)返回不在的指定值,缺省None

删除可以使用d.pop('key'),对应的value自然也会删除掉

dict的key是不可变对象,因此list不能作为key

set

类似集合概念,无重复,无顺序,可以做交(&)并(|)运算。初始化要用set(),参数只能是一个list,输出会是{key1, key2, ...},s.add(key)添加元素,s.remove(key)删除元素