python的介绍和及基本的使用

一 什么是计算机

  1 计算机就是由一堆硬件组成的一个机器。

  2 硬件的分类:
    CPU:犹如人类的大脑,运行着需要运行的程序。

    内存:将 CPU要运行的内容从硬盘中读取出来,然后CPU在内存里拿内容,只是一个短暂性的存储,加入突然关机,数据会丢失。

    硬盘:硬盘相当于人的笔记本,长期可以存储数据,永久性的存储。关机数据也不会丢失。

    他们三者之间是由操作系统来操作的。

  3 什么使操作系统:操作系统本身就是一个软件,而它是建立在硬件之上,他控制着每一硬件的运行,是硬件的运行有序化。

  4 什么是应用程序:应用程序就是软件,是建立在操作系统之上的,比如:QQ  微信  爱奇艺等都属于应用程序

  5 硬件,操作系统和应用程序之间的操作流程是:启动应用程序需要数据,所以启动时,会将指令传达给操作系统,然后操作系统在将需要的数据从硬盘中读到内存里,然后CPU在内存拿取数据进行执行,执行完之传达给操作系统,操作系统在传达给了应用程序。

二 语言的介绍 

   什么是编程语言:编程语言是程序员与计算机沟通的介质。程序员把自己想要说的话用编程的语言写到文件里,这其实就开发了一个程序,接下来让计算机按照文件里说的内容去做事情,这就是程序的执行。

   python是一种什么样的语言

   

  编译型vs解释型

    编译型
  优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
  缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

    解释型
  优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

  缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

    注解:java代码号称一次编译到处运行,因为java代理需要先编译成字节码(一种中间格式的代码),然后拿着字节码到处运行,每次运行都需要交给jvm去编译成机器指令后才能执行,因而java是混合型

    而有的人会有疑问,python代码也是先编译成字节码然后交给python解释器去执行的啊,难道python不是混合型吗?当然不是

    1. 首先需要知道,只有在import导入py文件时,才会产生pyc字节码文件,该字节码文件是可以代替源文件而直接执行的

    2. 但每次执行py文件,产生的字节码并不会保留下来,也就是说,每次执行py文件,都是要重新经历一遍:py文件->字节码-->python解释器-->机器码,每次都是一个重新解释执行的过程。五 ,为什么选择python

  语言的分类:1 效率分类:

      C语言:执行效率快,直接将人能识别的代码转换成机器码。

      java , c# ,  python , PHP:执行效率稍微的慢一点,实现是将人能识别的代码转换成字节码,再将字节码转换成机器码。

    2 解释型和编译型

      编译型:C , java , C#  将一堆代码一块进行翻译

      解释型:python , PHP    写一句代码,翻译一句。

    3 易学性:python:代码简洁,易懂,还有强大的类库,功能齐全

        其它:

    4 为什么不学C语言:复杂,代码多,而且代码易重复

    5 为什么不学JAVA,C#:C# windows运行,windows掏钱

                java :学习难度大

    6 为什么不学PHP:web开发,先入为主

    javascript,只能与各种语言结合使用,实现网页的动态效果。

     1.速度永远不是关键

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

    2.加密也不是关键

       对于编译型语言如C语言来说,可以将编译后的代码发给用户,用户反解几乎是不可能的,相当于自带加密功能了。而解释型语言如python只能发布源码给用户,但其实这没什么问题,现在主流的思想是软件开源,千万别意淫你的软件有多么大的商业价值。

 编程语言的分类

   1.机器语言:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。
      优点:灵活、直接执行和速度快。
      缺点:不同型号的计算机其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另一种计算机上执行。

  2.汇编语言:汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的,标识符更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。
      优点:能完成一般高级语言所不能实现的操作,而且源程序经汇编生成的可执行文件比较小,且执行速度很快。
      缺点:源程序比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识。

  3.高级语言:明确地讲,高级语言就是说人话,用人类能读懂的(比如英文)字符编程。高级语言是绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等。
      优点:大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
      缺点:高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行。

按转换方式可将它们分为两类:
     解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(如python程序,先翻译/编译成字
节码,然后由解释器解释执行,这个过程程序员都无需关心了,享受这种便利即可),一边执行
优点:这种方式比较灵活,调试程序极为方便,程序一旦出错,立即调试立即就可以测试结果
缺点:效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器。只在执行程序时,才一条一条的解释成机器语言给计算机来执行,
所以运行速度是不如编译后的程序运行的快的.
编译类:编译是指在程序执行之前,就将程序源代码“翻译”成机器指令,并保存成二进制文件     优点:编译后的代码可以直接在机器上运行,运行速度比解释型要高。     缺点:调试程序麻烦,程序一旦需要修改,必须先修改源代码,再重新编译后才能执行。

    总结:编程语言经历了:机器语言-------->汇编语言------------>高级语言(java,C#,php,ruby,python)

  1:开发效率从低到高

  2:执行效率从高到低

  3:掌握难度从难到易

    注解:执行效率不是问题,硬件已经足够用,于是开发效率成了关键,因而高级语言在当今世界大行其道。

三 python介绍

 python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言(由Guido参加设计的一种教学语言,是专门为非专业程序员设计的,优美强大但是流产了,非开源)的一种继承。

  python常用环境:web开发

          爬虫开发

          金融

          人工智能

  python的分类:cpython , jpython,ironpython,rubypython,pypy ....分类很多但是规则只有一个

    • Cpython(最常用的版本)
          Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
    • Jyhton
          Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
    • IronPython
          Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
    • PyPy(特殊)
          Python实现的Python,将Python的字节码字节码再编译成机器码。
    • RubyPython、Brython ...

  python 的版本分为2.*版本和3.*版本。python的版本在不断的更新,2版本的功能越来越接近3的版本功能。

    假如python需要删除某个旧版本的功能,会在更新的下一个告诉程序员,好让程序员准备着下下个版本的更新,而下下个版本就会删除该功能

  由于python语言的功能强大,所以其他语言的解释器都可以执行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完成各种各样的任务。

  python解释器的发展史

     1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

    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.解释器

 windows:

  下载python的网址是:https://www.python.org

  下载过程:http://jingyan.baidu.com/article/08b6a591a0ee8c14a9092261.html

  安装过程:http://jingyan.baidu.com/article/0bc808fc42dfab1bd485b99f.html

    linux:

  无需安装,原装Python环境

  ps:如果自带2.6,请更新至2.7

五 添加环境变量

  windows:

  1 鼠标右键点击开始菜单,然后选择系统,进入系统

  2 点击高级系统设置进入

  3 点击环境变量进入

  4 然后选中path变量,在点击编辑进入编辑

  

  5 然后再变量值写入你要添加的解释器的相对路劲,每个环境变量要以分号(;)分开。再点击确认。

 

  6 点击环境变量里的确认就添加成功了

 linux:

Linux的yum依赖自带Python,为防止错误,此处更新其实就是再安装一个Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
查看默认Python版本
python -V
  
1、安装gcc,用于编译Python源码
    yum install gcc
2、下载源码包,https://www.python.org/ftp/python/
3、解压并进入源码文件
4、编译安装
    ./configure
    make all
    make install
5、查看版本
    /usr/local/bin/python2.7 -V
6、修改默认Python版本
    mv /usr/bin/python /usr/bin/python2.6
    ln -/usr/local/bin/python2.7 /usr/bin/python
7、防止yum执行异常,修改yum使用的Python版本
    vi /usr/bin/yum
    将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6

六 python的基础使用介绍

 解释器:即时调试代码,代码无法永久保存

 文件:永久保存代码

 执行hello.py,即python D:python_testhello.py

  print: 打印  如 print("方杰")  执行结果是:方杰

  input: 智能输入  如 input(">>>:")    执行结果是>>>:      可以输入内容

       python3中统一都是input,python2中有raw_input等同于python3的input,另外python2中也有input

     1.res=input("python3: ")

     2.res=raw_input("python2: ")

     3.res=raw_input("python2: ")

  1,2无论接收何种输入,都被存为字符串赋值给res,而3的意思是,用户输入何种类型,就以何种类型赋值给res

#!/usr/bin/env python

name=input('请输入用户名:')
print(name)

  执行

C:UsersAdministrator>python D:python_testhello.py
请输入用户名:egon
egon

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

#!/usr/bin/env python

import getpass
password=getpass.getpass('请输入密码:')
print(password)

  执行(在pycharm中无法执行,需要到终端中执行)

  C:UsersAdministrator>python D:python_testhello.py
  请输入密码:
  123456

 python内部执行过程如下:

上一步中执行python D:python_testhello.py时,明确的指出 hello.py 脚本由 python 解释器来执行。

在linux平台中如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下:

#!/usr/bin/env python #该行只对linux有效

print('hello world')

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py十 ,文件头

#!/usr/bin/env python
# -*- coding: utf-8 -*-十一 ,注释

当行注视:# 被注释内容

多行注释:""" 被注释内容 """十二 ,执行脚本传入参数

Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:

  • Python内部提供的模块
  • 业内开源的模块
  • 程序员自己开发的模块

Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数

1
2
3
4
5
6
#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
import sys
  
print sys.argv

执行

C:UsersAdministrator>python D:python_testhello.py arg1 arg2 arg3
['D:\python_test\hello.py', 'arg1', 'arg2', 'arg3']

七 变量

 为什么要有变量:程序执行的本质就是一系列状态的变化,变量二字的核心一个是变,一个是量,'变'正好对应程序的变化,'量'即计量,反映的是某种状态,

     比如一款游戏中的人物初始等级:level=1,过了一段时间后升级了:level=10

  变量是由变量名,赋值,和变量值组成的      如:x=2

    变量名可以是字母,数字和下划线,  数字不能是第一个位置  如 : x_1=6    _y3=8

  变量名最好是用英文代替,而且是见名知意,不能用python的关键字。

    变量值的类型:字符串类型:有引号引起来的内容

            整数类型:没有引号引起来的数字

            布尔类型:只有两个值True和False。

  如:

age = 18			整数类型
name = "名锐捷"		字符串类型
gender = True/False       布尔类型

变量名的命名规范:

 变量名只能是 字母、数字或下划线的任意组合,变量名的第一个字符不能是数字

 以下是不能声明为变量名的:

  ['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']

  变量的赋值

#!/usr/bin/env python

name1='lhf'
name2='egon'

#!/usr/bin/env python

name1='lhf'
name2=name1

 #!/usr/bin/env python

 #一个游戏人物的等级由1级升到2级

   level=1

   level=2

 #一个游戏帐号的密码由'123'改成'456'

   passwd='123'

   passwd='456'

 #一个人的名字有'lhf'改成'egon'

   name='lhf'

   name='egon'

八 运算符号

  数字常见的比较运算符

==等号(因为一个等号是赋值功能,所以等号需要两个) <小于号    >大于号     <=小于等于号      >=大于等于号

result = 18 == 18
result = 17 < 18
result = 19 > 18
result = 17 <= 18
result = 19 >= 18
            

  数字常见的运算符号就是
+加    -减    *乘     /除     %余

result = 1 + 1
result = 1 - 1
result = 1 * 1
result = 1 / 1

  字符串的预算符号只有两个+加    和    *乘

a="fang"+"jie"      #执行结果fangjie
b="jie" * 2            #执行结构jiejie

  1 算数运算,与我们生活中的算法一样,如下图

  2 比较运算,

  3 赋值运算

 九 if判断语句

格式1:单支if判断:if 判断条件:

          执行语句格式2:双支if判断:if 判断语句:

          执行语句

         else:

          执行语句

格式3 :多支if 判断 :if 判断语句:

           执行语句

          elif:

           执行语句

          elif:

           执行语句

           。。。。

          else:

             执行语句

格式4 :if判断的嵌套:if 判断语句:

              执行语句

            if 判断语句

              执行语句

            else:

                执行语句

             else:

             执行语句

#单支if判断
if 7<8:
    print("对了")


#双支if判断

if 7>8:
    print('你傻')
else:
    print('对了')


#多支if判断
if 7>8:
    print('你傻')
elif 7==8:
    print('你真傻')
else:
    print('对了')
    
    
#if判断嵌套
name=input('>>>:')
if name=='fang':
    password=input('>>>:')
    if password=="666":
        print('登陆成功')
    else:
        print("登陆失败")
else:
    print("输入有误")
View Code

十 while循环

格式1:while 条件:

     执行语句

格式2:while 条件:
     执行语句

    else:

     执行语句

while循环里的关键字:break 跳出当前循环

          continue 跳出当次循环,进行下次循环

#格式1
while True:
    print(2)
#
#格式2
a=True
while a:
    print(1)
    a=False
else:
    print(2)


#break
while True:
    print(4)
    break
    
#continue
a=True
while a:
    print(3)
    continue
    a=False
else:
    print(2)
View Code
# 1.打印1 - 99之间的所有奇数
# a=1
# while a<100:
#     if a%2==0:
#         a+=1
#     else:
#         print(a)
#         a+=1

# 2.打印1 - 99之间所有能被3整除数
# b=1
# while b<100:
#     if b%3==0:
#         print(b)
#         b+=1
#     else:
#         b+=1

# 3.打印1 - 99之间所有数总和
# c=1
# d=0
# while c<100:
#     d+=c
#     c+=1
# print(d)

# 4.打印1 - 99之间所有奇数总和

# e=1
# f=0
# while e<100:
#     if e%2==0:
#         e+=1
#     else:
#         f+=e
#         e+=1
# print(f)
# 5.打印1 - 2 + 3 - 4 + 5 - 6 + 7... + 99之间所有奇数总和

# g=1
# h=0
# while g<100:
#     if g%2==0:
#         h-=g
#         g+=1
#     else:
#         h+=g
#         g+=1
# print(h)
练习题
原文地址:https://www.cnblogs.com/fangjie0410/p/7375242.html