Skip to content

python

数据类型

基本类型

  • 空值:None
  • python的整数没有大小限制,比如Java的是有大小限制的,对32位整数的范围限制在-2147483648-2147483647
  • Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)

除法: "//",只保留整数,比如 10 // 3 = 3 余数: "%",比如 10 % 3 = 1

list和tuple

  • list:类似于JS的数组,可变长度和内容,数组内容可以多种
  • tuple:一旦初始化就不能修改,因为tuple不可变,所以代码更安全

tuple所谓的"不变"是说,tuple的每个元素,指向永远不变,如果tuple指向的是对象,那么对象自己的内容可以变化,但是tuple指向是不可变的

编码

ASCII+Unicode+UTF-8的关系

  1. 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码
  2. 全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码,因此发明了Unicode字符集
  3. 新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算,因此出现了“可变长编码”的UTF-8编码

UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节

总结

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件

浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器;所以你看到很多网页的源码上会有类似的信息,表示该网页正是用的UTF-8编码

python编码问题

  1. 在最新的Python3版本中,字符串是以Unicode编码的 => Python的字符串支持多语言
  2. ord()函数获取字符的整数表示:ord('A')=65
  3. chr()函数把编码转换为对应的字符:chr(66)=B
  4. Python对bytes类型的数据用带b前缀的单引号或双引号表示:x = b'ABC',要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节
  5. '中文'.encode('ascii'):含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错
  6. 当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

当str和bytes互相转换时,需要指定编码。最常用的编码是UTF-8!!!!!尽量不要用其他编码,造成混乱

条件判断

  1. 缩进代表着{},需要加上冒号::
python
age = 3
if age >= 18:
    print('your age is', age)
    print('adult')
else:
    print('your age is', age)
    print('teenager')
  1. match类似于switch
python
score = 'B'
if score == 'A':
    print('score is A.')
elif score == 'B':
    print('score is B.')
elif score == 'C':
    print('score is C.')
else:
    print('invalid score.')

可以改为:

python
score = 'B'

match score:
    case 'A':
        print('score is A.')
    case 'B':
        print('score is B.')
    case 'C':
        print('score is C.')
    case _: # _表示匹配到其他任何情况
        print('score is ???.')

循环