【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_00010000000000一样

除法:

  • /:即使是两个整数恰好整除,结果也会变成浮点数
  • //:地板除,只取结果的整数部分
  • %:得到两个整数相除的余数

2、浮点数

科学计数法:1.23e9(e代表10的几次方)

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

3、字符串

但字符串中出现' " \使用反斜杠\转义
多行输出:使用'''your content'''

print('''line1
line2
line3''')

4、布尔型

TrueFalse
3>5也属于布尔运算,返回True或者False
布尔值可以用andornot运算

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值