zoukankan      html  css  js  c++  java
  • Python基础

    一、安装

    请参考Python自动化中的python安装

    二、语言特性

    语言的对比

    C++java 编译语言 C语言没有标准库,C++标准库不够简洁和易读 内存管理由开发者负责
    Python、tcl、perl 解释型脚本语言,不需要编译 由内建的标准库,高级的数据结构

    内存管理由python解释器负责

    编译对比

    Java 程序--->编译成字节码--->解释器生成机器文件

    javac a.java

    java a

    C 程序--->编译成机器文件  
    Python 程序--->解释器生成字节码文件 python a.py

    由于整个Python语言从规范到解释器都是开源的,所以理论上只要水平够高,任何人都可以编写python解释器,来执行python代码,事实上,确实存在多种python解释器。

    Jython介绍:需要安装Jython

    1.Jython是纯Java实现的。Python的代码可以用Jython运行,只要没有用到扩展库。因为Jython实现了一个Python解析器,可以解析执行Python的代码。
    2.Jython在import 一个Python文件的时候,会编译生成.class文件,而不是.pyc文件。
     
    python程序变成java程序: jythonc a.py  生成 a.java
    CPython介绍(默认解释器):

    当我们从python官网下载并安装好python2.7后,就直接获得了一个官方版本的解释器,CPython,由于python是由C语言开发的,所以叫CPython,python在性能薄弱的地方可以用c语言编写,命令行下运行python就是启动CPython解释器,CPython用>>>作为提示符

    IPython介绍:

    执行python代码时和Cpython处理方式一样,只不过提示符用In[序号]:

    三、IDLE的使用

    交互式解释器,不保存输入的程序

    主提示符>>>    等待输入下一个语句

    次提示符...       等待输入当前语句的其他部分

    四、数字

    1/2 结果为0
    1/2.0 结果为0.5

    from __future__ import division

    1/2

    结果为0.5
    1//2 整除  0
    1.0//2.0 0.0
    1%2 求余1
    2.75%0.5 0.25
    2**3 2的3次幂=6
       

    长整型:普通整数不能大于2147483647(也不能小于-2147483648),如果需要更大的数,可以使用长整数,数字后面有一个L,长整数和普通整数可以混合使用

    十六进制:0xAF    八进制:010   (首位都是零)

    运算符:+    -    *    /      //     %     **

    比较运算符:<  <=     >       >=      ==     !=    

    逻辑运算符:and     or    not

    变量:变量名包括字母、数字、下划线,变量名不能以数字开头(装材料的锅碗瓢盆)

    表达式:某件事情(食谱的材料)  

    语句:做某件事情(烹饪的方法)

    x=1+2(x为变量,1+2为表达式,x=1+2为语句)

    不支持自增,自减

    数值内建运算符及内建函数:

    1.abs()

    2.divmod()

    3.pow()

    4.round()

    5.*

    6.//

    7.%   等等,列出了小部份

    比较内建函数的功能区别:

    函数int()直接截去小数部分,返回值为整数

    函数floor()得到最接近原数但小于原数的整数,返回值为浮点数

    函数round()得到最接近原数的整数(四舍五入),返回值为浮点数

    其他数值相关模块

    很多关于数字的函数都是内建函数,在__builtin__模块中,解释器自动导入,无需再写import语句,另外还有几个跟数字相关的模块,如下所示:

    1.decimal - 十进制浮点运算类

    2.array - 高效数值数组

    3.math/cmath - 标准C库数学运算符,常规运算在math中,复数运算在cmach中

    4.operator - 数字运算符的函数实现,例如tor.sub(m,n)等价于m-n

    5.random - 多种伪随机数生成器,函数randrange(),uniform(),random(),choice()

    五、获取用户输入

    x=input("x: ")   //如果输入的是字符串,则必须带双引号“daisy”

    y=raw_input("y: ")  //把输入的数据当成原始数据

    print xxx     //输出内容

    str()函数显示给人看的

    repr()函数显示给机器看的

    六、函数

    pow(2,3)内建函数

    七、模块

    __builtins__模块是在程序开始时自动被解释器导入的,可以看成适用任何一级python代码的全局变量

    import math  import 模块名

    math.foor(32.9)  模块.函数   使用这个模块的函数

    如果不存在不同模块中有相同的同名函数的情况下,可以使用函数名称   from math import sqt      sqt(9)  (如果还有一个模块也有sqt(),这种形式会导致引用同一个函数名,有重复的现象,不知道用哪个模块的函数了)

    _xxx 不用from module import *导入

    __xxx__ 系统定义名字

    __xxx 类中的私有变量,模块外或类外不可以使用

    八、运行脚本

    方法一、命令行:python test.py   (必须在test文件的路径下执行 或者 用test的全路径)(linux/windows)

    方法二、在程序的首行加入#!/usr/local/bin/python解释器的绝对路径,文件加入可执行权限,直接在命令行窗口输入 test.py即可运行(unix),双击test.py(windows)

    如果不想让窗口一闪而过,在程序的最后一行加入 raw_input("Press<enter>")

    方法三、用软件工具sublime或者eclipse运行

    九、注释

    #

    十、字符串

    字符串即一串字符,可用单引号或双引号标注

    转义字符,用反斜线标示

    用+拼接字符串

    把其他字符转换成字符串:

    1)repr(""),转换成合法的python表达式,给机器看的

    2)str(""),比上一个函数更容易阅读,给人看的

    3)··

    十一、其他

    1)如果需要写一个非常非常长的字符串,可能要跨很多行,那么,可以使用三个引号代替普通引号,print''' this is a very long string,'''也可以使用三个双引号"""long string""",这时可以在字符串中使用单引号和双引号,而不需要使用反斜线进行转义,同理适用于小括号,中括号,大括号。

    2)普通字符串需要换行时需要在最后一个字符后面加上反斜线,这个用法也适用于表达式和语句

    3)对于长路径,需要使用’c:\nowhere\file'  双反斜线在转义成单反斜线

    4)原始字符串以r开头,print r'C: owhere', 打印出的结果也是最原始的C: owhere,此时反斜线没有被转义

    十二、Unicode

    Python中的普通字符串在内部是以8位的ASCII码形式储存的,而Unicode字符串则储存为16位Unicode字符。u‘Hello ,world’

    十三、帮助

    1.使用help()内建函数

    help(函数名)    //得到相应的帮助信息

    十四、编程风格

    #/usr/bin/env python

    "this is a test module"

    import sys

    import os

    debug=True

    class FooClass(object):

         "foo class"

         pass

    def test():

          "test function"

          foo=FooClass()

    if __name__=='__main__':

           test()

    模块被导入时,__name__值为模块名字

    模块被执行执行时,__name__的值为__main__

  • 相关阅读:
    hdu 5387 Clock (模拟)
    CodeForces 300B Coach (并查集)
    hdu 3342 Legal or Not(拓扑排序)
    hdu 3853 LOOPS(概率DP)
    hdu 3076 ssworld VS DDD(概率dp)
    csu 1120 病毒(LICS 最长公共上升子序列)
    csu 1110 RMQ with Shifts (线段树单点更新)
    poj 1458 Common Subsequence(最大公共子序列)
    poj 2456 Aggressive cows (二分)
    HDU 1869 六度分离(floyd)
  • 原文地址:https://www.cnblogs.com/zz27zz/p/7359273.html
Copyright © 2011-2022 走看看