Python3学习笔记之-学习基础(第一篇)
文章目录
目录
目录
前言
接下来的时间里,我将对学习python3的一写基础知识进行梳理,本系列文章详细介绍了python3的相关知识点,从小白到大牛相信自己就能做到。
首先介绍一下python这门语言。python是一门计算机编程语言,它是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。龟叔给Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
Python就为我们提供了非常完善的基础代码库,许多功能不必从零编写,直接使用现成的即可。除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的。许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。
总的来说,Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。如果一个资深程序员向你炫耀他写的晦涩难懂、动不动就几万行的代码,你可以尽情地嘲笑他。
对于初学者我们可以选择Anaconda中的Jupyter Notebook来编写代码,这玩意用起来简单,你直接从网上下载一个Anaconda安装包就行。
话不多说,直接开始
一、数据类型和变量
1.数据类型
首先记住能够直接处理数据的数据类型:整数、浮点数、字符串、布尔值、空值
当然数据类型还有其他的,但是咱先不讲,列表啊、字典啊啥的,不急,慢慢来。
整数
在python中能处理任意大小的整数,上过初中都知道,和数学没区别,正的负的写法和数学上一猫一样,比如:1,20,-20,0等。
在计算机中有二进制、八进制、十进制、十六进制的概念,也许你不了解,但是你记住,用十六进制表示整数比较方便,十六进制用0x+(0-9,a-f),这括号里表示十六进制数,0x就是前面加上的玩意,就是要有它。相关知识给你一张图:
对于很大的数,例如10000000000
,很难数清楚0的个数。Python允许在数字中间以_
分隔,因此,写成10_000_000_000
和10000000000
是完全一样的。十六进制数也可以写成0xa1b2_c3d4
。
浮点数
这个更简单,这就是小数,举例:1.23,3.14,-2.2,1.23e等于,浮点数运算可能有四舍五入的误差
字符串
字符串就是单引号或双引号括起来的任意文本,比如:'abc' , "abc" 单引号和双引号不算字符串的一部分奥。关于这个有一个姿势点,如果我想要单引号双引号咋办,哎还是有办法的,记住这个转义字符 \ 下面看代码:
print('I\'m ok.')#这个print就是输出语句,第二个引号加上一个\ 这个引号就能出现
结果:I'm ok.
print('I\'m learning\nPython.')#这个\n更牛逼,它能换行
结果:I'm learning
Python.
print('\\\n\\')#这个相信也能看懂,第一个斜杠是转义字符,为了输出第二个\
#第三个\n是换行,然后第四个\转义字符为了输出最后一个\
结果:\
\
如果字符串里面有很多字符都需要转义,就需要加很多\
,为了简化,Python还允许用r''
表示''
内部的字符串默认不转义,
print(r"我是'\,老子不转义")
#结果:我是'\,老子不转义
如果字符串内部有很多换行,用\n
写在一行里不好阅读,为了简化,Python允许用''' '''
的格式表示多行内容,这三个引号前面也能加上r,里面的字符也能输出了。
print('''line1
line2
line3''')
结果:line1
line2
line3
布尔值
布尔值咱只需要记住一个Ture,一个False,这不用说也看得明白,你在python输入3>2,他给你返回的值就是True,3<2呐,就返回False。
布尔值可以用and,or,not运算,这几个单词简单成马了吧。举个例子:
True and True
输出:True,and
运算是与运算,只有所有都为True
,and
运算结果才是True
True or False
输出:True,or
运算是或运算,只要其中有一个为True
,or
运算结果就是True
not True
输出:False,not
运算是非运算,它是一个单目运算符,就是把Ture变成False,反过来一样。
布尔值经常用在条件判断中,比如:
if age >= 18:
print('老年人')
else:
print('小年轻')
空值
空值在python中特殊,就用None表示,它可不是0,0也有意义,这个None不行。
2.变量
在计算机语言中,变量不仅可以是数字,还可以是任意数据类型。
变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_
的组合,且不能用数字开头,比如:
a = 1 # 变量a是一个整数
a = 'qwe00' # 变量a是一个字符串
a = True # 变量a是一个布尔值
记住这个=是赋值语句,要记住这个等号与数学上的两边相等不一样,在计算机中,x=x+2也成立,那就是表示经过赋值,x的值变大了2,同一个变量可以反复赋值,还能是不同类型的变量,这种你就能叫它动态语言,那么问题来了,啥是静态语言,就是int a = 123,这个时候这个a她就得是int(整)类型。
下面看个更神奇的:
a = '芜湖'
b = a
a = '大司马'
print(b)
你只要注意一点,b=a这一条语句,表示a把它自己的芜湖给了b,所以输出结果就是’芜湖‘。python语句就是从上往下一句句执行,有先后顺序的。
现在你可能不理解,在最底层,其实是有一个地址,这个‘芜湖'它住一间房子里,a知道它的门牌号,后来呢a把门牌号告诉了b,b也就知道了,可不是把’芜湖‘复制了哦。
3.常量
所谓常量就是不能变的变量,比如常用的圆周率π就是一个常量。在Python中,通常用全部大写的变量名表示常量:
PI = 3.14159265359
二、字符串和编码
1.字符编码
字符串比较特殊的就是一个编码问题。因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535
,4个字节可以表示的最大整数是4294967295
。
由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII
编码,比如大写字母A
的编码是65
,小写字母z
的编码是122
。
但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312
编码,用来把中文编进去。
所以全世界各国的不同,混合就会出现乱码问题。因此,Unicode字符集应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8
编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。
2.python字符串
上面说了很多普及知识,基本上没大用,你就记住UTF-8编码很牛逼,很多情况下都用,在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言,举例:
print('输出中文English都没问题')
输出中文English都没问题
#Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
ord('A')
65
chr(66)
'B'
python字符串类型是str,如果要在网上传输,或者保存磁盘,str要转化成bytes,python对bytes类型数据用带b前缀的单引号或者双引号表示:
x = b'ABC'
#'ABC'是str,b'ABC'是bytes,这个它只占用一个字节。
纯英文的str
可以用ASCII
编码为bytes
,内容是一样的,含有中文的str
可以用UTF-8
编码为bytes
。含有中文的str
无法用ASCII
编码,因为中文编码的范围超过了ASCII
编码的范围,Python会报错。
在bytes
中,无法显示为ASCII字符的字节,用\x##
显示。
反过来,从网络或磁盘上读取了字节流,要把bytes
变为str
,就需要用decode()
方法
b'ABC'.decode('ascii')
结果:'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8',errors='ignore')
#设置errors='ignore'忽略错误的字节
结果'中文'
要计算str
包含多少个字符,可以用len()
函数、如果换成bytes
,len()
函数就计算字节数:
len('ABC')
3
len(b'ABC')
3
3.格式化
在Python中,采用的格式化方式和C语言是一致的,用%
实现,%
运算符就是用来格式化字符串的。在字符串内部,%s
表示用字符串替换,%d
表示用整数替换,有几个%?
占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?
,括号可以省略。
常见的占位符有:
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
记住这张表就欧克了。以后还会用到format(),f-string,都简简单单。,举两个例子:
'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
结果:'Hello, 小明, 成绩提升了 17.1%'
这个format() 第一个{0},代表的就是第一个小明,第二个{1}就是第二个字符,.1f就是保留几位小数。
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
这个f-string方法呢,{r}里面的r就是上面定义r的值,.2f就是保留两位小数。