Python notes(1)-string and encoding

转义字符\(用法和C++差不多) 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r’’表示’’内部的字符串默认不转义

>>> print(r'\\\t\\')
\\\t\\

Python变量命名法与C++一致,区分大小写 在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量 (这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错) 当我们写:

a = 'ABC'

Python解释器 在内存中创建了一个’ABC’的字符串 在内存中创建了一个名为a的变量(指针?),并把它指向’ABC’。 (这就是可以随便乱赋值的原因吗) 空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。(和C++一致) 在Python中,通常用全部大写的变量名表示常量:

PI = 3.14159265359

/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:

>>> 9 / 3
3.0

还有一种除法是//,称为地板除,两个整数的除法仍然是整数:

>>> 10 // 3
3

%用法在计算中与C++一致 Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的 Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大) 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符 注意区分’ABC’和b’ABC’,前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。 以Unicode表示的str通过encode()方法可以编码为指定的bytes

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'

要计算str包含多少个字符,可以用len()函数 如果是bytes, len()函数计算的是字节数 在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

#!/usr/bin/env python3    //为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释
# -*- coding: utf-8 -*-    //第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则在源代码中写的中文输出可能会有乱码

%用来格式化输出的字符串 占位符 替换内容 %d 整数 %f 浮点数 %s 字符串 %x 十六进制整数 其中%_d表示占_位(表示填入的数)(当为0开头的数表示用0代替空格填充) 为浮点数时%._f表示小数点后保留_位(小数点前与%d一致) 如果不确定应该用什么,用%s把任何数据类型转换为字符串 字符串中有%时,用%%将其转义(此时\转义无效)