zoukankan      html  css  js  c++  java
  • Python初识

    Python第一天

     

    一.为什么学Python

           作为一名linux运维工程师现在越来越感觉不好干了。没有地位,还待背黑锅,并且运维自动化发展的这么快,普通运维岗位的路也越来越窄(因为我很菜),和几个同事商量学习python,当然自己也很感兴趣。不废话了,估计你也和我差不多的想法。

    二.Python介绍

          据说Python的诞生是由一个荷兰人在圣诞节(1989年)期间,为了打发时间,开发了一个新的脚本解释程序,即Python。(创始人都是这么牛逼吗?打发时间都能搞一个语言出来,膜拜),最近几年python发展的太快了,在TIOBE排行榜超越了PHP占据第五,他的代码清晰,简洁,应用于各个领域。各大型互联网企业都在使用,如:GooGle,Yahoo,Youtube,知乎,豆瓣等等。

      最新的TIOBE排行榜,Python赶超PHP占据第五!!!

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

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

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

            Python种类:

    1. Cpython

        a)  使用C语言实现,使用较广泛,官方采用。

        b) 原理:cpython将源文件(.py文件)转换成字节码文件(pcy文件),然后运行于Python虚拟机上。

      2. Jpython

        a)  使用java实现。

        b) 原理:Jpython将Python代码动态编译成Java代码,然后由JVM运行

      3. IronPython

        a) 使用C#实现。

        b) ronPython将代码编译成C#字节码,然后由CLR运行

      4. PyPy

        a)  由Python实现Python

        b)  将Python字节码再次编译成机器码。

    以上除PyPy之外,其他的Python的对应关系和执行流程如下:

     

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

    。。。。。。。。。。。。。。等等。。。。。。。。。。。。。。。。。 

    下图为Python具体实现的过程:

    四. 使用2.0还是3.0?

            

             对于这个问题网上讨论的很是热烈啊,用2.0的鄙视3.0的。用3.0的鄙视2.0 的,你属于哪一个?(我看着2.0的书,用着3.0敲代码,呵呵,只是菜鸟起步,不要想太多)。

    四(补充)  Python的安装?

      1. windows安装:

    1 1、下载安装包
    2     https://www.python.org/downloads/
    3 2、安装
    4     默认安装路径:C:python35
    5 3、配置环境变量
    6     【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
    7     如:原来的值;C:python35,切记前面有分号

      2. linux安装:

        centos6.6默认已经安装Python2.7版本,直接可以使用。

        centos6.6在Python2.7版本的基础上编译安装Python3.5版本:

     1 安装编译环境:
     2 #yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
     3 
     4 下载python3.5安装包:
     5 #wget --no-check-certificate https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
     6 
     7 解压到当前目录:
     8 #tar -zxvf Python-3.5.0.tgz
     9 #cd Python-3.5.0
    10 编译并指定安装目录:
    11 #./configure --prefix=/usr/local/python3.5 --enable-shared
    12 #make & make install
    13 为了区别2.X和3.X启动程序指定软连接
    14 #ln -s /usr/local/python3.5/bin/python3 /usr/bin/python3
    15 
    16 此时运行python3命令的话会报错,缺少.so文件,我们需要进行如下操作:
    17 
    18 #cp -R /usr/local/python3.5/lib/* /usr/lib64/
    19 
    20 ok!此时python3的基础环境已经安装完成!
    21 
    22 
    23 启动python3,输入时如果上下左右,退格键都出现乱码时:
    24 
    25 说明readline-devel 没有安装,默认只有readline:
    26 
    27 查看: 
    28 #rpm -qa | grep readline*
    29 
    30 安装: 
    31 #yum -y install readline-devel
    32 
    33 重新编译安装即可
    34 #./confgure ......
    35 #make && make install
    36 
    37 至此centos3.5编译安装结束。

    五. 程序员的第一个程序:Hello,World

      a) 使用交互式解释器直接启动python,显示程序版本及操作系统等。

      2.0版本:

      

      3.0版本:

     

      b) Linux系统自带python,创建文件:

     

     

     

    python内部执行过程如下:

    人生中的第一个python程序。

             注: windows下可以使用PyCharm软件编写程序

    五-1语句和语法:

        Python语句中的一些基本规则和特殊字符。

      • 井号(#):Python注释
      • 三引号('''): Python多行注释
      • 换行( ): 标准行分隔符
      • 反斜线(): 连接上一行
      • 分号(;): 将两个语句连接在一行中
      • 冒号(:): 将代码块的头和体分开
      • 不能的缩进分隔不同的代码块(四个空格宽度)
      • Python文件通过模块的形式组织 ,可以通过import导入使用。          

    六. 字符编码与变量

            

              Python解释器在加载.py文件中的代码时,会对内容进行编码,默认为ASCII

                       2.0版本需要在脚本中制定编码,如下:

                      

                       3.0版本可以忽略这个问题,解析器自动会进行编码

    a) 变量命名规则:

      1. 只能包含字母,数字和下划线。

      2. 区分字母大小写

      3. 禁止使用保留字

    注意: Python2与Python3的保留字有所不同

    b) 命令惯例:

    1. 以单一下划线开头变量名(_X)不会被form module import *语句导入
    2. 前后有下划线的变量名(_X_)为系统定义的变量名,对python解释器有特殊意义
    3. 以两个下划线开头,但结尾没有下划线的变量名(__X)是类的本地变量
    4. 交互模式下,变量名“_”用于保存最后表达式的结果

    注意:变量名没有类型,对象才有    

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

    c) 变量赋值:

      1. 赋值操作符(=):

    >>> a = 1
    
    >>> b = 2
    
    >>> a
    
    1
    
    >>> b
    
    2
    
    >>> c = "this is a string"
    
    >>> c
    
    'this is a string'
    name = "zhao"
    name2 = name
    print(name,name2)
    
    name = "hong"
    
    print(name,name2)
    
    
    zhao zhao
    hong zhao

       2. 增量赋值:

    1 x = x + 1
    2 可以写为:
    3 x += 1
    4 
    5 #操作符:
    6 +=  -=  *=  /=  %=  **=  <<=  >>=  &=  ^=  =

      3. 多重赋值:

    >>> x = y = z = 1
    >>> x
    1
    >>> y
    1
    >>> z
    1

      4. 多元赋值:

    >>> x, y, z = 1, 2, 'astring'
    >>> x
    1
    >>> y
    2
    >>> z
    'astring'
    
    #等号两边都为元组() ,如下
    >>> (x, y, z) = (1, 2, 'astring'

    七. 用户输入:

    user = input("请输入你的用户名:")
    
    print("你的用户名为:" , user)
    
    passwd =input("请输入你的密码")
    
    print("你的密码为:",passwd)    #显示输入的密码,如果想隐藏密码如下:
    
    import getpass
    
    password = getpass.getpass("请输入密码")
    
    print(password)

    案例:  

       用户输入一个符号,并用所给的符号输出如下图形:

    1 **** 
    2 * 
    3 **** 
    4 *  * 
    5 ****
    1 最娄代码:
    2 
    3 s = input("请输入一个符号:")
    4 print( '',s+s+s+s,'
    ',s,'
    ',s+s+s+s,'
    ',s+' '+' '+s,'
    ',s+s+s+s,'
    ')

    八. 模块 

             python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题。模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用,除了系统默认的模块不需要导入外。导入直接使用如下语法:

    import 模块名称(不需要加.py后缀)

    》》》基本的模块结构布局:

      1. 起始行(Unix)  2. 编码  3. 模块文档  4. 导入模块  5. 变量定义  6. 类定义  7. 函数定义  8.主程序

     1 #!/usr/bin/env python           #1.起始行,必须定义
     2 # -*- coding: utf-8 -*-         #2.编码,3.X版本可以省略
     3 # __Author__: Zhaohongfei       #自定义,可有可无
     4 
     5 "This is a test module"         #3.模块文档
     6 
     7 import sys,os                   #4.导入模块,多个模块可用逗号分隔
     8 
     9 debug = True                    #5.变量定义(全局)
    10 
    11 class Fooclass(object):         #6.类定义(若有)
    12     "Foo class"
    13     pass
    14 
    15 def test():                     #7.函数定义
    16     "test function"
    17     foo = Fooclass()
    18 
    19     if debug:
    20         print(test())
    21         
    22 if __name__ == '__main__':      #8.主程序
    23     test()

    获取参数:

    import sys
    
           print(sys.argv)        #输出
    
           # python module.py hello world
    
           [“module.py”, “hello”, “world”]    #获取执行脚本获取的参数
    
          
    
             Import os
    
            
    
             os.system(“df -h”)  #调用系统的命令

    九.  执行脚本传入参数

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

        1. Python内部提供模块

        2. 业内开源模块

        3. 程序员自己开发的模块 

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

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
      
    import sys
      
    print sys.argv

    十. 流程控制

      需求一. 用户登录验证

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

    需求二. 根据用户输入内容输出其权限

     1 # 根据用户输入内容打印其权限
     2 
     3 # wpq --> 超级管理员
     4 # hong --> 普通管理员
     5 # zs,ls --> 业务主管
     6 # 其他 --> 普通用户
     7 
     8 name = input('请输入用户名:')
     9 
    10 if name == "wpq":
    11     print("超级管理员")
    12 elif name == "hong":
    13     print("普通管理员")
    14 elif name == "zs" or name == "ls":
    15     print("业务主管")
    16 else:
    17     print("普通用户")

    练习:

             写一个能用tab自动补全的模块:

    Linux上tab 补齐代码:

    #!/usr/bin/env python
    
    # python startup file
    
    import sys
    
    import readline
    
    import rlcompleter
    
    import atexit
    
    import os
    
    # tab completion
    
    readline.parse_and_bind('tab: complete')
    
    # history file
    
    histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
    
    try:
    
        readline.read_history_file(histfile)
    
    except IOError:
    
        pass
    
    atexit.register(readline.write_history_file, histfile)
    
    del os, histfile, readline, rlcompleter

    保存退出即可使用。

    注意: 现在模块的存放于当前目录,如果想在系统其他地方使用,那我们需要加入环境变量,一般存放路径为:Python/2.7/site-packages

    以上即为Python第一天所学的东西,看似简单实则还需要多练。

    课后习题: 

    1 编写一个用户登录接口,用户密码错误输入三次后锁定账户

    2. 三级菜单(地理位置,省市县)

  • 相关阅读:
    分享一个自己写的vue多语言插件smart-vue-i18n
    利用vw+rem实现移动web适配布局
    你说前端不了解业务?
    小程序开发总结一:mpvue框架及与小程序原生的混搭开发
    小码农的职场人生一:由张小平离职引发的一些吐槽
    javascript本地缓存方案-- 存储对象和设置过期时间
    手淘移动适配方案flexible.js兼容bug处理
    微信小程序入坑之自定义组件
    vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
    非域环境下使用证书部署数据库(SqlServer2008R2)镜像
  • 原文地址:https://www.cnblogs.com/python-nameless/p/nameless.html
Copyright © 2011-2022 走看看