2. Python开发【第二篇】:初识Python-2020.09.17

  

#01 Python开发系列课程概要
一、Linux基础
  运维工程师:在Linux上搭建服务、安装、维护软件
  网络工程师:解决网络相关情况
  软件开发工程师:开发应用程序
  应用程序开发好之后,放置在公司的服务器上,别人就可以访问了。

二、Python开发
  参考博客http://www.cnblogs.com/wupeiqi/articles/5433893.html
  作业:
  博客开通地址:http://www.cnblogs.com //注册、申请博客、登陆
  我的博客:随笔:所有人在博客中都可以找到的文章
            文章:别人找不到,可以通过URL访问
              日志:别人找不到、URL也看不到

 

  主要内容:
    a、Python基础 //基础、基本数据类型、函数、面向对象
    b、网络编程 //消息通过网络进行传输(断电续传)
    c、WEB框架 //用来写网站的———>本质是什么?在网络编程的基础上
    学东西要清楚它的本质,如果连本质都不知道的话,只能死记硬背,然而人的记忆力是有限的,长时间不学或者不用的话就忘记了;
    要形成文档库,有自己的一套记忆方法;
    d、设计模块+算法 //如何更快更好地完成任务,其实基础的套路都是差不多的,当经验丰富的时候,就知道什么情况下应该怎么做会更好;
    设计时间应该大于开发 一般是架构师设计,初级程序员编写程序;
    e、项目阶段

 

 

第一章、Python简介

 

一、Python前世今生

  python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

  最新的TIOBE排行榜,Python占据第三!!!

    

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

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

备注:上述重点字体表示该公司主要使用Python语言开发。

 

二、开发语言

  1.各种开发语言:

    高级语言:Python、Java、 PHP(适用于网站,只写页面)、C#、Go、ruby、C++----->生成字节码
    低级语言:C、汇编-------------------------->生成机器码
    每种语言的规则不一样


  2.机器码和字节码:

    机器码是计算机可以直接识别的,010101;
    字节码是高级语言先转换为开发者认识的字节码(各语言转化为各自对应的字节码,如python先转化为python的字节码),字节码再转换为机器码;
    为什么要有字节码?方便下次使用时,不用再次转化字节码,上次生成的字节码可以直接用,加速程序的执行效率;


  3.各种开发语言之间的对比:

  C 和 Python、Java、C#等

      C语言: 代码编译得到机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作;

   其他语言: 代码编译得到字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行;

   C语言,只要做开发,以后一定要自学,可以走得更远,因为C语言是根源,高级语言都要找到C语言继续往下执行,高级语言虽然对低级语言进行分装、总结,但很多时候它是拿低级语言的功能直接用的,没有封装,学高级语言时可能对这些功能不太明白,但是理解了低级语言之后,就可以更好地掌握高级语言;

   现在不报C语言班的原因:1、学不会;2、学习成本高;3、学习之后,知识储备找不到工作,C语言往往开发底层的,执行效率高,但是开发效率低;

   低级语言往往涉及到内存管理,C语言开发需要自己控制内存(不用的时候需要清空内存,一旦忘记释放,会一直获取,那程序跑一段时间之后电脑就直接跑崩了,内存全被占满了,电脑会非常卡);高级语言开发的时候不需要关注内存问题,因为开发这门语言的人的C语言水平非常高,开辟内存和释放内存的功能已经写成了一个公共的功能,集成在高级语言里面了;所以公司一般先用高级语言开发,后续再慢慢C化。

  Python 和 C  

   Python这门语言是由C开发而来;     
          对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多;.
     对于速度:Python的运行速度相较与C,绝逼是慢了;

  Python 和 Java、C#等

  对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持;
  对于速度:Python在速度上可能稍显逊色;

  Python和Java是一类,PHP是一类;对于百度:页面,PHP(适用于写网页,有局限性,并且可以快速地搭建出来,在国内比较多,但是在国外就不是了);后端,如阿法狗(不是网站,是一个应用程序自己在做计算),Python和Java可以做,即可以写页面,又可以写后台功能;Java比Python的执行效率高,做企业级的应用比Python更成熟,Java能做的事情Python都能做,Python的开发效率高(Python10行,Java100行);硬件的发展速度非常快,相对硬件资源会便宜,加服务器、优化可以提高执行效率。

 

  阿法狗:

    学习狗就是IT界的“深度学习”,目前用于人脸识别,语音识别。由于需要大量的数据(比如很多棋谱棋谱),所以和大数据结合紧密,大家最常用的应该就是---汽车驾驶导航。乱走猫呢,就是大名鼎鼎的“蒙特卡洛搜索树”他最大的特别是可以并行,可以理解成同时下很多种可能,把每种可能都分身成一盘新棋来下。
    Alpha是希腊字母的第一个。GO是围棋的英文说法,翻译过来应该是:围棋一号。

 

三、Python的种类:

  • Cpython

        Python的官方版本,通常说的Python,指的是CPython,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上(将python文件交给python的解释器生成字节码,再交给c生成机器码)。

  • Jyhton

        Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行(将python文件交给java的解释器生成Java对应的字节码,再交给c生成机器码)。  

  • IronPython

        Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)

  • PyPy(特殊)

        Python实现的Python,直接将Python的字节码交给c编译成机器码,不用重新生成字节码。

      pypy 这是用CPython开发的Python,速度虽然快,但是现在不是主流,功能还不够完善、稳定。

  • Brython、RubyPython ...

     以上除PyPy之外,其他的Python的对应关系和执行流程如下:(执行、虚拟机、兼容语言)(编译器、翻译)

  

  PyPy,在Python的基础上对Python的字节码进一步处理,从而提升执行速度!

 

第二章、Python环境 

一、安装Python

  相关介绍:
  Python安装在OS上,
  执行操作:
  按照Python的规则写一个文件,将文件交给Python软件,Python软件(Python解释器,内存管理)读取文件中的内容(读取到内存,并检查是否按照Python规则写),然后进行转换和执行(涉及底层的处理),最终获取结果。

  python.org(官网)下载即可:Python3与Python2相比,跨度很大,不能向下兼容
  目前Python2和Python3都在继续更新,Python2慢慢向Python3转化
  下载路径,建议安装在C、D盘的根目录下,方便找到
  Python2和Python3建议都安装,运行的时候一般默认优先选择的是第一个安装的版本,所以为了方便使用,可以修改名称为python2.exe和python3.exe进行区分,运行时对应写python2或python3;
  #环境变量:C:\Python27(把路径加到环境变量里面后(用分号分隔),执行exe文件的时候只需要写一个名字就可以,否则每次执行都需要写全路径)

  具体步骤:

 

、更新Python

 

 第三章、Python入门基础

  1、第一句Python

    --后缀名可以是任意的吗?//只有一个文件就可以实现所有的功能时,文件名的后缀可以是任意的;
    --导入模块时,必须是.py文件,如果不是.py文件,会报错;
    ---->所以以后文件名后缀一定要是.py;

  
2、两种执行方式
    在终端,输入python解释器安装目录的全路径   python文件的路径
    cmd--->输入python进入python解释器:实时输入并获取到执行结果

  3、python解释器
    #!/usr/bin/env python 作用:声明python解释器的路径,即python的解释器在Linux的/usr/bin/env路径下;
    在Windows上面运行,写不写完全不影响;
    在Linux系统上运行时,
    ---->D:\python35\python 2.py
    ---->加进环境变量里面之后,可以简化为python 2.py,其中python用于指定python解释器;
    //在指定python解释器的情况下,文件的头部可以不写#!/usr/bin/env python
    ---->./2.py 这种情况下,看不到python的解释器是什么,此时文件的头部必须加#!/usr/bin/env python,并且文件要加可执行权限

  
4、编码
    #-*- coding:utf-8 -*- 作用:告诉python解释器怎么编码你的python文件
    当文件里面全都是英文时,不加#-*- coding:utf-8 -*-,python2和python3都可以执行成功;
    当文件里面包含有中文时,不加#-*- coding:utf-8 -*-,python2报错,python3可以执行成功;

    //原因:计算机最开始只认英文,英文对应的就是ASCII码,ASCII码里面不包含中文,python2的解释器内部默认使用ASCII码进行编码,
    所以python2执行全是英文的文件可以执行成功,执行包含有中文的文件时会报错,所以必须在包含有中文的文件头部加#-*- coding:utf-8 -*-,告诉python2的解释器用utf-8编码程序;
    python3默认的编码为utf-8,所以python3无需关注。

    编码回顾:ASCII:用8个二进制位表示,最多表示256个(起源于美国); 00000001
    unicode:用至少16位表示,才能把很多个国家的文字都表示出来; 0010000000000000+
    utf-8:能用多少表示,就用多少表示,可以节省内存和磁盘空间; 00000001 00010000000000011110(中文用3个字节来表示)

    gbk/gb2312主要是为了处理中文,用2个字节表示中文(windows终端cmd默认的编码是gbk)

    unicode作为万国码,unicode可以和其它任何编码之间直接转换,但是其它编码之间不能直接转换,必须通过unicode编码;

           

    备注:要既支持python2.7又支持3.5,#!/usr/bin/env python、#-*- coding:utf-8 -*-,必须放在文件的开头两行;

  5、执行一个操作
    提醒用户输入:用户名和密码
    获取用户名和密码,检测:是否用户名=root,密码=root
    正确:登陆成功 错误:登陆失败

    python解释器解释的时候,是从上到下一行一行地解释的,当遇到input的时候,会永远等待,直到用户输入了值,就会将输入的值赋值给n,n代指用户输入的内容;
    变量:代指某一个变化的值
    n1 = input("请输入用户名:")
    n2 = input("请输入密码:")

  6、变量名
    -变量只能由字母、数字、下划线组成
    -变量不能由数字开头
    -不能使用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'])
    -最好不和python内置的东西重复(内置的函数或类)

  7、条件语句
    1.if基本语句

1           """
2       if 条件:
3         内部代码块
4         内部代码块
5       else:
6         内部代码块
7       print('....')
8       """

    场景一
    if 1 == 1:
      print("欢迎进入大学1") #缩进可以是1个、2个...空格,但是一定要统一,一般采用4个空格缩进
      print("欢迎进入大学2")
    #TAB键,代指4个空格
    else:
      print("欢迎进入公司")

    场景二
    if 1 == 1:
      print("欢迎进入大学1")
      print("欢迎进入大学2")

    print('end')

 

    2.if语句支持嵌套

1 if 1 == 1:
2   if 2 == 2:
3     print("欢迎进入大学1")
4     print("欢迎进入大学2")
5   else:
6     print("欢迎进入公园")
7 else:
8   print("欢迎进入公司")

 

    3.if...elif

1     age = int(input('请输入年龄:'))
2     if age < 8:
3       print('儿童')
4     elif age < 18:
5       print('青少年')
6     else:
7       print('成年')


    注意:n1 = "alex" 赋值
       n1 =="alex" 比较

    """
    if 条件1:
      pass
    elif 条件2:
      pass
    elif 条件3:
      pass
    else:
      pass

    print('end')
    """

  4.补充:pass
  if 1 == 1:
    pass #pass代指空代码,无意义,仅仅用于表示代码块
  else:
    print('烧饼')
  8、基本数据类型

  1.字符串(引号引起来,字符串里面每个组成部分,叫字符)
  name="我是小春"
  name='我是小春'
  name='''我是小春'''
  name="""我是小春"""
  name="""woshixiaochun"""

  加法(连接):
  n1 = "alex"
  n2 = "sb"
  n3 = n1 + n2
  print(n3) #n3 = "alexsb"

  乘法(拷贝):
  n1 = "alex"
  n4 = n1*10
  print(n4) #n4 = "alexalexalexalexalexalexalexalexalexalex"

  2.数字
  age = 13
  加减乘除次方余数:
  a1 = 10
  a2 = 20
  a3 = a1 + a2 #加,10+20==30
  a3 = a1 - a2 #减,10-20==-10
  a3 = a1 * a2 #乘,10*20==200
  a3 = a1 / a2 #除,10/20==0.5
  a3 = 39 // 8 #获得39除以8得到的商,4
  a3 = 2**4 #获得2的4次方,即16
  a3 = 39 % 8 #获得39除以8得到的余数,7
  应用:判断一个数是奇数还是偶数

a = 13
temp = a % 2
if temp == 0:
  print"偶数"else:
  print"奇数"

  9、循环

  死循环
  while 1 == 1:
    print('ok')

  10、练习题(知识点:if条件语句、while循环、奇数偶数)

  1.使用while循环输入 1 2 3 4 5 6 8 9 10;

1   n = 1
2   while n < 11:
3     if n == 7: #不输出7,重点是如何不输出7
4       pass
5     else:
6       print(n)
7     n = n + 1
8   print('----end----')

  2.求1-100的所有数的和;

1   n = 1
2   sum = 0
3   while n <= 100:
4     sum = sum + n
5     n = n + 1
6   print(sum)
7 
8   print('----end----')

  3.输出 1-100 内的所有奇数;

1     n = 1
2   while n < 101:
3     if n % 2 ==1:
4       print(n)
5     else:
6       pass
7       n = n + 1

  4.输出 1-100 内的所有偶数;

1     n = 1
2   while n < 101:
3     if n % 2 ==1:
4       pass
5     else:
6       print(n)
7       n = n + 1

  5.求1-2+3-4+5 ... 99的所有数的和;

 1     n = 1
 2   sum = 0
 3   while n < 100:
 4     temp = n % 2
 5     if temp == 1:
 6       sum = sum + n
 7     else:
 8       sum = sum - n
 9       n = n + 1
10     print(sum)

6.用户登陆(三次机会重试);

 

 

知识点梳理:

  1、编程语言:高级语言(7种)、低级语言(2种)

  2、Python的种类:javaPython   cPython(***)   pypy

    字节码、机器码

  3、Python程序:

    ①2种执行方式

    在终端,输入python解释器安装目录的全路径   python文件的路径
    cmd--->输入python进入python解释器:实时输入并获取到执行结果

    ②以文件形式写Python文件,2行头部信息

    #!/uer/bin/env python   申明Python解释器的路径

      #-*- coding:utf-8 -*-          让Python解释器编码这个Python文件的时候,用utf-8编码文件

    ③编码:ASCII      unicode         utf-8(中文2个字节)      gbk(中文3个字节)

    ④print('asdf')

    ⑤inp=input(>>>)     #input()输入的内容是字符串

    >>>hello     inp== "hello"

    >>>10     inp== "10"

    ⑥变量名

    由字母数字下划线组成;不能以数字开头;不能使用Python关键字;不能使用Python内置的东西

    ⑦条件语句

    基本条件语句、嵌套、if elif else

    ⑧while循环

    while 条件:

      ....

    print('....')

    补充:while else

       continue 终止当前循环,开始下一次循环

       break      终止所有循环

    

      

 

 

 

 

 

 

 

 

 

posted @ 2020-09-17 16:35  chunlimei  阅读(105)  评论(0)    收藏  举报