基本语法

语言说明##

优势:语法简洁
劣势:运行效率低、代码不能加密
适用:网站WEB应用、日常小工具批量工具、模块连接工具

编写方式##

命令行:使用python可进入交互式编辑模式(>>>)
py文件:同样使用python编译

输入输出##

print和raw_input(),raw_input是函数

    a = raw_input()
    print a

可以在调用raw_input函数的时候添加字符串参数,
这个参数会作为输入时的提示显示在输出设备上

数据类型##

整数

    a = 5

浮点

    b = 2.5

字符串

    c = "abcd"    #  双引
    d = 'dcba'    #  单引
    e = """
        ab
        cd
    """           #  折行
    f = "\\\n\\"  #  转义
    g = r"\\\n\\" #  不对转义做处理
    h = u"你好世界"#  用于处理中文的unicode

布尔

    m = True
    n = True and False  #  逻辑组合:and、or、not

    o = None

注意文件中包含中文,编译会不通过,需要在文件顶部追加
# _*_ coding: utf-8 _*_
以表示该文件用UTF8编码,也正因为如此,中文字符串不再需要以unicode编码保存,因为UTF8本身就是支持中文的

强制类型转换
python使用一组全局函数来做类型的强制转换

    int(x [,base ])         #将x转换为一个整数
    long(x [,base ])        #将x转换为一个长整数
    float(x )               #将x转换到一个浮点数
    complex(real [,imag ])  #创建一个复数
    str(x )                 #将对象 x 转换为字符串
    repr(x )                #将对象 x 转换为表达式字符串
    eval(str )              #用来计算在字符串中的有效Python表达式,并返回一个对象
    tuple(s )               #将序列 s 转换为一个元组
    list(s )                #将序列 s 转换为一个列表
    chr(x )                 #将一个整数转换为一个字符
    unichr(x )              #将一个整数转换为Unicode字符
    ord(x )                 #将一个字符转换为它的整数值
    hex(x )                 #将一个整数转换为一个十六进制字符串
    oct(x )                 #将一个整数转换为一个八进制字符串

文件开头注释##

用于在Linux/OS X系统中,表示这是一个Python可执行文件

    #!/usr/bin/env python

字符串操作##

格式化字符串
类似于C语言的printf调用,只不过不是输出,只是返回字符串

    a = "%f"%15.1  #  a 等于 "15.1"
    b = "%d - %d = %d"%(2, 3, 2 - 3)  #  b 等于 "2 - 3 = -1"

连接字符串
python使用逗号连接字符串,逗号会变成空格

    print "Hello","World"
    s = "opteacher"
    print "Hello",s

js用+,php用.

列表##

list就是数组,tuple是常数组

    ary = [1, 2, 3]
    print ary
    cary = (4, 5, 6)
    print cary
    #  因为python是类型不敏感的,所以列表中可以包含不同类型的值
    tt = [1, 1.5, True, "abcd"]
    print tt

常数组tuple指的是其中元素的指向不能被改变,但元素本身可以变化

列表操作

    ary = []
    ary.append(1)  #  增
    ary.pop()      #  删
    #  不指定下标,就从最后一个元素删起
    ary[0] = 2     #  改
    print ary[0]   #  查
    #可以从最后一个元素开始查
    #   -1  =>  最后一个
    #   -2  =>  倒数第二个
    #   ...
    print ary[-1]

如果tuple只有一个元素,写法会和括号运算符冲突
cary = (1) => cary = 1
为了防止这种情况发生,可以在元素后面加个逗号,以明确表示这是一个
cary = (1,)

判断##

没什么可说的

循环##

for
for循环作用于可迭代对象

    ary = [1, 2, 3, 4]
    for itm in ary:
        print itm

使用range函数生成顺序列表,配合for

    for i in range(0, 11):#i: 0 -> 10
        print i

range函数的第三个参数可以指定其步进

    for i in range(1, 11, 2):  #  打印奇数
        print i

用for循环可以生成复杂列表,称之为【列表生成式】

    ary = [i*i for i in range(1, 5)]
    print ary

甚至可以和判断做配合

    ary = [i + 1 for i in range(1, 10, 2) if i != 5]
    print ary

判断一个对象是否是可迭代对象(能被for遍历)

    print isinstance(ary, Iterable)

while
没什么可说的

KV表和枚举集##

dict
python中的KV表成为dict,跟json差不多

    m = { "a": 10, "b": 20, "c": 50 }
    m["d"] = 80  #  增
    m.pop("b")   #  删
    m["a"] = 5   #  改
    #a被覆盖
    print m["c"] #  查

为了防止访问不存在的key,使用get函数查询

    print m["e"]  #  Exception
    print m.get("e")

可以用in判断存不存在这个key

    print "e" in m

遍历

    #(KEY)
    for k in m:
        print k,"->",m[k]

    #(VALUE)
    for v in m.values():
        print v

    #(ITEM)
    for k, v in m.items():
        print k,"->",v

set
枚举集,多用于存储不同的值

    s = ([0, 1, 2, 3])
    m.add(8)     #  增
    m.remove(2)  #  删
                 #  改
    #改不了,只能删了加
    for itm in s:#  查
        print itm
    #  遍历

可变和不可变对象##

一般的固有类型都是不可变对象,修改往往是改变指向。而像list之类的,修改是直接作用在list对象上的

函数##

用def定义

    def add(a, b): return a + b

如果没有函数体,可以填写pass

    def empty(): pass

返回多个值

    def mulRet(): return 5, 10
    a, b = mulRet()
    #如果用一个变量接受多返回值的函数调用
    #会发现其实多返回值的函数返回的是一个tuple
    r = mulRet()
    print r

可以带默认参数

    def sub(a, b = 0): return a - b
    print sub(5)

    def b(l = []):
        l.append("A")
    L = []
    b(L)
    print L
    b(L)
    print L
    #第二次打印的L为多少?

可变参数(用指针接受多参数【开玩笑-_-+】)

    def c(*args):
        for t in args:
            print t
    c(1, 2, "abcd")
    #可变参数接受的是一个tuple

    #关键字参数(其实就是给出KEY和VALUE,在函数内部组成一个dict)
    def d(**args):
        for k in args:
            print k,"->",args[k]

    d(a=3, b=4)

注意:默认参数最好填写不可变常值,因为可变的会
被记录到参数变量中,在下一次调用的时候发生错误

递归函数##

自己调用自己,没什么好说的

集合切片##

取子集

    #a[from:to[:step]]
    ary = [0, 1, 2, 3, 4, 5]
    print ary[1, 3]

    #不指定from,则默认从0开始
    #不指定to,则默认取到最后一个元素

    #也可以用负数下标(但取只能正向取)
    print ary[-2:-1]

集合迭代##

遍历的方式
list可以使用enumerate()函数获取列表索引和值得映射表

    ary = [0, 1, 2, 3, 4]
    for idx, val in enumerate(ary):
        print idx,"->",val
    #这里enumerate函数返回的就是一个迭代器

跟list一样,dict也有一组迭代器用于遍历

    map = { "a": 0, "b": 1, "c": 2 }
    for val in map.itervalues():
        print val

    for k, v in map.iteritems():
        print k,"->",v

跟values()和items()不同,iterXXX()函数不会为for循环从新构造集合,而是在迭代器的基础上做遍历

生成器##

跟迭代器一样,只不过元素需要通过调用next函数一个个被提取出来
简单生成器跟定义列表生成式相似

    g = (x*x for x in range(1, 5))
    for i in g:
        print i

生成器函数

    def g(max):
        i = 0
        while i <= max:
            yield i
            i = i + 1#python居然没有自加自减
    for i in g(6):
        print i

你可能感兴趣的:(基本语法)