• python简介


    python详细介绍                                                                                                                                

    1、python的前世今生

    python是由吉多,范罗苏姆在1989年圣诞节完成的,当时主要是为了替代ABC语言。

    C是执行之前是通过C语言的虚拟机编译为机器码之后执行的,而python是编译为字节码执行的,cpython是由C语言写成的,所以,执行速率较C语言慢很多。

    到目前(2015-12-02)为止,python位于编程语言排行榜第5位,首次超过php,未来预计其市场份额还会增加。

    python也称为胶水语言,是因为python可以嵌入其他如java、C++等语言中使用。

    2、python的应用

    数据分析:一般是针对TB以上的数据文件做分析

    系统编程:做系统接口

    组件集成:做系统组件

    网络服务:目前python使用较多的领域,如爬虫、CGI、WSI等

    图像处理:可以替代matlab 90%以上的功能

    数值计算和科学计算

    目前youTube、Dropbox、BT、QUora(中国知乎)、Google、Yahoo!、Facebook、NASA等大量使用python。

    3、为什么使用python

    C语言使用的时候内存的管理和申请和释放,需要程序员自己写,而python类似于大多数的面向对象的编程语言,内存是由内置的虚拟机分配的;

    a、python相较与C语言运行速度很慢,但是程序运行的快慢多数情况下是由程序员的水平决定的,并且大多数情况下,程序由于语言本身的快慢造成的响应时间人是很难察觉到的,类似于0.0001s和0.01s,我们感觉差别不大。

    b、由摩尔定律可以知道,现在硬件的处理速度非常快了,程序的运行速率也较快。

    c、python提供了非常强大的类库。

    4、python的种类

    Cpython

    Jpython

    Tronpython

    pypy

    Rubypython 

    python文件                       python核心(解释器)                              运行环境

    内置模块                            词法分析                                            对象和类型

    类库                                  语法分析                                            内存和管理

    自定义模块                         编译

                                            执行                                                 状态

    5、字符编码

    ASCII:2的8次方=256个字符

    unicode(万国码):最少2的16次方个字符,可以表示中文,但是unicode编码不能写入硬盘。

    utf-8:对unicode进行加工,对通过8位可以表示的,用8位表示,可以用16位表示的,用16位表示,对可以用32位表示的用32位表示,这样的话节省内存空间,也可以写入硬盘。

    二、初始python                                                                                                                            

    1、第一句python代码

    >>> print 'hello world!!!'
    hello world!!!

    2、python解释器声明

    #!/usr/bin/env python

    3、编码以及编码声明

    # _*_ coding:utf-8 _*_

    4、注释

    单行注释#

    ''' '''多行注释

    5、脚本参数

    import 

    sys.argv  #将输入的参数$0,$1...放到一个列表当中,类似于shell的$*

    6、字节码

    如果在一个文件中导入文件m.py文件,那么产生m.pyc文件,如果m.py文件和m.pyc文件的功能相同,那么优先导入m.pyc文件

    7、变量

    代指内存里某个地址中保存的内容

    name1="changqiangqiang"

    name2=name1

    如果此时name1改变,但是name2不变

    但是如果name1不是字符串而是集合,那么name2也会改变;

    在C语言中,没有字符串,但是有字符,比如hello由5个字符组成,由于python是由c实现的,所以python的字符串由C的字符数组['h','e'...'o']组成。

    字符串特性:一旦修改,就需要重新创建,(中心开辟空间)。

    万恶的"+"号:如果字符串使用“+”号叠加,每一个"+"号,都需要重新到内存中开辟一块空间,导致性能下降.

    数据结构有两种类型:

        第一种是直立型:只要值改变,就需要重新开辟空间;

        第二种是引用类型:值改变,不需要重新开辟空间;

    python缓冲池的概念

        在一定的数值范围内,即咋缓冲池内的字符串,相同变量指向相同的字符串,id值相同。

    python解释器执行的过程:加载内存-->词法分析-->语法分析-->编译-->字节码(c语言为机器码)-->执行

    8、python的输入输出

    name=raw_input(">>>")

    import getpass

    pwd=getpass.getpass(">>>")

    9、流程控制

    "=="只表示值相同,"is"标志内存地址相同

    if...

    elif ...

    else...

    10、初始基本数据类型

    范围两类:

        第一类是单值:数字、字符串、布尔值

        第二类是集合:列表、元组、字典、哈希表(set)

    字符串:万恶的字符串拼接(+),不要用,使用字符串格式化替代

    两种字符串格式化:

        第一种:name="i am %s" %('QQ')

        第二种:name="i am {0} age{1}"   

                  print name.format('alex',18)

    字符串的切片:name='hello'    name[0]='a'    name[0:2]='he'

        len(name)-->多少个字符    name[-1]==name[len(name)-1]

    字符串的分割:names="QQ,hello"    name.split(",")=["QQ","hello"]-->字符分割的结果为列表

    创建的列表本质上讲都是对象,字符串和列表都支持索引

    总结:

    字符串的常用功能:

        移除空白

        分割

        长度

        索引

        切片

    列表的常用操作:列表内容修改,内存地址不发生改变(id值相同),不会创建新的内存空间

        索引

        切片

        追加

        删除

        长度

        循环

        包含

        转换为字符串(与分割相反)

    str、list和tuple的相同点和不同点:

        相同点:切片、索引、len()、包含、循环;

        不同点:str修改后重新开辟空间,list修改后内存地址不变,tuple不允许修改;

    字典:键值对,字典是无序的

        字典的循环: for k,v in name.items():

                            print k,v

    12、初识文本操作

    找到文件

    打开文件:file_obj=file(文件路径,模式)

    文件操作,读写:file_obj.read()    #将文本内容全部写入内存,写入的数据格式为字符串

                          file_obj.readline() #一次读取一行数据,为字符串格式;

                         file_obj.readlines()   #将文本内容全部读入内存,并按行存入列表当中,列表的每一个元素为一行数据

    模式:    r-->读    w-->如果文件存在,则将其重写    a-->追加    w+(读写)

    循环:

        for line in file_obj.readlines:    #每次循环,只读一行,避免全部读入内存

        for line in file_obj.xreadlines():    #xreadlines表示迭代器,直接打印会显示文件句柄的内存地址,默认不会打印出来,只有在循环迭代器的时候才会将每一个元素一一显示;

    file_obj.write()  #是将字符串作为参数传入,将字符串的内容写入文件中

    file_obj.writelines()  #传入的参数除了字符串,还可以是字符串序列,比如列表,或者字典等等,也就是说writelines比write更强大;

    file_obj.close()    #关闭文件

    练习:

    要求:编写登陆接口,输入用户名和密码,认证成功后显示欢迎信息,输错三次后锁定。

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    import getpass
    import sys
    chiper_file='account.txt'
    limit_times=0
    lock_file='lock_file.txt'
    
    chiper_dict={}
    lock_file_list = []
    while limit_times < 3:
        username=raw_input('请输入用户名:').strip()
        f = file(lock_file,'r')
        for line in f.readlines():
            line = line.strip()
            lock_file_list.append(line)
            f.close()
        if username in lock_file_list:
            print "33[41;37m这个账号已被锁定,不能登陆.请联系管理员解锁!!!33[0m"
            sys.exit()
        f = file(chiper_file,'rb')
        for line in f.readlines():
            line = line.strip()
            line_list=line.split(';')
            chiper_dict[line_list[0]]=line_list[1]
            if not chiper_dict.has_key(username):
                print "该用户名不存在,请重新输入!!!"
                limit_times +=1
                continue
            password=getpass.getpass('请输入密码:').strip()
            if chiper_dict[username] == password:
                print "Welcome to login my system,哈哈哈!!!"
                sys.exit()
            else:
                print "认证错误,请重新输入!!"
                limit_times += 1
                continue
    else:
        f.close()
        print "用户名被锁定"
        f = file(lock_file,'ab')
        f.write('{0}{1}'.format(username,'
    '))
        f.close()
    View Code

     参考:

    http://www.cnblogs.com/luotianshuai/p/4931009.html

    http://www.cnblogs.com/wupeiqi/articles/4906230.html

  • 相关阅读:
    转:不在同一个服务器上的数据库之间的数据操作(oracle/sql server的对比)
    即将来到: CSS Feature Queries (CSS特性查询)
    HTML5 Canvas(画布)实战编程初级篇:基本介绍和基础画布元素
    jQuery animate方法开发极客标签Logo动画融合效果
    Bootstrap3实现的响应式幻灯滑动效果个人作品集/博客网站模板
    无需编码开发快速设计互动式UI
    免费资源:Bootstrap开发的创意模板
    通过Intel XDK编写跨平台app(二)
    免费图标:30个食品相关的图标
    CSS中:before和:after选择器的用法
  • 原文地址:https://www.cnblogs.com/cqq-20151202/p/5013252.html
Copyright © 2020-2023  润新知