zoukankan      html  css  js  c++  java
  • Day01

    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

    作业一:博客

    作业二:编写登陆接口

    • 输入用户名密码
    • 认证成功后显示欢迎信息
    • 输错三次后锁定
    作业三:多级菜单
    • 三级菜单
    • 可依次选择进入各子菜单
    • 所需新知识点:列表、字典
  • 相关阅读:
    js学习(4) 函数
    Js学习(3) 数组
    NGUI的UILabel
    unity模型部分替换
    工作流程
    unity 资源内存管理
    unity 跑酷demo
    unity动画相关
    unity之C#回调函数
    maya导入unity
  • 原文地址:https://www.cnblogs.com/RUReady/p/5911380.html
Copyright © 2011-2022 走看看