Python全栈之路---day01(背景、语法初识)

PART ONE Python背景知识

Python历史

       1989年的圣诞节期间,荷兰人吉多·范罗苏姆(Guido van Rossum),即我们熟悉的龟叔,在阿姆斯特丹不堪眼前的无趣生活,决心开发一种新的脚本解释程序,以作为ABC语言的一种传承。于是乎,Python语言诞生了,之所以取名为Python(大蟒蛇),取名灵感来源于英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(Monty Python's Flying Circus)。

图1 Python之父---吉多·范罗苏姆

  目前,Python语言是由一个核心团队在维护,但这其中,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。

Python环境

Windows环境(手动添加环境变量)

1、下载安装包https://www.python.org/downloads/

2、安装:默认安装路径:C:python27

3、配置环境变量:【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】如:原来的值;C:python27,切记前面有分号

Windows环境(自动添加环境变量)

1、下载安装包

2、选择版本

3、自动填加环境变量

4、更改路径

点击安装直至完成

Linux环境下:无须安装,原装Python环境

Python发展

2019年7月的TIOBE排行榜,Python已经占据第三的位置, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。

由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!!

Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。

目前Python主要应用领域:

  • 云计算: 云计算最火的语言, 典型应用OpenStack
  • WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系统运维: 运维人员必备语言
  • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
  • 图形GUI: PyQT, WxPython,TkInter

Python在一些公司的应用: 

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
  • CIA: 美国中情局网站就是用Python开发的
  • NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算
  • YouTube:世界上最大的视频网站YouTube就是用Python开发的
  • Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
  • Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
  • Facebook:大量的基础库均通过Python实现的
  • Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
  • 豆瓣: 公司几乎所有的业务均是通过Python开发的
  • 知乎: 国内最大的问答社区,通过Python开发(国外Quora)
  • 春雨医生:国内知名的在线医疗网站是用Python开发的
  • 除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。

1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

  • Granddaddy of Python web frameworks, Zope 1 was released in 1999
  • Python 1.0 - January 1994 增加了 lambdamapfilter and reduce.
  • Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础
  • Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生
  • Python 2.5 - September 19, 2006
  • Python 2.6 - October 1, 2008
  • Python 2.7 - July 3, 2010
  • In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
  • Python 3.0 - December 3, 2008
  • Python 3.1 - June 27, 2009
  • Python 3.2 - February 20, 2011
  • Python 3.3 - September 29, 2012
  • Python 3.4 - March 16, 2014
  • Python 3.5 - September 13, 2015
  • Python 3.6 - December 16,2016
  • Python 3.7- June 27, 2018

Python种类

Python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。新的Python程式建议使用Python 3.0版本的语法。除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。

Python 3.0的变化主要在以下几个方面:

1、print 函数

print语句没有了,取而代之的是print()函数

2、Unicode

Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。

现在, 在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays。

3、除法运算

Python中的除法较其它语言显得非常高端,有套很复杂的规则。Python中的除法有两个运算符,/和//

首先来说/除法:

在python 2.x中/除法就跟我们熟悉的大多数语言,比如Java啊C啊差不多,整数相除的结果是一个整数,把小数部分完全忽略掉,浮点数除法会保留小数点的部分得到一个浮点数的结果。

在python 3.x中/除法不再这么做了,对于整数之间的相除,结果也会是浮点数。

4、异常

在 Python 3 中处理异常也轻微的改变了,在 Python 3 中我们现在使用 as 作为关键词。

捕获异常的语法由 except exc, var 改为 except exc as var

使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支持这两种语法。

  • 1. 在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出。
  • 2. 2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可。

在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。

5、xrange

在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典推导式。

这个表现十分像生成器(比如。"惰性求值")。但是这个 xrange-iterable 是无穷的,意味着你可以无限遍历。

由于它的惰性求值,如果你不得仅仅不遍历它一次,xrange() 函数 比 range() 更快(比如 for 循环)。尽管如此,对比迭代一次,不建议你重复迭代多次,因为生成器每次都从头开始。

在 Python 3 中,range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中 xrange() 会抛出命名异常)。

6、八进制字面量表示

八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111。

新增了一个bin()函数用于将一个整数转换成二进制字串。 Python 2.6已经支持这两种语法。

在Python 3.x中,表示八进制字面量的方式只有一种,就是0o1000。

7、不等运算符

Python 2.x中不等于有两种写法 != 和 <>

Python 3.x中去掉了<>, 只有!=一种写法,还好,我从来没有使用<>的习惯

8、去掉了repr表达式``

Python 2.x 中反引号``相当于repr函数的作用

Python 3.x 中去掉了``这种写法,只允许使用repr函数,这样做的目的是为了使代码看上去更清晰么?不过我感觉用repr的机会很少,一般只在debug的时候才用,多数时候还是用str函数来用字符串描述对象。

9、多个模块被改名(根据PEP8)

旧的名字新的名字
_winreg winreg
ConfigParser configparser
copy_reg copyreg
Queue queue
SocketServer socketserver
repr reprlib

StringIO模块现在被合并到新的io模组内。 new, md5, gopherlib等模块被删除。 Python 2.6已经支援新的io模组。httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包内。取消了exec语句,只剩下exec()函数。 Python 2.6已经支援exec()函数

10、数据类型

1)Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long

2)新增了bytes类型,对应于2.X版本的八位串,定义一个bytes字面量的方法如下:

 b = b'china' 
>>> type(b) 
<type 'bytes'>

str 对象和 bytes 对象可以使用 .encode() (str -> bytes) 或 .decode() (bytes -> str)方法相互转化。

>>> s = b.decode() 
>>> s 
'china' 
>>> b1 = s.encode() 
>>> b1 
b'china'

3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有 dict.has_key(),用 in替代它吧 。

PART TWO 语法初识

运行Python代码

在你的文件夹中新建第一个Python脚本文件hello.py,输入内容:

print("hello world")

 打开命令行工具输入cmd,点击确定后直接在窗口中输入命令:

 Python hello.py

按下enter键即可看到窗口中的运行结果,如下图所示

 

注释

为了方便自己以及他人理解代码,Python语言同样支持对代码进行注释。

单行注释:若开人员仅仅只需要注释某一行代码,在改行的头部加上“#”号即可

多行注释:若开发人员想要注释的内容跨了多行,此时选用单行注释则显得太过臃肿,此时便可用三引号组对其进行注释。格式为:’’’被注释的内容’’’ 或“””被注释的内容”””

常量与变量

常量

常量指的是一直不变的量。如圆周率常量π,也可自定义常量。

在Python中没有一种专门的语法用来代表常量,程序员约定俗成用全部大写的变量名来代表常量。如BIR_OF_Chian=1949、AGE_OF_JACK=21(建议用下划线和介词of来连接各个名词,可读性强)

变量

与常量相对应,变量指的即为值可以发生变化的量。变量用于将程序的中间结果临时地存在内存中,以便于后续的代码调用。

变量声明:

s='hello'
a=1

变量定义的规则:

1,必须由数字,字母,下划线任意组合,且不能数字开头。

2,不能是python中的关键字。

      ['and', 'as', 'assert', 'break', 'class', 'continue','def', 'del', 'elif', 'else', 'except', 'exec','finally', 'for', 'from', 'global', 'if', 'import','in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

3,变量具有可描述性。

4,不能是中文。

Ps:推荐使用驼峰体和下划线对变量进行定义。

基本数据类型初识

         计算机区别人类,在人类的认知里,1为数字,“好”是汉字,但是计算机是无法区分二者的区别的,除非你明确告诉它如何区分,于是在每种编程语言中都会存在一个叫数据类型的东西,说白了就是对各种常用的数据进行类型的划分,想让计算机处理什么数据就给它传入对应的数据。Python语言常用的数据类型也有很多,本次学习的有3种:数字、字符串、布尔类型。

 (1)数字:int(整型) 12,3,45  取值范围: 32位机器上为-2^31~2^31-1   64位机器上为-2^63~2^63-1

        运算:加(+)减(-)乘(*)除(/)取余(%)幂次方(**)

a='泰哥'
b='小二'
c=a+b
print(c)
print('泰哥'+'熊二'+'')
print('坚强'*8)

        ps:python3无长整型(long)均为整型

        ps:type()可用于判断数据类型

print(100,type(100))
print('100',type('100'))
print("I'm a student")

   (2)字符串:str,python中凡是用引号(单引号双引号都可以,注意特殊情况下的使用)引起来的均为字符串

        ps:特殊情况下的引号-------单双引号并没有任何区别,只是在特定的情况下需要二者配合才能发挥作用,例如:Msg=”My name is Jack,I’m 21 years old!”

        可相加:字符串的拼接

        可相乘:str*int

        三双引号可用于输出换行的多行文字(为了保留起始行与行之间的风格)例如:

msg='''
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。
'''
print(msg)

  

(3)bool:布尔值。True 或 False 

用户交互

Input

1、等待输入 

2、将你输入的内容赋给了前面的变量

3、input出来的数据类型全部都是str

name=input("请输入你的名字:")
age=input("请输入你的年龄:")
print(name,age,type(name),type(age))
print('我的名字是'+name+',我'+age+'岁了')

 

流程控制语句---if语句

       写程序也和人们走路一样,总会遇到很多岔路口,截止目前为止,我们所遇到的都是直路,而在实际开发过程中,我们不可避免的会遇到分叉口,此时决定走哪边必然是有所动机的,你要判断哪条岔路是你真正要走的路,结合程序代码来看,我们只需在程序里预设一些条件判断语句,满足何总条件就执行对应的代码,这个过程就叫做流程控制。

         if…else语句

         单分支

         if 条件:

               满足条件后要执行的代码

         双分支

         if 条件:

               满足条件执行代码

  else:

               if条件不满足就走这段

PS:缩进----观察上述代码结构不难发现每个条件的下一行都缩进了4个空格,这是何种原因呢?这便是Python的一大特色,强制缩进,其目的是为了让程序知道,每段代码依赖于哪一个条件,如果不用缩进来加以区分,程序怎么会知道当你的条件成立后应该去执行哪一段代码呢?

         Python的缩进有以下几个原则:

    1、顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进

    2、同一级别的代码,缩进必须一致

Ps:官方建议缩进用4个空格,当然你也可以用2个,如果你想被人笑话的话。

多分支:

        if 条件:
               满足条件执行代码
        elif 条件:
               上面的条件不满足就走这个
        elif 条件:
               上面的条件不满足就走这个
        elif 条件:
               上面的条件不满足就走这个    
        else:
               上面所有的条件不满足就走这段

 

 

原文地址:https://www.cnblogs.com/zhuoning/p/11347849.html