Python学习入门笔记(版本2.7)

官网:https://www.python.org/

搭建环境:

(1)安装

(2)设置环境变量:我的电脑‣属性‣高级‣环境变量

(3)重启电脑

如果需要安装pip:命令行里进入Python27\Scripts,输入easy_inatall pip;

 

一、 后端开发介绍

1. 后端开发特点

技术更新快(编程语言、行业)、需要结合业务(逻辑设计、实现、部署)、知识面要广

2. 技术栈

(1)开发工具:sublime, vim, pycharm, ipython[notebook]

(2)web框架:flask, django, web.py, web2py

(3)数据库:mysql, redis, mongo

(4)数据处理:pandas, numpy, scipy, sklarn

(5)业务框架: spark, hadoop, AWS, docker

3. Python应用发布维护

python 应用的发布工具:

    setup.py打包,发布到公用pip源(https://pypi.python.org/pypi)/公司内部pip源,pip安装/卸载

    github hooks, travis, jenkins 工具

python 应用的发布工具:

访问生产服务器(ssh直接远程登录/通过跳板机模式)

线上报警(邮件等绑定)/监控/热修复

二、 python介绍

python运行:

(1)概念与特点:

是一种面向对象的、解释型、动态数据类型的高级程序设计语言。

目前有两大版本2.X(更新到2.7)、3.X,python2在2020年开始官方不会做更新,只会做维护的工作;但目前有些包只支持2.X。

语言轻量化,依赖python包做开发。优雅、明确、简单

生态库完善。【有13W+Python包,截止到2018.3月】

(2)Python适合的领域

web网站和各种web网络服务

系统工具和脚本

作为“胶水”语言把其他语言开发的模块包装起来方便使用

(3)Python不适合的领域

贴近硬件的代码(首选C)

移动开发:IOS/Android有各自的开发语言(Objc,swift/java)

游戏开发(需要高速渲染,首选C/C++)

(4)python实际应用

国外:YouTube、Insta

国内:豆瓣、搜狐邮箱

openstack开源云计算平台

在各大公司内部广泛使用,比如google、YaHoo、NASA

(5)优缺点对比

 

优点:代码量少、跨平台

缺点:慢、python源码不能加密

(6)python 代码与执行

文件后缀名:.py

执行:python XX.py

三、 变量与数据类型

3.1 数据类型

在Python中,能够直接处理的数据类型有以下几种:

(1)、整数

Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080等

(2)、浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x10^9和12.3x10^8是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数:

但是整数和浮点数混合运算的结果就变成浮点数了:

1 + 2.0 # ==> 浮点数 3.0

(3)、字符串

字符串是以''或""括起来的任意文本,比如'abc',"xyz"等等。

(4)、布尔值

一个布尔值只有True、False两种值,在Python中,可以直接用True、False表示布尔值(注意大小写),也可以通过布尔运算计算出来。

布尔值可以用and、or和not运算。

(5)、空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

(6)、list

Python内置的一种数据类型是列表:list,list创建后可以随时被修改。构造list非常简单,直接用 [ ] 把list的所有元素都括起来,元素之间用“,”隔开,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list:

>>> L = ['Michael', 'Bob', 'Tracy']

list是数学意义上的有序集合,通过索引来获取list中的指定元素,如L[0]。注意,索引可以是负数,用 -1 这个索引来表示最后一个元素,倒数第二用 -2 表示。

由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,可以在list中包含各种数据:

>>> L = ['Michael', 100, True]

一个元素也没有的list,就是空list:

>>> empty_list = []

如何把新元素添加到现有的 list 中?(1)添加到末尾: list 的 append() 方法:L.append('Paul');(2)添加到指定位:list的 insert()方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素:L.insert(0, 'Paul')。

从list删除元素pop(n),其中n是索引号。

(7)、元祖(tuple)

tuple是另一种有序的列表,中文翻译为“ 元组 ”,用( )创建。tuple 和 list 非常类似,获取 tuple 元素的方式和 list 是一模一样的,使用索引方式访问元素。但是,tuple一旦创建完毕,就不能修改了。可以通过将元素设为list的方式,实现部分元素内容可变。

因为()既可以表示tuple,又可以作为括号表示运算时的优先级,避免为了歧义,Python 规定,单元素 tuple 要多加一个逗号“,”,如:t = (1,)

(8)、字典(Dictionary)

字典是一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key 、value 对用冒号 : 分割,(注意:存储的key-value序对是没有顺序的)每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键必须是唯一的、不可变的,如字符串,数字或元组;但值则不必,值可以取任何数据类型。

一个简单的字典实例:

dict = {'Alice': '2341', 'Beth': '9102', 98.6: '3258'}

访问字典:

dict[key]

如果key不存在,会直接报错:KeyError。

要避免 KeyError 发生,有两个办法:

一是先判断一下 key 是否存在,用 in 操作符:

if 'Paul' in d: print d['Paul']

二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

>>> print d.get('Bart') 59 >>> print d.get('Paul') None

取长:

len(dict)

添加新的 key-value:

用赋值语句dict[key]=XX

如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value。

遍历:

直接使用for循环可以遍历 dict 的 key,由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值

values()方法:获取value

items()方法:获取key和value

(9)set

set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。

创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:

>>> s = set(['A', 'B', 'C'])

可以查看 set 的内容:

>>> print s set(['A', 'C', 'B'])

因为set不能包含重复的元素,所以,当我们传入包含重复元素的 list ,set会自动去掉重复的元素。

元素的更新:一是把新的元素添加到set中add(),二是把已有元素从set中删除remove()。

由于set存储的是无序集合,所以我们没法通过索引来访问。访问 set中的某个元素实际上就是判断一个元素是否在set中,可以用 in 操作符判断,结合set的这些特点,常用于判断输入的字符串是否有效,比如星期、月份等。

3.2 Python之print语句

print语句可以向屏幕上输出指定的文字。

print语句也可以跟上多个字符串,用逗号“,”隔开,就可以连成一串输出。

print也可以打印整数,或者计算结果。

3.3 注释

Python的注释以 # 开头,后面的文字直到行尾都算注释。

多行注释:三重引号''' '''。

3.4 变量

在Python程序中,变量是用一个变量名表示,变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头。

在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。

最后,理解变量在计算机内存中的表示也非常重要。当我们写:a = 'ABC'时,Python解释器干了两件事情:

1. 在内存中创建了一个'ABC'的字符串;

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

3.5 字符串

(1)Python中定义字符串

字符串可以用''或者""括起来表示。

如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示:

"I'm OK"

类似的,如果字符串包含",我们就可以用' '括起来表示:

'Learn "Python" in imooc'

如果字符串既包含'又包含"怎么办?

这个时候,就需要对字符串的某些特殊字符进行“转义”,Python字符串用\进行转义。

要表示字符串 Bob said "I'm OK".

由于 ' 和 " 会引起歧义,因此,我们在它前面插入一个\表示这是一个普通字符,不代表字符串的起始,因此,这个字符串又可以表示为

'Bob said \"I\'m OK\".'

常用的转义字符还有:

\n 表示换行 \t 表示一个制表符 \\ 表示 \ 字符本身

(2)Python中raw字符串与多行字符串

如果一个字符串包含\ 字符本身,对每一个\ 字符都进行转义会很麻烦。为了避免这种情况,可以在字符串前面加个前缀r ,表示这是一个 raw 字符串,里面的字符就不需要转义了。例如:

r'\(~_~)/ \(~_~)/'

但是r' '表示法不能表示多行字符串,也不能表示包含'和 "的字符串(为什么?)

如果要表示多行字符串,可以用''' '''表示:

'''Line 1 Line 2 Line 3'''

上面这个字符串的表示方法和下面的是完全一样的:

'Line 1\nLine 2\nLine 3'

还可以在多行字符串前面添加 r ,把这个多行字符串也变成一个raw字符串:

r'''Python is created by "Guido". It is free and easy to learn. Let's start learn Python in imooc!'''

(3)Python中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'...'表示(需要u??待确认),比如:

print u'中文' 中文

注意: 不加 u ,中文就不能正常显示。

Unicode字符串除了多了一个 u 之外,与普通字符串没啥区别,转义字符和多行表示法仍然有效:

如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为... 并选择UTF-8格式保存。

四、 Python语句

注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块。Python交互环境下敲代码,要特别留意缩进,并且退出缩进需要多敲一行回车。缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

4.1 if语句、if...else...语句、if ... 多个elif ... else ... 

if 语句后接表达式,然后用 : 表示代码块开始。同样的,else、elif后面也用 : 。

4.2 for循环

语法示例(for 循环依次把list的每个元素迭代出来):

for name in L:

4.3 while循环

语法示例:

while x < N: print x x = x + 1

如果要在循环体内直接退出循环,可以使用 break 语句,还可以用continue跳过后续循环代码,继续下一次循环。

五、 Python函数

5.1 调用函数

Python内置了很多有用的函数,我们可以直接调用。要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数 abs,它接收一个参数。

可以直接从Python的官方网站查看文档:http://docs.python.org/2/library/functions.html#abs。也可以在交互式命令行通过 help(abs) 查看abs函数的帮助信息。

5.2 编写函数

在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

我们以自定义一个求绝对值的 my_abs 函数为例:

def my_abs(x): if x >= 0: return x else: return -x

5.3 Python函数返回多个值

Python的函数返回多值其实就是返回一个tuple,但写起来更方便。在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值。

示例:return x1, x2

5.4 递归函数

一个函数在内部调用自身本身,这个函数就是递归函数。使用递归函数需要注意防止栈溢出。递归调用的次数过多,会导致栈溢出。

示例(阶乘):

def fact(n): if n==1: return 1 return n * fact(n - 1)

5.5 定义默认参数

定义函数的时候,还可以有默认参数,函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面。

示例:def power(x, n=2):

调用时可以只传1个参数,如:power(5)

六、 切片Slice(截取)

6.1 对list切片

对取指定索引范围的操作,提供了切片操作符:,示例:L[0:3],第一个索引是0,还可以表示为L[:3]。

L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。

只用一个 : ,表示从头到尾。

L[::2] 会每两个元素取出一个来,也就是隔一个取一个。

6.2 倒序切片

倒数第一个元素的索引是-1,倒序切片包含起始索引,不包含结束索引。

示例:

L[-2:]最后2个;

L[:-2]最后2个以外;

6.3 字符串切片

在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

示例:

>>> 'ABCDEFG'[:3] 'ABC'

七、 迭代

在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。

在Python中,迭代是通过 for ... in 来完成的,迭代操作就是对于一个集合,无论该集合是有序还是无序,我们用 for 循环总是可以依次取出集合的每一个元素。

使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。

示例:

for index, name in enumerate(L): print index, '-', name

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值