Python 学习(基础篇,经典长文,值得保藏)你有么?

作者:小林老师
全世界大概有几百种编程言语,而其间闻名的只要十几种。python即是闻名编程言语之一。它起源于“龟叔”(guido van rossum,荷兰人)在1989年圣诞节间的无聊,而为了打发时刻所发明。
可见业余时刻比作业时刻发明出来的东西更简略知名哈,当然,这是恶作剧的。“龟叔”赋予python“高雅、明确、简略”的特色。
那么,python合适做啥呢?它首要适用范畴:web网站和各种网络服务(youtube、instagram、douban、openstack);系统东西和脚本;作为“胶水”言语把其它言语开发的模块包装起来便利运用。
长处是明显的,可是也少不了缺陷。python不适用的范畴:靠近硬件的代码(首选c);移动开发(ios/android都有各自的开发言语);由于不能做到通知烘托,所以不合适游戏开发(首选c/c++)。
python和其它言语比照
cpu越来越快,程序的运转速度瓶颈往往不在python的履行,更多遭到网络速度和硬盘速度的制约。
别的,python发布程序即发布源代码。
装置python
前往 官网下载 对应渠道对应东西。别的python2.7版别和3.3版别并不兼容,所以开发时请留心运用python的版别。
作为mac os x运用者,本来更引荐 pycharm ide 。装置以后直接运用即可。
数据类型
核算机望文生义即是能够做数学核算的机器,因而,核算机程序理所当然地能够处理各种数值。可是,核算机能处理的远不止数值,还能够处理文本、图形、音频、视频、页面等各式各样的数据,不相同的数据,需求界说不相同的数据类型。在python中,能够直接处理的数据类型有以下几种:
整数
python能够处理恣意巨细的整数,当然包括负整数,在python程序中,整数的表明办法和数学上的写法如出一辙,例如:1,100,-8080,0,等等。
核算机由于运用二进制,所以,有时分用十六进制表明整数对比便利,十六进制用0x前缀和0-9,a-f表明,例如:0xff00,0xa5b4c3d2,等等。
浮点数
浮点数也即是小数,之所以称为浮点数,是由于依照科学记数法表明时,一个浮点数的小数点方位是可变的,比方,1.23×10^9 和 12.3×10^8 是持平的。浮点数能够用数学写法,如1.23,3.14,-9.01,等等。可是关于很大或很小的浮点数,就有必要用科学计数法表明,把10用e代替,1.23×10^9 即是1.23e9,或许12.3e8,0.000012能够写成1.2e-5,等等。
整数和浮点数在核算机内部存储的办法是不相同的,整数运算永远是准确的(除法莫非也是准确的?是的!),而浮点数运算则也许会有四舍五入的差错。
字符串
字符串是以’’或””括起来的恣意文本,比方’abc’,”xyz”等等。请留心,’’或””自身仅仅一种表明办法,不是字符串的一有些,因而,字符串’abc’只要a,b,c这3个字符。
布尔值
布尔值和布尔代数的表明彻底共同,一个布尔值只要true、false两种值,要么是true,要么是false,在python中,能够直接用true、false表明布尔值(请留心巨细写),也能够经过布尔运算核算出来。
布尔值能够用and、or和not运算。
and运算是与运算,只要一切都为 true,and运算成果才是 true。
or运算是或运算,只要其间有一个为 true,or 运算成果即是 true。
not运算对错运算,它是一个单目运算符,把 true 成为 false,false 成为 true。
空值
空值是python里一个格外的值,用none表明。none不能了解为0,由于0是有意义的,而none是一个格外的空值。
此外,python还供给了列表、字典等多种数据类型,还答应创立自界说数据类型。
print 句子
print句子能够向屏幕上输出指定的文字。比方输出’hello, world’,用代码完结如下:>>> print 'hello, world'
留心:
1.当咱们在python交互式环境下编写代码时,>>>是python解说器的提示符,不是代码的一有些。
2.当咱们在文本编辑器中编写代码时,千万不要自个增加 >>>。
print句子也能够跟上多个字符串,用逗号“,”离隔,就能够连成一串输出:>>> print 'the quick brown fox', 'jumps over', 'the lazy dog'the quick brown fox jumps over the lazy dog
print会顺次打印每个字符串,遇到逗号“,”会输出一个空格,因而,输出的字符串是这么拼起来的:
print也能够打印整数,或许核算成果:>>> print 300300 #运转成果>>> print 100 + 200300 #运转成果
因而,咱们能够把核算100 + 200的成果打印得更美丽一点:>>> print '100 + 200 =', 100 + 200100 + 200 = 300 #运转成果
留心: 关于100 + 200,python解说器主动核算出成果300,可是,’100 + 200 =’是字符串而非数学公式,python把它视为字符串,请自行解说上述打印成果。
python的注释
任何时分,咱们都能够给程序加上注释。注释是用来阐明代码的,给自个或他人看,而程序运转的时分,python解说器会直接疏忽掉注释,所以,有没有注释不影响程序的履行成果,可是影响到他人能不能看懂你的代码。
python的注释以 # 最初,后边的文字直到行尾都算注释# 这一行悉数都是注释...print 'hello' # 这也是注释
注释还有一个奇妙的用途,即是一些代码咱们不想运转,但又不想删去,就能够用注释暂时屏蔽掉:# 暂时不想运转下面一行代码:
变量
在python中,变量的概念底子上和初中代数的方程变量是共同的。
例如,关于方程式 y=x*x ,x即是变量。当 x=2 时,核算成果是4,当 x=5 时,核算成果是25。
仅仅在核算机程序中,变量不只能够是数字,还能够是恣意数据类型。
在python程序中,变量是用一个变量名表明,变量名有必要是 巨细写英文、数字和下划线(_)的组合,且不能用数字最初 ,比方:a = 1
变量a 是一个整数。t_007 = 't007'
变量t_007 是一个字符串。
在python中,等号=是赋值句子,能够把恣意数据类型赋值给变量,同一个变量能够反复赋值,而且能够是不相同类型的变量,例如:a = 123 # a是整数print a
这种变量自身类型不固定的言语称之为动态言语,与之对应的是静态言语。
静态言语在界说变量时有必要指定变量类型,假如赋值的时分类型不匹配,就会报错。例如java是静态言语,赋值句子如下(// 表明注释):int a = 123; // a是整数类型变量a = chars; // 过错:不能把字符串赋给整型变量
和静态言语对比,动态言语更灵活,即是这个因素。
请不要把赋值句子的等号等同于数学的等号。比方下面的代码:x = 10x = x + 2
假如从数学上了解 x = x + 2 那不管怎样是不成立的,在程序中,赋值句子先核算右侧的表达式 x + 2 ,得到成果12,再赋给变量x。由于x之前的值是10,重新赋值后,x的值成为12。
终究,了解变量在核算机内存中的表明也非常重要。当咱们写: a = 'abc' 时,python解说器干了两件作业:
在内存中创立了一个’abc’的字符串;在内存中创立了一个名为a的变量,并把它指向’abc’。
也能够把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:a = 'abc'b = a
终究一行打印出变量b的内容究竟是 'abc' 呢仍是 'xyz' ?假如从数学意义上了解,就会过错地得出b和a相同,也应当是 'xyz' ,但实际上b的值是 'abc' ,让咱们一行一行地履行代码,就能够看到究竟发作了啥事:
履行a = 'abc' ,解说器创立了字符串 'abc' 和变量 a ,并把a指向 'abc' :
履行b = a ,解说器创立了变量 b,并把b指向 a 指向的字符串 'abc' :
履行a = 'xyz' ,解说器创立了字符串 'xyz' ,并把a的指向改为 'xyz' ,但b并没有更改:
所以,终究打印变量b的成果自然是 'abc' 了。
界说字符串
前面咱们讲解了啥是字符串。字符串能够用 '' 或许 括起来表明。
假如字符串自身包括’怎样办?比方咱们要表明字符串 i'm ok ,这时,能够用 括起来表明:i'm ok
相似的,假如字符串包括”,咱们就能够用’ ‘括起来表明:'learn python in chars's blog'
假如字符串既包括’又包括”怎样办?
这个时分,就需求对字符串的某些格外字符进行“转义”,python字符串用 \ 进行转义。
要表明字符串 bob said i'm ok .
由于‘ 和“ 会导致歧义,因而,咱们在它前面刺进一个 \ 表明这是一个一般字符,不代表字符串的开端,因而,这个字符串又能够表明为'bob said \i\'m ok\.'
留心:转义字符 \ 不计入字符串的内容中。
常用的转义字符还有:\n 表明换行\t 表明一个制表符\\ 表明 \ 字符自身
raw字符串与多行字符串
假如一个字符串包括许多需求转义的字符,对每一个字符都进行转义会很费事。为了避免这种情况,咱们能够在字符串前面加个前缀 r ,表明这是一个 raw 字符串,里边的字符就不需求转义了。例如:r'\(~_~)/ \(~_~)/'
可是r'...' 表明法不能表明多行字符串,也不能表明包括 ' 和 的字符串(为啥?)
假如要表明多行字符串,能够用 '''...''' 表明:'''line 1
上面这个字符串的表明办法和下面的是彻底相同的:'line 1\nline 2\nline 3'
还能够在多行字符串前面增加 r ,把这个多行字符串也成为一个raw字符串:r'''python is created by guido.
unicode字符串
字符串还有一个编码疑问。
由于核算机只能处理数字,假如要处理文本,就有必要先把文本变换为数字才干处理。最早的核算机在设计时选用8个比特(bit)作为一个字节(byte),所以,一个字节能表明的最大的整数即是255(二进制11111111=十进制255),0 – 255被用来表明巨细写英文字母、数字和一些符号,这个编码表被称为ascii编码,比方大写字母 a 的编码是65,小写字母 z 的编码是122。
假如要表明中文,明显一个字节是不可的,最少需求两个字节,而且还不能和ascii编码抵触,所以,我国拟定了gb2312编码,用来把中文编进入。
相似的,日文和韩文等别的言语也有这个疑问。为了一致一切文字的编码,unicode应运而生。unicode把一切言语都一致到一套编码里,这么就不会再有乱码疑问了。
unicode一般用两个字节表明一个字符,原有的英文编码从单字节成为双字节,只需求把高字节悉数填为0就能够。
由于python的诞生比unicode规范发布的时刻还要早,所以最早的python只支撑ascii编码,一般的字符串’abc’在python内部都是ascii编码的。
python在后来增加了对unicode的支撑,以unicode表明的字符串用u’…’表明,比方:print u'中文'中文
留心: 不加 u ,中文就不能正常显现。
unicode字符串除了多了一个 u 以外,与一般字符串没啥区别,转义字符和多行表明法依然有用:
转义:u'中文\n日文\n韩文'
多行:u'''榜首行
raw+多行:ur'''python的unicode字符串支撑中文,
假如中文字符串在python环境下遇到 unicodedecodeerror ,这是由于.py文件保留的格局有疑问。能够在榜首行增加注释# -*- coding: utf-8 -*-
意图是通知python解说器,用utf-8编码读取源代码。然后用notepad++ 另存为… 并挑选utf-8格局保留。
list
创立list
python内置的一种数据类型是列表:list。list是一种有序的调集,能够随时增加和删去其间的元素。
比方,列出班里一切同学的姓名,就能够用一个list表明:>>> ['michael', 'bob', 'tracy']
list是数学意义上的有序调集,也即是说,list中的元素是依照次序摆放的。
构造list非常简略,依照上面的代码,直接用 [ ] 把list的一切元素都括起来,即是一个list目标。一般,咱们会把list赋值给一个变量,这么,就能够经过变量来引证list:>>> classmates = ['michael', 'bob', 'tracy']>>> classmates # 打印classmates变量的内容['michael', 'bob', 'tracy']
由于python是动态言语,所以list中包括的元素并不请求都有必要是同一种数据类型,咱们彻底能够在list中包括各种数据:>>> l = ['michael', 100, true]
一个元素也没有的list,即是空list:>>> empty_list = []
依照索引拜访list
由于list是一个有序调集,所以,咱们能够用一个list按分数从高到低表明出班里的3个同学:>>> l = ['adam', 'lisa', 'bart']
那咱们怎样从list中获取指定第 n 名的同学呢?办法是经过索引来获取list中的指定元素。
需求格外留心的是,索引从 0 开端,也即是说,榜首个元素的索引是0,第二个元素的索引是1,以此类推。
因而,要打印榜首名同学的姓名,用 l[0]:>>> print l[0]
要打印第二名同学的姓名,用 l[1]:>>> print l[1]
要打印第三名同学的姓名,用 l[2]:>>> print l[2]
要打印第四名同学的姓名,用 l[3]:>>> print l[3]
报错了!indexerror意思即是索引超出了规模,由于上面的list只要3个元素,有用的索引是 0,1,2。
所以,运用索引时,千万留心不要越界。
倒序拜访list
咱们仍是用一个list按分数从高到低表明出班里的3个同学:>>> l = ['adam', 'lisa', 'bart']
这时,教师说,请分数最低的同学站出来。
要写代码完结这个使命,咱们能够先数一数这个 list,发现它包括3个元素,因而,终究一个元素的索引是2:>>> print l[2]
有没有更简略的办法?有!
bart同学是终究一名,俗称倒数榜首,所以,咱们能够用 -1 这个索引来表明终究一个元素:>>> print l[-1]
bart同学表明躺枪。
相似的,倒数第二用 -2 表明,倒数第三用 -3 表明,倒数�...