STAY HUNGRY , STAY FOOLISH.

求知若饥,虚心若愚。

       浏览:

Python简介及应用场景

近一年内我学习了Python语言,对Python的喜欢攀比JavaScript语言。

以下只是个人观点:
Java语言太过强类型,不太喜欢约束的编程方式;尽管面向对象、依赖注入、控制反转、抽象的编程思想蛮OK的,但是语法上不是我喜欢的料。
反过来说,JavaScript语言和Python语言写起来就顺畅多了,弱类型的语言,你想自主定义啥都行,语法上也相比Java要简洁多了。


1.什么是Python?

在此定义之前,我想先说说Java和JavaScript,由此可引申出对Python的定义。
Java是一门面向对象的编程语言,JavaScript是一门脚本语言

python

Python是一门面向对象的脚本语言。此外,喜欢它最主要的原因是:它能让我成为全栈工程师。就目前而言,想往全栈工程师这一职务和岗位发展的,学习编程语言不外乎只有两个,一是JavaScript,二是Python

人生苦短,我用Python。在TIOBE 9月编程语言排行:Python拿下第三名,C++掉出前三
tiobe

自20世纪90年代初首次录入TIOBE,Python花了10年才首次进入指数前10名,随着它的不断应用与发展,Python逐渐在网络安全与数据科学等领域大放异彩,近年来随着人工智能与数据分析等领域的大热,Python也得到了前所未有的高度关注,目前在全球范围内它已经是大学的首选编程语言,同时也征服了工业界。越来越多人使用Python,反映在TIOBE指数上就是它稳扎稳打地一步步向上爬,从前10到前5,如今终于进入了前3。


2.Python能做什么?

先用JavaScript框架举例(几乎应用所有场景):
H5:ZeptoVueReact、小程序、快应用
客户端:ElectronNW.js
web端:jQueryElementAnt Design
app端:React Native
服务器端:Koa2

无论你想做什么,JavaScript总有它的一席之地,因此现在的前端职位火到爆。但是有个弊端,根据业务适用不同的场景和情况,全用JavaScript去实现是不太现实的做法。

从一门编程语言的诞生就决定了它的职责,用Java不可能去写web端页面,用JavaScript不可能去写app,不然就混乱了。

JavaScript的特别之处在于可以桥接使用其他的编程语言。
以React Native举例,实现原理就是通过JS去使用JavaObject-C的UI和原生机制。
再以Electron举例,实现原理就是有个大型的webview,名字叫Chromium,在其里面绘制页面,然后通过JS去使用C、C++编译成客户端应用程序。
再以Koa2举例,实现原理就是使用ES2017的异步函数语法糖封装请求、响应等模块,能更好的使用Node.js。Nodejs利用Google V8来解释运行JS,但是系统真正执行的代码是用C++写的。

Android、iOS应用App也好,客户端安装应用也好,服务器web应用也好都是稍底层的编程语言去实现的,JavaScript或多或少的只是去操作或调用其他编程语言封装的东西罢了。


既然JavaScript都如此强大了,为什么我还想学Python呢?
其实我是被一句话所吸引的,这句话是:如果你是一名资深程序员,强烈推荐你将Python做为第二语言,未来,它将助你在激烈的职场竞争中拔得头筹。
这话….我想了下….没毛病啊,编程的奥义不就是实现本身吗?编程不就是问了实现业务、功能、产品,最后为人所用。编程语言只是辅助,核心算法、设计模式、数据结构、编程思想才是重点。
多学一门编程语言,建议小白或刚从事IT行业的人员需慎重考虑,别猴子搬包谷—-搬一个丢一个,其实学好一门编程语言都很不易了。如果是在IT行业从事5年以上或希望自己能更全面的了解编程的话,学习第二门编程语言也不为过,给自己打开新的一扇门。


下面重点讲解下Python能做什么?

  • 爬虫
  • 人工智能
  • 自动化测试
  • 自动化运维
  • 大数据分析
  • Web开发

首先以Python为主要编程语言的产品有:豆瓣、知乎、今日头条。

1.爬虫
Python最让人熟知且适合的应用场景莫过于写爬虫程序,可以用Python写搜索引擎、爬取自己喜欢的数据等。
Python爬虫的框架推荐ScrapyBeautifulSoup
比如我写的示例,网址:**https://search.vmartaw.com**,完全模仿PC端的百度,爬取伯乐在线的网站数据。(建议在电脑上访问)
技术栈用的ElasticsearchKibanaDjangoScrapyRedis

Elasticsearch:强大的大数据搜索引擎,可理解成支持数据分词及检索的”数据库”。
Kibana:查看Elasticsearch的Web UI框架,可图形化操作Elasticsearch。
Django:常见的Python Web框架之一,后面会有详细介绍。
Scrapy:爬取数据,解析和操作请求的强大利器。
Redis:性能强大,缓存数据的nosql数据库。

有兴趣的童鞋可以自行咨询百度和谷歌。

search

Scrapy爬取的核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request
from urllib import parse
import time

from ArticleSpider.items import JobBoleArticleItem, ArticleSpiderItem


class JobboleSpider(scrapy.Spider):
name = 'jobbole'
allowed_domains = ['blog.jobbole.com']
start_urls = ['http://blog.jobbole.com/all-posts/']

def parse(self, response):
# 1.根据列表获取所有文章url,交给scrapy下载解析
# post_nodes = response.css('#archive .post.floated-thumb > .post-thumb > a')
post_nodes = response.css('#archive .post.floated-thumb > .post-meta a.archive-title')
for post_node in post_nodes:
image_url = post_node.css('img::attr(src)').extract_first('')
image_all_url = parse.urljoin(response.url, image_url)
post_url = post_node.css('::attr(href)').extract_first('')
time.sleep(1)
yield Request(url=parse.urljoin(response.url, post_url),
meta={"front_image_url": image_all_url}, callback=self.parse_detial)

# 2.获取下一页的列表,交给parse函数
next_page = response.css('.next.page-numbers::attr(href)').extract_first()
if next_page:
yield Request(url=parse.urljoin(response.url, next_page), callback=self.parse)

def parse_detial(self, response):
# 通过item_loader加载item
item_loader = ArticleSpiderItem(item=JobBoleArticleItem(), response=response)
item_loader.add_css('title', '.entry-header h1::text')
item_loader.add_value('url', response.url)
item_loader.add_css('date', '.entry-meta-hide-on-mobile::text')
item_loader.add_value('front_image_url', [response.meta.get('front_image_url', '')])
item_loader.add_value('zan_nums', '')
item_loader.add_css('fav_nums', '.bookmark-btn::text')
item_loader.add_css('comment_nums', 'a[href="#article-comment"] > span::text')
item_loader.add_css('tags', '.entry-meta-hide-on-mobile > a::text')
item_loader.add_css('content', 'div.entry')
item_loader.add_value('url_object_id', response.url)
article_item = item_loader.load_item()
yield article_item

scrapy

Scrapy官网:https://scrapy.org
BeautifulSoup官网:https://www.crummy.com/software/BeautifulSoup
Elasticsearch官网:https://www.elastic.co/cn/products/elasticsearch


2.AI人工智能
随着近几年人工智能的兴起,Python这门语言越来越被人所熟知,也许是因为人工智能的流行,Python火了。
人工智能有个机器学习,神经网络之类的,推荐框架当然是Google的Tenserflow,还有Keras
这方面我之前研究过,Tenserflow对算法和数学能力要求很高,自己能力还不够,有时间会慢慢研究的。
执行流程示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# -*- coding: UTF-8 -*-

# 引入 TensorFlow 库
import tensorflow as tf

# 创建一个 Constant(常量)Operation(操作)
hw = tf.constant("Hello World! I love TensorFlow!")

# 启动一个 TensorFlow 的 Session(会话)
sess = tf.Session()

# 运行 Graph(计算图)
sess.run(hw)

# 关闭 Session(会话)
sess.close()

tensorflow

Tenserflow官网:https://tensorflow.org
Google的官网上Tenserflow:https://tensorflow.google.cn


keras

Keras官网:http://keras.io


3.自动化测试
这方面的内容,是参考我媳妇儿的项目。好的测试可以用Python写自动化接口测试,使用Python内置的库及方法就能实现简单的接口测试。
举例,GET、POST请求的封装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: UTF-8 -*-
import requests
import json

class runMethod:
#发送get请求
def send_get(self,url,data,headers=None):
res = None
code = None
if headers != None:
res = requests.get(url=url,params=data,headers=headers)
else:
res = requests.get(url=url,params=data)
code = res.status_code
# print(code)
return res.json()

#发送post请求
def send_post(self,url,data,headers=None):
res = None
if headers != None:
res = requests.post(url=url,data=data,headers=headers)
else:
res = requests.post(url=url,data=data)
code = res.status_code
print(code)
return res.json()

#请求入口
def run_method(self,url,data,method,headers=None):
res = None
if method == 'post':
res = self.send_post(url,data,headers)
else:
res = self.send_get(url,data,headers)
return json.dumps(res,indent=2)

if __name__ == '__main__':
run = runMethod()
data = {
'mobile': '13540258963',
'password': '123456'
}
url = 'https://b.shandian.net/shop/entry/login?format=json'
res = run.run_method(url,data,'post')
print(res)

举例,使用Python的第三方库pymysql,可实现链接和操作mysql数据库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# -*- coding: UTF-8 -*-
import pymysql.cursors
class connectDB:
def __init__(self):
#创建链接
self.conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='zl930910',
db='shandianShop_Interface',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
#创建游标
self.cursor = self.conn.cursor()

#搜索一条数据
def search_one(self,sql):
self.cursor.execute(sql)
res = self.cursor.fetchone()
return res

if __name__ == '__main__':
connect = connectDB()
sql = "select * from login_user where mobile = '13540258963'"
connect.search_one(sql)

4.自动化运维
自动化运维我不怎么熟悉,只会使用常见的Linux命令。关于Python自动化运维的框架,推荐Ansible,可实现自动化资产扫描和发现等功能。

Ansible

没怎么接触过Ansible,在这里就不细说了。(真说不出来)

官网:**https://www.ansible.com**


5.大数据与数据分析
互联网浪潮即将结束,公司与公司之间的竞争也特别激烈。如果能通过大数据分析出竞争对手及用户的隐性需求,对于公司而言,是件特别有意义的事情。

关于Python大数据分析的框架,推荐Apache的Spark,对应支持Python的API叫PySpark。配合调优及调度框架Azkaban,让Spark作业能使用调度框架运行起来,实现对业务的分析及判断。

spark

Spark官网:http://spark.apache.org
Azkaban官网:https://azkaban.github.io


6.Web开发
目前Python流行的Web框架不外乎DjangoFlask

django

Django是Python Web框架的重量级选手。使用Django,我们在几分钟之内就可以创建高品质、易维护、数据库驱动的应用程序。

Django官网:https://www.djangoproject.com


flask

Flask是Python Web框架的轻量级选手。灵活、轻巧是它的特点,有点类似JS里面的Koa2框架,那么Django类似JS的Express框架。

Flask官网:http://flask.pocoo.org


至此,对于Python的简介和应用场景都介绍完毕,相信大家对Python有了新的认识。
Python这门语言对几乎所有的公司职位和公司行业都意义不凡。涉及的职位有爬虫工程师、前端工程师、后台工程师、测试开发工程师、DevOps运维工程师、数据分析师、机器学习工程师、AI开发工程师等,涉及的公司行业有互联网、移动互联网、医疗健康、数据服务、人工智能、区块链等。

最后做个总结,Python和JavaScript都属于胶水语言,能够连接和使用其他编程语言开发出来的框架和工具,对于想创业或拥有梦想的人来说非常值得学习!
相信机会总是留给有准备的人,Stay hungry,Stay foolish!
学习Python,你不会觉得亏的,加油!