Day01 - Python 基础介绍

1 Python 简介

1.1 Python 的由来

Python的创始人:吉多·范罗苏姆(Guido van Rossum)

1989年,吉多·范罗苏姆为了在阿姆斯特丹打发圣诞节假期时间,开发的一个新的脚本解释程序,作为ABC语言的一种继承。

Python社区的人赋予他“仁慈大君” 的称号,这一称号直接来自英国肥皂剧《Monty Python飞行马戏团》。Guido当初之所以选中Python作为语言的名字,是因为他太喜欢这部肥皂剧了。

1.2 Python 现状

TIOBE排行榜 

http://www.tiobe.com/tiobe-index/

 

 

1.3 Python 的特点

优点:

  • 1)易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

  • 2)易于阅读:Python代码定义的更清晰。

  • 3)易于维护:Python的成功在于它的源代码是相当容易维护的。

  • 4)一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。

  • 5)互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。

  • 6)可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

  • 7)可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。

  • 8)数据库:Python提供所有主要的商业数据库的接口。

  • 9)GUI编程:Python支持GUI可以创建和移植到许多系统调用。

  • 10)可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

缺点:

  • 1)运行速度慢:和C程序相比非常慢。因为Python是解释型语言,代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。

  但是大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。例如,开发一个下载MP3的网络应用程序,C程序的运行时间需要0.001秒,而Python程序的运行时间需要0.1秒,慢了100倍,但由于网络更慢,需要等待1秒,用户能感觉到1.001秒和1.1秒的区别吗?这就好比F1赛车和普通的出租车在北京三环路上行驶的道理一样,虽然F1赛车理论时速高达400公里,但由于三环路堵车的时速只有20公里,因此,作为乘客,你感觉的时速永远是20公里。

不要在意程序运行速度

  • 2)代码不能加密:如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。

  这个缺点仅限于你要编写的软件需要卖给别人挣钱的时候。好消息是,在目前的互联网时代,靠卖软件授权的商业模式越来越少了,靠网站和移动应用卖服务的模式越来越多了,后一种模式不需要把源码给别人。另外,现在如火如荼的开源运动和互联网自由开放的精神是一致的,互联网上有无数非常优秀的像Linux一样的开源代码,我们千万不要高估自己写的代码真的有非常大的“商业价值”。那些大公司的代码不愿意开放的更重要的原因是代码写得太烂了,一旦开源,就没人敢用他们的产品了。

哪有功夫破解你的烂代码

  • 3)线程不能利用多CPU:这是Python被人诟病最多的一个缺点,GIL即全局解释器锁。是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。

 1.4 Python应用领域

  • WEB/客户端 开发: 豆瓣、Youtube 、Quora 、BitTorrent、dropbox 、Gmail、Google Maps
  • 云计算:OpenStack
  • 爬虫:搜索引擎、网站比价、买火车票
  • 游戏: EVE online 、Civilization IV
  • 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系统运维: 运维人员必备语言
  • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
  • 图形GUI: PyQT, WxPython,TkInter

1.5 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完成各种各样的任务。

2 Python 环境搭建

2.1 获取安装包

下载地址:https://www.python.org/downloads/

2.2 安装

  2.2.1 Windows:

    1)添加到PATH

    

    

    2)next

    

    3)选择安装目录

    

    4)安装成功

    

  2.2.2 Linux:

     解压、编译、安装

1 # tar zxvf Python-3.5.2.tgz
2 
3 # cd  Python-3.5.2
4 
5 # ./configure
6 
7 # make
8 
9 # make install

 

3 Python的Hello World

3.1 交互模式

1 Python 3.5.2 (default, Sep 28 2016, 14:44:21) 
2 [GCC 4.1.2 20070626 (Red Hat 4.4.7-3)] on linux
3 Type "help", "copyright", "credits" or "license" for more information.
4 >>> print("Hello World!")
5 Hello World!
6 >>>

3.2 执行文件模式

1 编辑文件:vi hello.py
2 写入代码:print("Hello Woold!")
3 执行文件:python hello.py

3.3 使用IDE

3.3.1 PyCharm 简介

PyCharm是由JetBrains打造的一款Python IDE,具备调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等功能。另外,PyCharm还提供了一些很好的功能用于Django开发,同时支持Google App Engine,更酷的是,PyCharm支持IronPython!

3.3.2 PyCharm快捷键

在菜单栏Help下你点击Default Keymap Reference,可以打开一个PDF文件,里面列出了所有的快捷键,你可以打印出来备用。千万不要被这么多快捷键吓到了,日常编程经常使用的也就下面 几个,如果你想放弃鼠标,直接纯键盘编程,那么你会完全爱上PyCharm。

◆  Basic code completion --- ”基本代码完成“快捷键

在日常写代码中,Basic code completion是用的比较多的,它可以智能的提示你或者帮你补全余下的代码。但是这一个快捷键是最有争议的一个快捷键,因为它的快捷方式是Ctrl + Space,会与我们的输入法快捷键冲突,所以第一步我们需要改变这个快捷键,我一般喜欢改成Ctrl + Comma。(如何修改默认快捷键见下面介绍)

◆  Tab

Tab 有2种情况:

1. 当你什么也没有输入的时候,Tab只是4个空格的缩进。

2. 当你输入前几个字母,PyCharm会智能的列出所有的候选项,这时候,你只要按下Tab,会默认选择第一个候选项。你也许觉得这没什么,但是这个功能能保证你的双手不离口键盘的“字母区”,你不需要按上下左右键去选择候选项,提供输入速度,非常流畅。

◆  Shift+Enter --- 智能换行

class function鼠标在这(): 鼠标在function后面括号前面,我想换到下一行正确的位置写代码,那么就Shift+Enter 智能换行吧

◆  其他快捷键 --- 如果你感兴趣,就看Default Keymap Reference吧,保证有惊喜

 

3.3.3 PyCharm默认快捷键的修改

上面提到,我们需要修改Basic code completion的默认快捷键。

1)快捷键(Ctrl + Alt + S)打开设置面板,或者点击如图所示红方框里面的图标:

2)找到Keymap选项

 

3.3.4 PyCharm 的插件

因为PyCharm的功能已经很强大了,我一般很少用插件,这里介绍一个我很喜欢的插件,叫Native Neighbourhood,这个插件可以快速的打开操作系统的文件。

那么如何安装插件呢?

1)快捷键(Ctrl + Alt + S)打开设置面板,或者点击如图所示红方框里面的图标

2)找到Plugins

 

3.3.5 PyCharm 一下吧

那么现在就点击这个链接下载吧,不需要找注册码,先试用一个月再说!

http://www.jetbrains.com/pycharm/

4. 注释

4.1 单行注释

使用符号#开头注释单行内容:

1 #!/usr/bin/env python
2 # -*- coding: UTF-8 -*-
3 # 文件名:test.py
4 
5 # 第一个注释
6 print("Hello, Python!") # 第二个注释

输出结果:

1 Hello, Python!

4.2 多行注释

使用三个单引号(''')或三个双引号(""")注释多行内容

 1 #!/usr/bin/env python
 2 # -*- coding: UTF-8 -*-
 3 # 文件名:test.py
 4 
 5 
 6 '''
 7 这是多行注释,使用单引号。
 8 这是多行注释,使用单引号。
 9 这是多行注释,使用单引号。
10 '''
11 
12 """
13 这是多行注释,使用双引号。
14 这是多行注释,使用双引号。
15 这是多行注释,使用双引号。
16 """

5 变量和数据类型

5.1 什么是变量

变量是存储在内存中的值。这就意味着,在创建变量时,会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

5.2 变量的声明和赋值

 1 #!/usr/bin/env python
 2 # -*- coding: UTF-8 -*-
 3 
 4 counter = 100 # 赋值整型变量
 5 miles = 1000.0 # 浮点型
 6 name = "John" # 字符串
 7 
 8 print counter
 9 print miles
10 print name

以上实例中,100,1000.0和"John"分别赋值给counter,miles,name变量。

执行以上程序会输出如下结果:

1 100
2 1000.0
3 John

5.3 变量的命名规则

  • 变量名只能是字母、数字或下划线的任意组合
  • 变量名第一个字符不能是数字
  • 关键字不能声明为变量名

以下关键字不能声明为变量名
['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']

6 输出和输入

6.1 输出

print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出'hello, world',用代码实现如下:

1 >>> print("Hello World!")
2 Hello World!

print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:

1 >>> print('The quick brown fox', 'jumps over', 'the lazy dog')
2 The quick brown fox jumps over the lazy dog

6.2 输入

Python提供了一个input(),可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:

1 >>> name = input()
2 James
3 >>> print(name)
4 James

 

python3中的input() 即为 python2中的raw_input()

1 #!/usr/bin/env python
2 # -*- coding: UTF-8 -*-
3 
4 #name = raw_input("What is your name?") #only on python 2.x
5 name = input("What is your name?")
6 print("Hello " + name )

 

输入密码时,如果想要不可见,需要利用 getpass 模块中的 getpass 方法,即:

 1 #!/usr/bin/env python
 2 # -*- coding: UTF-8 -*-
 3 
 4 import getpass
 5 
 6 # 将用户输入的内容赋值给 name 变量
 7 passwd = getpass.getpass("请输入密码:")
 8 
 9 # 打印输入的内容
10 print(passwd )

7 字符编码

8 流程控制

8.1 if ... else ...

场景一:用户登录验证

 1 # 提示输入用户名和密码
 2   
 3 # 验证用户名和密码
 4 #     如果错误,则输出用户名或密码错误
 5 #     如果成功,则输出 欢迎,XXX!
 6  
 7  
 8 #!/usr/bin/env python
 9 # -*- coding:UTF-8 -*-
10 
11 import getpass
12 
13 name = input('请输入用户名:')
14 passwd = getpass.getpass('请输入密码:')
15   
16 if name == "James" and passwd == "123":
17     print("欢迎,James!")
18 else:
19     print("用户名和密码错误")

 

场景二、猜年龄游戏

在程序里设定好你的年龄,然后启动程序让用户猜测,用户输入后,根据他的输入提示用户输入的是否正确,如果错误,提示是猜大了还是小了。

8.2 for loop

循环10次:

1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 
4 for i in range(10):
5     print("loop:", i )

输出结果:

 1 loop: 0
 2 loop: 1
 3 loop: 2
 4 loop: 3
 5 loop: 4
 6 loop: 5
 7 loop: 6
 8 loop: 7
 9 loop: 8
10 loop: 9

 

需求一:还是上面的程序,但是遇到小于5的循环次数就不走了,直接跳入下一次循环

1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 
4 for i in range(10):
5     if i<5:
6         continue #不往下走了,直接进入下一次loop
7     print("loop:", i )

输出结果:

1 loop: 5
2 loop: 6
3 loop: 7
4 loop: 8
5 loop: 9

 

需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出

1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 
4 for i in range(10):
5     if i>5:
6         break #不往下走了,直接进入下一次loop
7     print("loop:", i )

输出结果:

1 loop: 5
2 loop: 6
3 loop: 7
4 loop: 8
5 loop: 9

8.3 while loop

只要条件满足,就不断循环,条件不满足时退出循环

1 #!/usr/bin/env python
2 # -*- coding:UTF-8 -*-
3 
4 count = 0
5 while (count < 9):
6    print('The count is:', count)
7    count = count + 1
8 
9 print("Good bye!")

输出结果:

 1 The count is: 0
 2 The count is: 1
 3 The count is: 2
 4 The count is: 3
 5 The count is: 4
 6 The count is: 5
 7 The count is: 6
 8 The count is: 7
 9 The count is: 8
10 Good bye!

 

while 的死循环

1 #!/usr/bin/env python
2 # -*- coding:UTF-8 -*-
3 
4 count = 0
5 while True:
6     print("加鸡腿...",count)
7     count +=1

 

作业一:博客

 

作业二:编写登陆接口

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

 

作业三:多级菜单
  • 三级菜单
  • 可依次选择进入各子菜单
  • 所需新知识点:列表、字典
posted @ 2016-10-15 07:34  R.U.Ready  阅读(560)  评论(0编辑  收藏  举报