Python基础
一、简介:
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,具有20多年的发展历史,成熟且稳定。
应用领域:
(1).常规软件开发
(2).科学计算
(3).自动化运维、操作系统管理
(4).云计算
(5).WEB开发
(6).网络爬虫、服务器软件
(7).数据分析
(8).人工智能
(9).游戏
(10).金融分析与交易
Python 量化平台:
国内平台:优矿 uqer.io 聚宽joinquant.com 米筐 ricequant.com
国外平台:quantopian.com
Python的就业方向
- 发展前景一:Linux运维
- 发展前景二:Python Web网站工程师
- 发展前景三:Python自动化测试
- 发展前景四:数据分析
- 发展前景五:人工智能
例子:
国外:谷歌、youtobe。。。
国内:知乎、搜狐、网易游戏、豆瓣。。。
二、安装
1、(下载安装 python运行环境) 上python官网下载python运行环境(https://www.python.org/downloads/),建议下载稳定版本,不推荐使用最新版本
2、(测试)打开cmd

3、如果失败手动配置系统环境

3、安装python包
安装包有两种方法,一种是使用命令行,一种是IDE选择安装
1)下载 https://pypi.python.org/pypi/pip

在管理员方式DOS下输入下图命令,进入pip-9.0.1文件夹,然后输入:python setup.py install 进行pip安装
2)(下载安装)上pycharm官网下载最新版的IDE(http://www.jetbrains.com/pycharm/download/#section=windows),官网提供了mac、windows和linux三种版本
1、

2、

3、

4、

三、简单使用
1、Python交互模式

2、使用IDE开发工具PyCharm
1)创建工程


2)创建一个python文件

3)编写简单语句

4)运行

5)结果

五、使用
1、使用编码格式,否则出现中文会报错
使用编码格式,否则出现中文会报错
# encoding: utf-8
或者
# -*- coding:UTF-8 -*-

2、 由于类起到模板的作用,因此,可以在创建实例的时候,把我们认为必须绑定的属性强制填写进去。这里就用到Python当中的一个内置方法__init__方法,例如在Student类时,把name、score等属性绑上去:
lass Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
>>>student = Student("Hugh", 99)
>>>student.name
"Hugh"
>>>student.score
99
注:
(1)__init__方法的第一参数永远是self,表示创建的类实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
(2)有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器会自己把实例变量传进去:
(3)这里self就是指类本身,self.name就是Student类的属性变量,是Student类所有。而name是外部传来的参数,不是Student类所自带的。故,self.name = name的意思就是把外部传来的参数name的值赋值给Student类自己的属性变量self.name。
(4)在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用__name__、__score__这样的变量名。
3、 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线.
class Student(object):
def __init__(self, name, score):
self.__name = name
self.__score = score
def print_score(self):
print "%s: %s" %(self.__name,self.__score)
注:关于新旧式类
(1)继承object类是为了让自己定义的类拥有更多的属性,以便使用。当然如果用不到,不继承object类也可以。python2中继承object类是为了和python3保持一致,python3中自动继承了object类。
(2)python2中需要写为如下形式才可以继承object类。
def class(object):
python2中写为如下两种形式都是不能继承object类的,也就是说是等价的。
def class:
def class():
基础使用:
# encoding: utf-8 #coding=utf-8 # -*- coding: UTF-8 -*- # 编码格式,必须要使用 print('----------------1--------------') print ("hello Python!"); print ("123",123); print ("1+1=",1+1); print ("2的7次方",2 ** 7); print('-------------2---判断/循环------------------------------') # 判断 if (1!=1): print ("True1") elif 2==2: print ("True2") else: print ("False") print('----------') # 循环 for x in [1, 2, 3]: print(x) print('-------------3字符串--------------------------------') str = 'RunoobReb' print(str) # 含头不含尾 print("0-"+str[0]) print("01-"+str[0:-1]) print("25-"+str[2:5]) # 隔2个取数 print("162-"+str[1:6:2]) print("2-"+str[2:]) print(str * 2) print(str + "123asd") # print('-------------数组---------------------------------') # 数组 tup = (1, 2, 3, 4, 5, 6) # 含头不含尾 print(tup[0]) print(tup[1:5]) # 计算长度 print(len(tup)) # print('-------------集合1----------------------------') # list是python基本数据类型,它的元素类型可以不同,如:[1, 2, 'a', 3,4] # array是numpy的一种数据类型,它所包含的元素类型必须相同,如: [1, 2, 3, 4] # NumPy系统是Python的一种开源的数值计算扩展 list = [1,1,2,3] print ([[x, x**2] for x in list]) # 集合转元组 # 定义元组tuple的时候,用的是括号() # tuple一旦初始化就不能修改,这里说的不能修改是指tuple的每个元素,指向永远不变 # tuple和数组不同就在于,tuple中的元素也可以包括list可以包括自己,元组tuple不变,但是tuple里面的元素list是可变的 print (tuple(list)) # 统计1出现的次是 print ("统计",list.count(1)) # 删除 del list[2] print ("删除第三个元素 : ", list) # 新增 list.append(5) print ("增加一个元素 : ", list) # 嵌套列表 x = [['a', 'b', 'c'], [1, 2, 3]] print(x[0]) # 一次性追加一个集合 list.extend(x) print(list) list.append(x) print(list) print('-------------5集合2------------------------------') # Set(集合) 无序不重复的序列,自动去除重复 # 可以使用大括号({})或者set()函数创建集合 student = {'Tom', 'Jim', 'Mary', 'Tom','Tom', 'Jack','Jack', 'Rose'} print(student) if 'Rose' in student : print('Rose 在集合中') else : print('Rose 不在集合中') print('----update-是拆散了放进集合----') student.update({1,2},[3,4]) student.update('haha') print ("update--",student) print('----add--是整体放进集合---') student.add('haha') print ("add--",student) print('-------------6集合运算------------------------------') a = set('abcd') b = set('cdef') print(a) print(a - b) # a 和 b 的差集 print(a | b) # a 和 b 的并集 print(a & b) # a 和 b 的交集 print(a ^ b) # a 和 b 中不同时存在的元素 print('-------------7----键值对操作-------------------------') dict = {} dict['one'] = "1 - 键值对操作" dict[2] = "2 - 操作工具" tinydict = {'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'} print (dict['one']) # 输出键为 'one' 的值 print (dict[2]) # 输出键为 2 的值 print (tinydict) # 输出完整的字典 print (tinydict["name"]) # 输出键为 name 的值 print (tinydict.keys()) # 输出所有键 print (tinydict.values()) # 输出所有值 print ("copy-",tinydict.copy()) # 复制 print('-------------8---特殊字符---------------------------') # 3个引号的特殊功能,可以直接打印多行内容,而单引号,双引号情况需要显示输入\n才能换行 para_str = """这是一个多行字 符串的实例 多行字符串可以使用制表符 也可以使用换行符 [ \n ]。 TAB ( \t )。 """ print (para_str) print('-------------9------------------------------') yourSlushUStr = "\\u559c\\u6b22\\u4e00\\u4e2a\\u4eba"; decodedUnicodeStr = yourSlushUStr.decode("unicode-escape") print decodedUnicodeStr
爬虫小例子:
属性
r.status_code
http请求的返回状态,200表示连接成功,404表示连接失败
r.text
http响应内容的字符串形式,url对应的页面内容
r.encoding
从HTTP header中猜测的响应内容编码方式
r.apparent_encoding
从内容分析出的响应内容的编码方式(备选编码方式)
r.content
HTTP响应内容的二进制形式
r.headers
http响应内容的头部内容
案例1:
# -*- coding: UTF-8 -*- import requests url="http://111.231.135.29/anon/home" try: r=requests.get(url) # r.raise_for_status()的功能是判断返回的状态码,如果状态码不是200(如404),则抛出异常 r.raise_for_status() r.encoding = "utf-8" # r.encoding = r.apparent_encoding print r.encoding # http响应内容的字符串形式,url对应的页面内容 # print r.text # http响应内容的头部内容 print r.headers # HTTP响应内容的二进制形式 # print r.content except: print "failed"
案例2:爬虫获取百度搜索结果
# coding: UTF-8 import requests url="http://www.baidu.com/s" kv={"wd":"rebecca"} r=requests.get(url,params=kv) r.encoding="utf-8" print r.request.url print r.text[:2000]
解决网站爬虫限制
有些网站限制了网络请求的来源,来阻止爬虫。一般是通过’user-agent’属性来区分。
通过
print r.request.headers
来查看user-agent属性。
requests库写的代码默认user-agent(用户代理)是’python-requests/x.xx.x’(x表示版本号)。如果访问不成功,可尝试修改’user-agent’属性。
方法如下:
1. 先构建一个字典
ua={"user-agent":"Mozilla/5.0"}
其中”Mozilla/5.0”是浏览器的普遍标识。
2. 在get方法里面加一个参数
r=requests.get(url,headers=ua)
例子3:
import requests url="http://www.cnblogs.com/hjw1" ua={"user-agent":"Mozilla/5.0"} r=requests.get(url) print r.request.headers r=requests.get(url,headers=ua) print r.request.headers
注:深究python爬虫-html可用 解析器beautifulsoup

浙公网安备 33010602011771号