关闭

Python入门

标签: Python
239人阅读 评论(0) 收藏 举报
分类:

Python入门


目录:

1,入手准备,资料

2,python的历史及特点

3,python基础入门

4,思考


1,入门准备,资料

资料:《Python核心编程》+ Python文档

IDE:Python2.7 + Sublime


2,python的历史及特点

        Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。

        Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。Python继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性。

3,python基础入门
所有的语言的入门离不开HelloWorld:
3.1     Python的输出语句
    print "Hello World!"
3.2    程序输入:
输入字符串 a = raw_input('input new string:')
输入数字 a = input()

3.3    注释
# coding = utf-8
print "Hello World" #My first Python code 注释

3.4   操作符
+ 加     -减       *乘      /除       //浮点数四舍五入除法       %求余           **乘方(pow(a,b) 等于a ** b)
比较操作符: <    <=   >    >=     ==    !=     <>
逻辑操作符: and      or    not

3.5    变量和赋值
Python变量名是大小写敏感的,它是动态类型语言,也就是说不需要预先声明变量的类型,变量的类型和值在赋值那一刻被初始化
变量赋值通过等号实现
count = 0
name = 'mewhat'
Python支持增量赋值:n = n * 10       等同于       n *= 10
但是Python并不支持自增(n++)自减(n--)这样的操作

3.6    数字
由符号整型:长整型 long(仅受限于计算机的虚拟内存总数,类似Java的大数类BigInteger),整型int
                      布尔型bool (True,False)
浮点数:float
复数:complex

3.7   字符串
Python中字符串被定义为引号之间的字符集合。单引号 双引号 三引号(一般用于文档字符串)
例如: pystr = 'python'          pystr2 = "Python"   
访问字符串中的字符可以用索引操作符([])和切片操作符([ : ])来获取子串
pystr[1:4]         ->       "ytho"
pystr[:4]     ->     "pytho"
pystr[-1]    ->     "n"
加号(+)用于字符串连接运算,星号(*)则用于字符串重复
pystr * 2          ->        "pythonpython"
pystr + " " + pystr2             ->          "python Python"

其中字符串中的元素是不可以直接修改的,就是说字符串是不可变的类型,只有另行创建一个空字符串去

2.8    列表和元组
列表元素用中括号([])包裹,元素的个数及元素的值可以改变。
元组元素用小括号(())包裹,不可以更改,元组可以看成是只读的列表。
两者可以通过切片运算([] 和[:])可以得到子集。
>>>aList = [1,2,3,4]
>>>aList
[1,2,3,4,]
>>>aList[0]
1
>>>aList[2:]
[3,4]
>>>aList[1] = 5
>>>aList
[1,5,3,4]

>>>aTuple = ('robots',77,93,'try')
>>>aTuple
('robots',77,93,'try')
>>>aTuple[:3]
('robots',77,93)
>>>aTuple[1] = 5
TypeError: object doesn't support item assignment

3.9   字典(映射数据类型,由键-值对构成,字典元素用大括号({})包裹)
>>>aDict = {'host':'earth'}
>>>aDict['port'] = 80
>>>aDict
{'host':'earth','port':80}

3.10 代码块
代码块通过缩进对齐表达代码逻辑,而不是使用大括号。对应Python的简洁,可读性好的特点,代码块之间一般会空格一行的习惯。

3.11 语句
if语句
if expression:
    if_suite
elif expression2:
    elif_suite
else:
    else_suite


while循环
while expression:
    while_suite

for循环和range()内建函数
Python的for和传统的for不一样,for接受可迭代对象,每次迭代其中一个元素和其他语言的for....each一样
for i in [1,2,2,3]:
    print i
range()内建函数接受一个数值范围,并生成一个范围列表:range(3) 相当于 [0,1,2]
结合for语句:
for item in range(3):
    print item
输出:
0
1
2

3.12 列表解析
Python中一个强大的术语,让代码更加简洁,易懂
squared = [x ** 2 for x in range(4)]    #0-3的数的平方
sqdEvens = [x ** 2 for x in range(8) if not x % 2]            #0-7中奇数的平方

3.13 文件和内建函数open(),file()
在你已经习惯一门语言的语法之后,文件的访问时相当重要的一环。在一些工作做完之后,将它保存到持久储存很重要。
如何打开文件:
handle = open(file_name,access_mode='r')
file_name变量包含要打开的文件的字符串名字,access_mode中的'r'表示读取,'w'表示写入,'a'表示添加。
如果open()成功,一个文件对象句柄会被返回。文件操作都必须通过句柄来操作。
例子:
filename = raw_input('Enter file name:')
fobj = open(filename,'r')
for eachLine in fobj:
    print eachLine,
fobj.close()

3.14 错误和异常
要给自己的代码加上错误检测及异常处理,就将他们“封装”在try-except语句中,try之后的代码组就是你打算管理的代码,except之后的代码组则是你处理错误的代码。
try:
    filename = raw_input('Enter file name')
    fobj = open(filename,'r')
    for eachLine in fobj:
        print eachLine,
    fobj.close()
except IOError,e:
    print 'file open error:',e

3.15函数
Python中的函数使用小括号(())调用。函数在调用之前必须先定义。如果函数中没有return语句,就会自动返回None对象。Python是通过引用调用的。这意味着函数内对参数的改变会影响到原始对象。不过事实上只有只有可变对象会受影响。对不可变对象来说,它的行为类似按值调用。
定义函数:
def function_name([argumemts]):
    "optional documenttation string"
    function_suite

定义函数由def关键字+函数名+参数;参数是可选的;语句由冒号(:)结束之后就是代表函数体的代码组。例子:
def addMe2(x):
    "apply + operation to argument"
    return (x + x)

3.16 类
类是面向对象编程的核心,它扮演相关数据及逻辑容器的角色。它们提供了创建“真实”对象(实例)的蓝图。
Python可以用类来编程,也可以不用。不强制规定。
如何定义类:
class ClassName(base_class[es]):
    "optional documentation string"
    static_member_declarations
    method_declarations
使用class关键字定义类,可以提供一个可选的父类或者说基类,如果没有合适的基类,那就使用object作为基类,class行之后是可选的文档字符串,静态成员定义及方法定义。
例子:(抓取淘宝MM图片的爬虫)
import urllib
import urllib2
import re
 
class Spider:
 
    def __init__(self):
        self.siteURL = 'http://mm.taobao.com/json/request_top_list.htm'
 
    def getPage(self,pageIndex):
        url = self.siteURL + "?page=" + str(pageIndex)
        print url
        request = urllib2.Request(url)
        response = urllib2.urlopen(request)
        return response.read().decode('gbk')
 
    def getContents(self,pageIndex):
        page = self.getPage(pageIndex)
        pattern = re.compile('<div class="list-item".*?pic-word.*?<a href="(.*?)".*?<img src="(.*?)".*?<a class="lady-name.*?>(.*?)</a>.*?<strong>(.*?)</strong>.*?<span>(.*?)</span>',re.S)
        items = re.findall(pattern,page)
        for item in items:
            print item[0],item[1],item[2],item[3],item[4]
 
spider = Spider()
spider.getContents(1)
当一个实例被创建时,__inti__()方法会自动执行,在类实例创建完毕后执行,类似构造器。__init__()可以被当作构造器,不过不像其他语言,它并不创建实例——它仅仅是你的对象创建后执行的第一个方法,目的是初始化必要的对象。类有默认的__init__()方法(什么也不做)可以自己定义__init__()方法覆盖默认的__init__()方法。类中每个方法都有一个self参数,它是类实例自身的引用。其他语言通常用this表示。

如何创建类实例:
spider = Spider()

3.17  模块
模块是一种组织形式,它将彼此有关系的Python代码组织到一个个独立文件当中。模块可以包含可执行代码,函数和类,或者这些东西的组合。
当你创建了一个Python源文件,模块的名字就是不带.py后缀的文件名。一个模块创建之后可以导入其他模块
正如上面的代码
import urllib
import re
导入特定的模块
如果你要使用模块中的变量或者函数(对象),前面要加上模块名(为了区分程序中的和模块中变量相同的矛盾)

3.18 实用函数
dir([obj])                 显示对象属性
help([obj])             以一种整齐的形式显示对象的文档字符串,如果没有提供任何参数,则会进入交互式帮助
int(obj)             将一个对象转换成整型
len(obj)             返回对象长度
open(fn,mode)             打开文件
range([start,]stop[,step])                返回一个整型列表
raw_input(str)                等待用户输入一个字符串,str为提示信息
str(obj)                         将一个对象转换成字符串
type(obj)                   返回对象的类型(返回值本身是一个type对象!)




0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3923次
    • 积分:129
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:4篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论