Python笔记1(数据类型)

Python数据类型

int float

/结果为float

//结果为int

%取余

转换为二进制的方法

print(bin(20)) # 转为二进制  0b10100
print(oct(20)) # 转为八进制  0o24
print(int(20)) # 转为十进制  20
print(hex(20)) # 转为十六进制  0x14

bool

bool类型属于数字类型,非0即为True,0即为False。

空置被认为为False,None也被认为False

字符串str

表示原始字符串,前面加r

print(r'我是原始字符串\n\n\n是的')
我是原始字符串\n\n\n是的
bytes类型

由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。

Python对bytes类型的数据用带b前缀的单引号或双引号表示:

x = b'ABC'

以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

'ABC'.encode('ascii')
'中文'.encode('utf-8')

纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:

b'ABC'.decode('ascii')
b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')

print('中'.encode('utf-8'))
print(b'\xe4\xb8\xad'.decode('utf-8'))
print(b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore'))
str bytes计数

要计算str包含多少个字符,可以用len()函数:

>>> len('ABC')
3
>>> len('中文')
2

len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数:

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

可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。

在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。

由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

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

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

字符串占位符

常见的占位符有:

占位符 替换内容

%d 整数

%f 浮点数

%s 字符串

%x 十六进制整数

如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串。

str list tuple都是属于序列

  • 可以使用in、not in判断元素是否在序列中:
3 in [1, 2, 3]
4 not in [1, 2, 3]

tuple元组

# 表示一个元素的元组
(1) # 括号会被认为是数学运算符
<class 'int'>
(1,) # 为了区分,加上逗号
<class 'tuple'>
() # 表示空元祖
<class 'tuple'>

集合set

  • 无序的,不可重复的集合
  • 使用{}来表示集合:
{1, 2, 3}
# 空集合表示:
set()

{} 类型:<class 'dict'>

dict

key可以为多个类型,必须为不可变类型

空字典表示方式:{}

None:空值,类型为NoneType

None与空字符串、空列表、0、False都不等
判断是否为空操作,建议使用:

if a:
    pass
if not a:
    pass

不管类型是None、''、[]、False

''、[]、None对应False
如果为自定义对象,自定义对象中的对象bool值,会被bool和__len__2个方法影响到,先受bool影响到,如果没有bool则受len影响。

class Test():
    # pass
    def __bool__(self):
        return False

    def __len__(self):
        return 0


print(bool(Test()))
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 菜鸟 学习笔记 # /Users/xxxxx/Desktop/HelloPythion.py # -*- codi...
    weiwei_js阅读 4,357评论 0 1
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 8,451评论 0 7
  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 11,131评论 2 16
  • 从岛上带回的香豌豆开了花 看见香豌豆就想起了在岛上的那些日子,去年在加拿大温哥华岛边上的一个很小的岛,地图上还真难...
    秋月姐阅读 4,214评论 2 1
  • 从2018年1月中旬到现在,公主开启身心灵远程个案疗愈,每天通过微信网络为来自于世界各地的有缘人做远程个案疗愈,寻...
    鲁雅洁阅读 3,938评论 0 0

友情链接更多精彩内容