我的Python学习之路-day1

一、关于python的基本介绍

  1、python由来

    python是由吉多·范罗苏姆(Guido van Rossum) 是一名荷兰计算机程序员,在圣诞节期间,他为了在阿姆斯特丹打发时间而编写了python语言,此语言为ABC语言的继承。在 Python 社区,吉多·范罗苏姆被人们认为是“仁慈的独裁者(BDFL)”,意思是 他仍然关注 Python 的开发进程,并在必要的时刻做出决定,也决定着python的发展方向   

      2、python与其他语言比较

      python是一种动态的解释型语言、C/C++/C#是静态的编译型的语言、java是静态的解释型语言

     计算机在编译C语言时是C语言直接通过编译编译成机器码到内存中,计算机的cpu直接读取机器码来运行程序

     计算机在运行例如PYTHON(java、c++、c#)时候会先编译成字节码,再由字节码通过计算转换成机器码才被cpu读取

     通过以上的执行过程可以看出C语言相对于其他语言执行的速度会快,但这个速度我们是感知不到的。

      3、python种类

     1>Cpython

         使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上

     2>Jyhton

          Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。

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

        4>PyPy(特殊)
             Python实现的Python,将Python的字节码字节码再编译成机器码。

二、python安装

     1、windows版:

        在官网下载好windows版本的安装包,如:python-2.7.10.amd64.msi

        安装好此文件会在c盘默认创建一个文件夹名为:Python27的文件夹

       之后在windows环境变量中声明一下变量就可以在windows 的cmd环境中运行python程序了,如图

   【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】

        

       如此保存退出后打开cmd命令行输入python即可进入到python环境中,如图:

        

     2、linux版本

         1>linux版本的系统会默认安装python,

            注:ubuntu 15.04 server系统的python版本为2.7.9;centos7为2.7以上,centos6.3为2.6需要升级为2.7以上版本

         2>centos 6.3 python升级为2.7.3

            #wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz

            #tar zxvf Python-2.7.3.tgz

            #cd Python-2.7.3

            #./configure --prefix=/usr/local/python273

            #make && make install

    python -V可以看到新版本python2.7.3已经生效了,正常情况下即使python2.7安装成功后,系统默认指向的python仍然是2.6.6版本,考虑到yum是基于python2.6.6才能正常工作,所以这里先备份老版本的/usr/bin/python文件为/usr/bin/python- old,然后再做个软连接到/usr/bin/就可以了。

    mv /usr/bin/python /usr/bin/python-old
    ln -s /usr/local/python273/bin/python /usr/bin/
    升级安装好以后你会发现yum无法使用了,因为yum使用的是2.6.6版本的python,所以要修改yum的配置文件以便能够识别2.6.6版本下的python

    #vi /usr/bin/yum
    #!/usr/bin/python --> #!/usr/bin/python-old #修改此处为2.6.6的位置,就可以继续使用yum了整个升级过程完成,可以使用Python2.7.3版本了

三、写第一个python小程序

    

    好,第一次已经用了,下面我们开始介绍python的基本知识点了。

四、关于python的基础知识点:

    1、一个python执行过程

              加载内存、词法分析、语法分析、编译-->字节码、执行字节码、机器码<----cpu读取

     2、编码

         一个python程序执行会对内容进行编译,默认编码为ASCII,此ASCII码为外国人发明,无法表示中文,如果要要想输入中文必须指定python的编码格式,这样unicode就应运而生,而utf-8UTF-8,是对Unicode编码的压缩和优化,我们在编写时候需要指定编码格式(注:python3.0默认的编码就是utf-8所以需要将来到python3.0就无需声明编码了)

          python默认的编码是ASCII编码如果是这样编写代码就会报如下错误:

      

     

     解决如上错误需要在里面指定编码的格式:

       

       

       ps:此时可能有人会提问这显示也不正常啊,这是由于cmd的编码格式为bgk编码格式,所以显示不正常,通过查看资料还可以我们在输出是指定其编码会显示正常,如下:

         

        

      这样就显示正常了,通过测试在linux上不用在输出前面强制指定编码格式,只在程序声明一下编码格式就能正常显示中文。

 

    3、python注释

          1>  #    单行注释

          2> 多行注释

               """
                  注释内容

               """

      4、捕获参数

                   import sys

                   sys.argv

                    脚本代码如下:
                       #!/usr/bin/env python
                      # -*- coding:utf-8 -*-
                      import sys
                      print sys.argv

      ps:此模块就是抓去参数,以列表的形式显示出来。

       5、模块

            既然上面提到了捕获参数,用的就是python内置的模块一个功能,python语言有强大的类库,模块来供我们开始使用,他的类库模块有三种来源

              1、python 内置的模块

              2、到开源社区有很多业内程序员开发的模块,免费下载下来引用即可

              3、根据业务需求,自己开发模块引用。

              上面捕获参数用的就是python的内部模块sys,用sys的argv功能来自动捕获参数。

       6、字节码

            我们在一个python脚本中引用另外一个python脚本,在执行后会自动生成一个已被引用为名的pyc文件,关于此文件的说明,请看下面的例子:

               我们在电脑的硬盘上创建一个名为m.py的文件在里面编辑如下内容:

                    

                 我们执行hello.py后查看文件

                       

                             ps:打开m.pyc文件里面是机器码,此时文件夹下有三个文件分别为:hello.py 、 m.py、  m.pyc,如果删除m.py仍然出现结果,这是为什么?是因为第一次执行hello.py这个程序生成了m.pyc的文件,python内部有一个计算方法如果m.py内容没有发生改变,python会直接调用m.pyc,此时m.pyc优先级高,如果m.py 改变程序会先条用m.py 重新生成m.pyc,这样重新生成的m.pyc又比m.py优先级高

         7、变量

                 1、变量命令规则:

                         1>变量名只能是 字母、数字或下划线的任意组合

                         2>变量名的第一个字符不能是数字

                         3> 不能以关键字声明变量

                 2、变量赋值

                        关于为变量赋值在计算机内存中保存的一个详细过程,如下:

                            name1='zhangsan'

                            name2=name1

                            输出name1和name2都是zhangsan

                            如果此时name1=lisi
                            输入name2值依然是zhangsan

                              以上原因:'zhangsan'这个字符串在内存中存放,name1和name2全部指向此变量,此时又给name1重新指定一个变量lisi,在内存中会单独存放一个'lisi'的字符串,此时name1变量指向了lisi,而name2没有发生改变,所以会出现name2值不会改变(这种限于赋给变量值为<字符串>而言,)

                             字符串特性:一旦修改,会在内存中重新创建空间

                        虽然python有这种特性但是由于python有内部优化功能,所以请看下面事例:

                               

                            >>> name1='lisi'
                            >>> name2='lisi'
                            >>> id(name1),id(name2)
                               (39517080L, 39517080L)
                            关于以上情况说明:
                                 python内部有一个内部优化机制在一定范围内,如果赋给变量值一样会在内存中只创建一个空间来保存变量值,两个变量分别指向此值

                                 python源码关于数字规定数字在-5至257范围内,如果变量赋值一样内置在内存中创建一个空间保存,超过范围会各自创建空间
                                       例:     
                                          >>> i1=2
                                          >>> i2=2
                                          >>> id(i1),id(i2)
                                          (30699040L, 30699040L)
                                          >>> i1=700
                                          >>> i2=700
                                         >>> id(i1),id(i2)
                                         (39594312L, 39594288L)

        8、数据类型:

                     type() 查看变量类型

                    

                      两部分:


                         1、单值
                              数字
                                 整形 123
                                 长整型
                                 浮点型 3.14
                                 复数 z = a + b
                          布尔值,True,False
                                        1       0
                         字符串
                           %格式化:
                           name = "I am %s , age %d" % ("alex",73)
                           索引格式化:
                           name = "i am {0},age{1}"
                            name.format("alex",18)


                          索引
                             >>> name = 'alex'
                             >>> name[0]
                                    'a'
                             >>> name[-1]
                                    'x'
                             >>> name[:-1]
                                    'ale'
                             >>> name[-1:]
                                     'x'
                             >>> len(name)
                                      4
                             >>> name[0:2]
                                     'al'

                        len() 查看长度
                               name[-1] == name[len(name)-1]
                               print name.strip()去除空格
                               print name.lstrip()去除左面空格
                               print name.rstrip()去除右面空格

                       分割:
                                name ="alex,eric"
                                 names.split(',')
                                 ["alex","eric"]


                                 names = "alex 123 18"
                                 names.split('\t')

                                 从列表变成字符串:"_".join(name_lsit)注:""里面指定连接符

             

                   2、集合
                       列表 list []
                         name_list['alex','eric','john','hello']
                           追加一个元素:name_list.append('seven')在列表最后添加
                           删除元素:del name_list[0]
                          查看长度:len(name_list)
                          查看一元素是否在列表用: alex in name_list


                     元组 tuple ()
                        name_list1=("alex","eric")
                        元组与列表唯一区别是元组是不可修改,列表可修改

                         列表包含元组只能修改元组,但是不可以修改元组里面的元素
                             ["alex",("seven","eric")]

                     字典,dict,键值对 {}

                         persion ={
                                            "name": 'alex'
                                            "age": '18'
                                       }
                           查找字典里面元素:
                               persion['name']
                                   

                                  例:
                                          persion ={
                                                                   "name": 'alex'
                                                                   "age": '18'
                                                        }
                                           for k,v in persion.items()
                                                print k
                                                print v
                              字典保存方式是无序的<特性>,特殊的for循环
                                  persion.keys() 所有key
                                  persion.values() 所有value
                                  persion.items() 所有键值

     9、循环

                   for循环:

                       name_list2 = ["age","b","c"]
                       for ele in name_list2
                       print ele

                     执行过程:
                       # 1,ele=age
                     # 2,ele=b
                    # 3,ele=c

                 
for ele in name_list2
                      if ele == "age":
                          print "sb"
                          continue
                     if ele == "b":
                        print "找到"
                        break

                   解释第一次循环是age 已经匹配,遇到continue会重新下一次循环不再执行第二个if

                     continue只是跳出一层循环,break跳出整个循环


               while:
                   while条件只有为真是才往下执行,为假不执行
                     格式:
                        while 条件:
                            print '1111'
                           while True:
                                print 'true' 死循环

 

    10、文本初步操作:

             文件里写,读
                1、找到文件
                          文件路径 E:/log
                2、打开文件
                          file_obj=flie(文件路径,模式)
                          打开文件的模式有:
                              r,以只读方式打开文件
                              w,打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
                              w+,打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
                         open
                3、文件操作,读写
                        file_obj.read()#将所有读入内存
                        file_obj.readlines() [行,为元素的列表]#将所有读入内存,并按行分开
                        for line in file_obj.xreadlines():
                               print line
                        for line in file_obj:
                              #每次循环,只读一行。避免全部读入内存
                        file_obj.write()
                        file_obj.writelines()
                4、文件关闭
                        file_obj.close()

     

  

posted @ 2015-10-26 11:03  Mr_三石  阅读(567)  评论(0)    收藏  举报