• 2015-10-25 第一天学习


    Python介绍

        Python前世今生

    Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者。

    目前吉多仍然是Python的主要开发者,决定整个Python语言的发展方向。

    从效率上来讲

      C语言会编译成机器码,所以执行快

      Python是高级语言会先编译成字节码,然后用解释器解释执行,执行效率慢了不少。

    但是

      Python语言学习曲线更缓,而且类库齐全,功能多样能做不少事情,够用就好。

            Python在TIOBE排行榜第5名,整体呈上升趋势

        Python应用

    图形处理,有PIL、Tkinter等图形库支持,能方便进行图形处理。

    数学处理,NumPy扩展提供大量与许多标准数学库的接口,

    文本处理,python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。

    数据库编程,程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,Mysql等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。

    网络编程,提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。

    作为Web应用的开发语言,支持最新的XML技术。

    多媒体应用,Python的PyOpenGL模块封装了"OpenGL应用程序编程接口",能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。

          使用企业:Youtube,Dropbox,Quora,Google,NASA

      在Google内部的很多项目,例如Google App Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。《Python技术手册》的作者马特利(Alex Martelli)说:"这很难讲,不过,2004年,Python已在Google内部使用,Google召募许多Python高手,但在这之前就已决定使用Python。他们的目的是尽量使用Python,在不得已时改用C++;在操控硬件的场合使用C++,在快速开发时候使用Python。"

        Python种类

    Python除了有python2和python3的区别,还有具有众多的版本:

    • CPython: 用C实现, 默认Python指的是CPython
    • JPython: 用Java实现,在JVM里面执行
    • IronPython: 用C#实现
    • Cython: 一个Python的超级,可以绑定后调用C
    • Numba: 增加JIT功能,为 高性能科学计算 提供支持,支持CPU和GPU计算
    • IPython: 一个特殊的Python计算环境
    • PyPy: 用Python实现的Python版本,增加 JIT 功能

    Python还有众多的绑定实现:

    • RubyPython: 在Ruby中使用Python代码
    • PyObjc: 绑定Objective-C来在OS X平台实现GUI程序
    • PyQt: 绑定QT来实现GUI程序
    • PyGTK: 绑定GTK在Linux平台实现GUI程序
    • Brython: 用JavaScript实现Python VM,从而在浏览器中执行Python代码

    Python环境搭建

    pycharm professional 最新

    下载地址:

    https://www.jetbrains.com/pycharm/download/

    ubuntu最新32/64无所谓

    下载地址:

    http://www.ubuntu.com/download/desktop/thank-you?country=CN&version=14.04.1&architecture=amd64

    python2.7.x

            Windows 与 Linux版本注意 

             win不支持多进程的类库

            *Centos环境下升级Python,需要注意yum使用2.6,升级要调整yum配置防止错误

    Python入门

    print 'hello,world'

    Python执行过程

    1.读文件

    2.分析 词法分析 语法分析

    3.编译字节码

    4.字节码解释机器码执行

    解释器

    在Linux下的每个py文件最好明确指定解释器,可以避免不少错误

    #!/usr/bin/env python
    

    中文输入

    学习Python经常遇到的一个问题是编码错误导致的不能正常输出。

    SyntaxError: Non-ASCII character 'xc4' in file D:/autopy/hello_world.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
    

    Python解释器读取代码默认使用ASCII,没有中文编码 2^8=256种可能

    unicode 2^16=65536种可能

    在每个文件的开头明确编码格式可以最大程度避免这个问题

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

    对应到pycharm需要修改File-Setting-Editor-File Encodings:

    IDE Encoding & Project Encoding

    在新建文件自动加入声明的方法:

    help中找到find action,输入file and code templates,找到python模板文件,添加即可。

    注释

    
    				#单行注释
    			
    
    				"""多行注释"""
    			

    脚本参数

    捕获参数需要用到sys模块

    模块函数 sys.argv

    输出是一个列表,第一项内容是文件名字

    变量

    变量名字有要求:

    1. 字母 数字 下划线
    2. 第一个字符不能是数字
    3. 避开内置关键字

    变量赋值:

    a=10
    b=3.14
    c="hi,world"
    name1 = name2
    

    输入输出

    输入:
    
    raw_input("Something")
    
    import getpass.getpass #系统内置输入密码,看不到
    			
    输出:print
    			

    流程控制

    if something: #值对比,并非内存地址对比
    			
    else:
    
    something other
    
    if a==b:
    
    elif a==c:
    
    else:
    

    初始基本数据类型

    单值

    数字

    整型 3714

    长整型 99988887777777766666

    浮点型 3.14

    布尔值 0,1

    复数 z = a + bj

    字符串

    格式化

    切片 索引

    长度 len(x) name[-1] == name[len(name) -1 ]

    去除空格 x.strip() 去除左边的空格 x.lstrip() 去除右边空格 x.rstrip()

    分割 x.split(',')

    集合

    列表

    功能与字符串类似

    切片 索引

    追加 x.append()

    删除 del x[i]

    长度 len(x) #长度就是列表个数

    列表变字符串 "_",join(x)

    包含 in 

    元组

    对比列表,没有修改功能

    #字符串,列表,元组之间联系 切片,索引,循环,长度,包含

    #字符串,列表,元组不同 字符串重新开辟空间,列表修改不变,元组不允许修改

    字典

    又称"键值对" key & value

    { 
    
    "name": "echo",
    
    "age": 18,
    
    "gender": "看心情",
    
    }
    			

    索引通过"键"来查.无序

    for k,v in x.items():  #所有元素 键值对
    			
    print k
    
    print v
    
    print
    				"-------------------------"
    x.values() #所有值
    x.keys() #所有键

    哈希表

    循环控制

    for
    			
    for i in x
    
    break
    				#退出循环
    			
    pass
    			
    continue
    				#继续
    			
    while
    			
    while true:  #死循环
      print xxx

    基本文本操作

    用户名密码都是在数据库里面保存,验证用户名密码需要读取数据库内容

    找到并打开文件

    文件路径 e:/log
    
    file file(文件路径,模式)
    
    open
    
    file_obj = file(文件路径,'w+') #这个叫文件句柄
    			

    文件操作,读写

    file_obj.read() # 一次性读入
    			
    file_obj.readlines() #行读取
    			
    file_obj.xreadlines() # 一次一行,处理大文件 已经被废弃,有替代品
    			
    for line in file_obj:
    
    #每次循环,只读一行,避免全部读取入内存
    			
    file_obj.write()
    
    file_obj.writeline()
    
    文件关闭
    
    file_obj.close()
    			

    r,只读打开

    w,写入,覆盖原来

    a,追加

    r+,读写

    参考链接:

    https://zh.wikipedia.org/wiki/Python

    http://lesliezhu.github.io/public/2014-10-24-cython-start.html

    http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

  • 相关阅读:
    Android开源项目收藏
    ubuntu修改ip获取方式(静态,动态)
    linux内核调用用户空间程序
    linux 改变目录下所有文件及其子文件夹下的权限
    jquery remove() empty()
    jquery之attr()和removeAttr() prop的使用场所
    jquery 获取对象的八种总结
    html子标签浮动父标签无法扩充
    静态代码块
    java static介绍
  • 原文地址:https://www.cnblogs.com/echorep/p/4927485.html
Copyright © 2020-2023  润新知