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

 

 

 

 

 

 

posted @ 2019-05-28 17:30  球球啦啦啦  阅读(388)  评论(0)    收藏  举报