廖雪峰--python教程:笔记⼀
Python 简介
Python是⼀个解释型的语⾔,也就是说:解释器给CPU解释⼀⾏,执⾏⼀⾏,速度相⽐较C是慢了许多;但,Python内置了⼤量的库函数,还有⼤量的第三⽅库,都可以为你编写程序效⼒,所以仅需要简短的代码,就能⼲复杂的事情,这也是为什么流传的“⼈⽣苦短,我⽤Python”的原因。
Python现在⽤两个版本2.x和3.x,这两个版本是不兼容的,本系列笔记是根据Python 3.x版本学习的,但当我在学习Python的过程中,如遇到python 2.x 和 3.x ,使⽤不同之处的地⽅,我会记录下来,以便⽇后查。Python既然是⼀个解释型的语⾔,那么在编写完源码后(以.py 为后缀名的⽂件)需要通过⼀个解释器来逐⾏的将源码解释成机器语⾔,让计算机执⾏。在安装Python的时候,就⾃带了官⽅的解释器CPython,这是⼀个以提供⼀个命令⾏形式的解释器。当然,你也可以不适⽤官⽅的,如⽐较流⾏的IPython,它是基于CPython之上的,可交互的解释器。
简短的Python⼩程序
那么,我们来开始⼀个简短的python⼩程序吧!在写程序之前,我们要了解Python是如何运⾏程序的。Python有两种⽅式执⾏程序,第⼀是在python的交互式命令⾏⾥,输⼊⼀⾏后,会⽴马执⾏⼀⾏,这个可
以⽅便我们⽤来验证某⼀段Python代码的正确性是⾮常有帮助的;第⼆种是在⽂本编辑器⾥输⼊python源码,然后保存为x.py⽂件,在这个⽂件的当前路径下,通过 python x.py即可执⾏⽂件⾥的代码。需要注意的是,不要使⽤Windows⾃带的⽂本编辑器和word这样编辑器来写代码,尽量不要复制粘贴别⼈的python代码,因为会很容易出现缩进的问题。
让我们和世界打个招呼吧:
print("Hello,world",'Hi,Python')
输出: Hello,world空格Hi,Python
print()函数是python内置的函数,可以将字符串、变量、表达式等输出到屏幕中去。这⾥我们看到,字符串⽤双引号和单引号都是可以的(当然,混⽤是不可以的),这⾥的“,”逗号,会被输出为空格。
那有了简单的输出了,如何从键盘输⼊呢?Python提供了⼀个内置函数input():
name = input('please enter your name:')
在屏幕上会输出please enter your name:并且等待的你的输⼊,若你输⼊:
This is Cool!
则,这个字符串“This isCool!”就会赋值给了变量name。注意,你的输⼊都被作为字符串来处理。
Python 基本语法
OK,通过上⾯的简短不精确的描述,你可能对Python有了⼀点点的了解,那么现在让我们来开始学习Python的基本语法吧!
'''
先来⼀个热⾝吧!你做好准备了?
'''
raeay = 666
ready = input("Are you ready?") #输⼊yes or no, ⼤⼩写都可以
if ready.lower() == 'yes':
  print('Welcome\nThanks')
else if ready.lower() == 'no':
  print('''Come on
  Belive in Yourself!''')
else:
  print('Don\'t worry,You Can')
  print(r'Try again,\nit is easy for you')
‘’‘...''' : 这是⼀个可以写多⾏的注释
# 是单⾏注释
缩进:
缩进是Python的⼀⼤特⾊,是很具有标志性的。当语句遇到:时接下来的语句视为代码块,也就是相当于Java 函数中的{语句块}。这带来的好处是,看起来很清爽(易于理解代码),和强制你将⼀个很复杂的函数,拆分成多个简单的函数。⼀般⼤家遵守的是⼀个tab键的空格(4个),所以你也不要列外。缺点是,当你copy别⼈的代码时,要仔细地检查缩进的问题啦!
ready变量指向的是你输⼊的字符,python是⼀个动态的语⾔(与之对应的是静态的语⾔C,Java),那怎么定义动态和静态的呢?Python中的变量是可以任意转换数据类型的,就如现在这个ready变量,在最开始我赋值给它⼀个整数型数值,那么此时ready变量是int类型
(type(ready)来查看),但是,当你输⼊字符的时候,ready就是str字符型的啦。Python变量的类型可以随意变换,⽽在C语⾔中,在使⽤变量前,需要先声明(int ready,声明后该变量的数据类型就不会改变啦)才能使⽤,所以说,Python是⼀个动态的语⾔。ready变量和数据(666,和你的输⼊)是什么关系呢?在Python中,数据皆是对象,即如:ready = 666,Python解释器会告诉计算机先在内存中创建⼀个值为666整数,然后再创建⼀个名为ready变量,最后将这个ready变量指向整数666。程序执⾏到下⼀条,此时你输⼊yes,Python解释器会在内存中创建⼀个yes的字符串,并且将变量ready指向字符串yes。所以,如果遇到这样的代码:a=2; b=a; a=3; 你应该能知道,b指向2,a指向3。
lower()是Python内置函数,’Yes‘.lower() 为:yes,聪明的你,此时猜想 'yes'.upper()会是什么呢?在这我就不讲啦,你知道答案的。
\n:是转义字符,换⾏的意思;那你要是想多换⼏⾏,不想每⼀次换⾏都码\n,怎么做呢? -- 通过在print()函数中,输⼊
'''
感觉写的可以啦,换到下⼀⾏
在⽂本编译器⾥直接换⾏就⾏啦'''
\': 如果想在单引号的⾥输出',就使⽤这种简单的转义字符\,那要是不想⽤转义字符,可以使⽤r'你的输⼊内容',这样可以完整的显⽰你的输⼊内容(注意,这⾥你的输⼊内容是指,没有单引号),print(r'Try again,\nit is easy for you'):输出: Try again,\nit is easy for you
上⾯介绍到,Python是动态语⾔,因为变量可以改变其数据类型,那么我们就简单的说说Python有哪⼏种数据类型。
简单来说,Python有这⼏种数据类型,整数型,浮点型,字符串型,布尔型,列表型,字典型,你⾃⼰创建的类型。整数型和浮点型数据没有⼤⼩的限制,太⼤(返回inf)
对于整数(int)和浮点数(float),先来简单的聊聊他们的除法
/: a/b ⽆论a,b为整数还是浮点,结果都是浮点
// : 绝对除,a//b, 若a或b有⼀个为float,结果都为float类型,但值为取整,
%:取余
对于布尔类型:
True 和 False ,注意⼤⼩写,如 5 > 3 返回 True
三种运算: and 、or、 not
在Python⾥还有⼀个特殊的值,空值: None
字符集编码问题
字符串是⼀种数据类型,但是字符串⽐较特殊的还有编码问题:
Unicode、utf-8、gbk:接下来聊聊令⼈头⼤的编码问题:
wa字符串是什么我就简单的理⼀理:
我们在⽤⽂本编辑器写Python代码时,需要注意两个地⽅,第⼀个:# -*- coding: utf-8 -*-
将这个声明放在⽂件的最上⽅,它是⽤来告诉Python编辑器,这个⽂件的源码的字符集编码是utf-8;第⼆个:将写好的⽂件保存的格式设置为utf-8。这样执⾏起来没有任何问题啦!
读取⽂件X到内存时,如果⽂件X是⽤utf-8的字符集编码的话,数字和英⽂字符是⼀个字节,中⽂字符⼀般是三个字节,每个字节是
(8bit),也就是说,⽂件X在硬盘上保存的是这些字符对应的很多个字节。那当读⼊到内存时,全部都转化为Unicode字符集编码。当⽤Python3 open()函数默认设置,读取⽂件X时,open()函数会调⽤当前的系统的字符集编码(win下默认是gbk)的⽅式去读取⽂件X到内存中去,如果打印此内容,就会出错! 'gbk' codec can't decode
所以,当我们使⽤open()函数去读取⽂件时,要这样设置f=open(filename,encoding='utf-8')这样就会按照utf-8的字符集编码去读取⽂件啦,当我们在内存的X⽂件写⼊到硬盘时,我们可以指定其编码字符如 b'这⾥是字节,内存⾥的东西'.decode('utf-8',errors='ignore'),因为在读取X⽂件时,X⽂件可能会出现⾮法字符,所以在写⼊的时候,加上errors='ignore'
格式化输出:
print('%d,%f,%s' % (23,3.14,'Wa'))
在%(可以为变量,表达式,常量,和字符串),但是,⼀定要⼀⼀对准位置
list 列表:
这个内容可丰富啦,有⽐较好⽤的切⽚,还有列表⽣成式,今天就简单谈谈⼀些基本的:
a = [1,2.0,'fafa',[1,2,'where']]
列表的元素不限数据类型,a是⼀个列表从索引0开始,即a[1] 输出:2.0, a[1:3] 输出:[2.0,'fafa'], a[-1]输出:[1,2,'where']
pop()函数删除list末尾元素,a.pop(1),则删除列表a第⼆个元素
insert(索引,内容):插⼊函数a.insert(0,90)在列表a第⼀个位置插⼊了90
append(),向列表末尾追加⼀个元素,该元素可以为列表,字符串等
extend(),也是向列表a末尾最加⼀个元素,若该元素为列表b,则将该列表b的元素取出加⼊到列表a中。如
a = [1, 2.0, 'fafa', [1, 2, 'where']]
a.append([1,2,3]):[1, 2.0, 'fafa', [1, 2, 'where'], [1, 2, 3]]
len(a): a列表的元素个数,len('strs'):'strs'字符串中的字符个数
truple元组:
truple元组⼀旦初始化就不可以改变啦:t = (1,2.0,'fafa',[1,2,'where'])
但是,当t[3][0] = 'A'; t[3][1] = 'B';
则 t: (1, 2.0, 'fafa', ['A', 'B', 'where']),这是为什么呢?
实际上是,不变指的是指向不变,也就是,t中第⼀个元素指向是 1 ,t 中第4个元素指向的是⼀个列表,但是列表中的第⼀指向,可以改变呀
所以,当要想创建⼀个内容不变的truple元组时,那就得保证truple的每⼀个元素本⾝也不能变

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。