python数据格式简介_Python数据类型和变量编码格式简介,python,格式化

一、简介

Python是著名的“龟叔”Guido van Rossum(荷兰人哦)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。整个Python语言从规范到解释器都是开源的。

相比较C和Java,实现同一个功能,python所需要的实现代码会更少,但运行速度会更慢。这也是python

缺点之一

,作为解释型语言(代码在执行时会一行一行地翻译成CPU能理解的机器码)而不是编译型语言(运行前直接编译成CPU能执行的机器码)。

缺点之二

是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这是解释型语言的通病。

以下是优点

。Python为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容。用Python开发,许多功能不必从零编写,直接使用现成的即可。

除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。

python适合的开发:

首选是网络应用,包括网站、后台服务等等;

其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;

另外就是把其他语言开发的程序再包装起来,方便使用。

python是

跨平台的

,在Windows上写Python程序,放到Linux上也是能够运行的。安装python后,你会得到

Python解释器

(就是负责运行Python程序的),一个

命令行交互环境

,还有一个简单的

集成开发环境

。Windows会根据一个Path的环境变量设定的路径去查找python.exe。

要运行代码,就需要用解释器去执行.py文件。从官方网站下载python后就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython用

>>>

作为提示符。还有很多其他解释器,比如IPython,PyPy,Jython,IronPython。

区分一下

命令行模式

python交互模式

。cmd进入是命令行模式,在命令行模式下输入python就进入python交互模式。Python交互式环境会把每一行Python代码的结果自动打印出来,主要是为了调试Python代码用的,也便于初学者学习,它不是正式运行Python代码的环境!

.py文件在windows系统上不能直接运行,但在linux和mac下就能直接运行,只需在代码前加上

#!/usr/bin/env python3

,并给.py文件添加权限

$ chmod a+x hello.py

python是

大小写敏感

二、输入输出

1、输出

print()

中用多个逗号隔开时,每遇到一个逗号都会输出一个空格

print(200 + 300) #500

2、输入

input()

,可以让用户输入字符串,并存放到一个变量里。不管输入的是什么,返回的都是一个字符串

name = input()

name = input('please enter your name: ')#会显示括号中的提示语

三、数据类型

1、整数

十六进制:

0xfa3

很大的数可以用

_

隔开:

10_000_000_000

10000000000

一样

除法:

/

:即使是两个整数恰好整除,结果也会变成浮点数

//

:地板除,只取结果的整数部分

%

:得到两个整数相除的余数

2、浮点数

科学计数法:

1.23e9

(e代表10的几次方)

Python的整数没有大小限制,Python的浮点数也没有大小限制,但是超出一定范围就直接表示为

inf

(无限大)。

3、字符串

但字符串中出现

' " \

使用反斜杠

\

转义

多行输出

:使用

'''your content'''

print('''line1

line2

line3''')

4、布尔型

True

False

3>5也属于布尔运算,返回True或者False

布尔值可以用

and

or

not

运算

5、空值

None

:和0的含义并不一样

6、变量

变量名必须是大小写英文、数字和_的组合,且不能用数字开头

可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量

变量本身类型不固定的语言称之为

动态语言

,与之对应的是静态语言`(如Java)。

变量在内存中的表示:

a = 'ABC'

b = a

a = 'XYZ'

print(b)#是ABC而不是XYZ

执行a = ‘ABC’:

在内存中创建了一个’ABC’的字符串;

在内存中创建了一个名为a的变量,并把它指向’ABC’。

执行b = a,解释器创建了变量b,并把b指向a指向的字符串’ABC’

执行a = ‘XYZ’,解释器创建了字符串’XYZ’,并把a的指向改为’XYZ’,但b并没有更改

Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。

对变量赋值x = y是把变量x指向真正的对象,该对象是变量y所指向的。随后对变量y的赋值不影响变量x的指向。

7、常量

在Python中,通常用全部大写的变量名表示常量。但事实上它仍然是一个变量,Python根本没有任何机制保证它不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法。

三、编码

ASCII

编码:占1个字节,表示大小写英文字母、数字和一些符号

各国语言不同的编码:中国

GB2312

,日本

Shift_JIS

,韩国

Shift_JIS

Unicode

编码:(最常用的是UCS-16编码)一般用两个字节表示一个字符,生僻字需要四个字节。现代操作系统和大多数编程语言都直接支持Unicode。

UTF-8

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

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

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

例如:浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器

ord()

chr()

\u...

对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符

ord('A')#65

ord('中')#20013

chr(66)#'B'

chr(25991)#'文'

#如果知道字符的整数编码,还可以用十六进制这么写str

'\u4e2d\u6587'#'中文'

b"ABC"

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

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

x = b'ABC'

要注意区分’ABC’和b’ABC’,前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。

encode()

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

'ABC'.encode('ascii')#b'ABC'

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

'中文'.encode('ascii')#报错

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

在bytes中,无法显示为ASCII字符的字节,用\x##显示。

decode()

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

b'ABC'.decode('ascii')#'中文'

b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')#'中文'

如果bytes中包含无法解码的字节,decode()方法会报错,如果bytes中只有一小部分无效的字节,可以传入errors='ignore’忽略错误的字节

b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')

len()

计算str包含多少个字符,如果换成bytes,len()函数就计算字节数

len('ABC')#3

len('中文')#2

len(b'ABC')#3

len(b'\xe4\xb8\xad\xe6\x96\x87')#6

四、格式化

%

要输出正常的%,就连输两个%%

'Hi, %s, you have $%d.' % ('Michael', 1000000)

#'Hi, Michael, you have $1000000.'

format

{0},{1}占位

'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)

#'Hello, 小明, 成绩提升了 17.1%'

f-string

r = 2.5

s = 3.14 * r ** 2

print(f'The area of a circle with radius {r} is {s:.2f}')

#The area of a circle with radius 2.5 is 19.62

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值