Python教程1-7

学自

 廖雪峰的官方网站

1.Python简介:

    1.1.Python是用来编写应用程序的高级编程语言。大小写敏感

    1.2.Python适合开发哪些类型的应用

        首选是网络应用,包括网站、后台服务等等;

        其次是许多日常需要的小工具,包括系统管理需要的脚本任务等等;

        另外就是把其他语言开发的程序再包装起来,方便使用。

    1.3.Python的缺点

        1)运行速度慢

        2)代码不能加密

        1.4.#开头的语句是注释,

2.简单使用

    2.1.输入 name = raw_input(">")输入的是字符串, 

        可以用int(name)转为 int

        输出 print name

    2.2.数据类型

        浮点数 1.23x10^9 = 1.23e9

    2.3.空值 用None表示

    2.4.编码问题,首行加入 

# -*- coding: utf-8 -*-    #廖雪峰的官方网站编码篇

    2.5.

list:l=['name1','name2','name3']
        list 元素可以不同,可以是另一个元素
        l.append('name4'):在 list的最后加入
        l.insert(1,'newname2'):把元素插入到指定的位置
        l.pop([1]): 删除元素,默认末尾,(指定元素)
        l[1]='newname2': 替换元素,直接赋值
        l.sort(): 排序

    2.6.tuple:

demo=('name1','name2')

        但是tuple一旦初始化就不能修改,

        只有1个元素的tuple定义时必须加一个逗号',': t=(1,)

    2.7.if

if x>3:
...
elif x>1:
...
else:
...

    2.8.循环

for x in list:...
while true:

    2.9.dict: 

d={'name':'zansan','nianl':80}

        key是不可变对象。

        查找和插入的速度极快,不会随着key的增加而增加;

        需要占用大量的内存,内存浪费多。

    'name' in d: 判断 key是否存在

    d.get('name'[,-1]): 如果 key不存在,则返回None/自设值

    d.pop('name'):删除元素

    2.10.set: 一组key的集合,但不存储value,key不能重复

s = set([1, 2, 3])
        s.add(4): 添加元素
        s.remove(4): 删除元素
        s1&s2 /  s1|s2:可做交集、并集等操作

3.函数

        可以返回多个值,返回的是一个tuple(元祖)

    3.1.定义

def x([n=1]): 设定默认参数
        def x(*n): 可变参数(n当 tuple用),传列表时,x(*list)
        def x(name,age,**kw): 关键字参数(kw当 dict用),

        传参时,x('zs',37,job='xx',city='xxx'),传dict,x(**dict)

        参数可组合使用:顺序必须是:必选参数、默认参数、可变参数和关键字参数。

    3.2.递归函数

4.高级特性

    4.1.切片: list[0:3]: 取得前三个元素

    4.2.迭代: dict迭代的是key,

        如果要迭代value,可以用for value in d.itervalues(),

        如果要同时迭代key和value,可以用for k, v in d.iteritems()。

        判断是否可迭代: 

from collections import Iterable
        isinstance('abc', Iterable)

    4.3.列表生成式: [x for x in range(1, 11)] 通过for 生成一个 list

    eg:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
        >>>[m + n for m in 'ABC' for n in 'XYZ']
        ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

    4.4.生成器: 

g = (x for x in range(10)): 列表生成式的[]改成()

        一边循环一边计算的机制,称为生成器,节省大量的空间

g.next() 调用

        在函数中使用 yield,创建生成器

5.函数式编程

    5.1.高阶函数: 让函数的参数能够接收别的函数。

def add(x, y, f):
            return f(x) + f(y)

    5.2.map/reduce:

        map:2个参数,将第一个参数的函数作用于第二个参数list中的每个元素

>>> map(str, [1, 2, 3]),    
      --['1', '2', '3']

        reduce:与 map类似,但函数需接收2个参数

reduce(f, [x1, x2, x3, x4]) == f(f(f(x1, x2), x3), x4)

    5.3.filter: 过滤序列

        接收一个函数和一个序列

            依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

def xx(x):
    if x < 30:
        return True
    else:
        return False
print filter(xx, [1, 2, 340, 20, 11])
--[1, 2, 20, 11]

    5.4.sorted: 排序 

sorted(list[,f]) f(函数)

    5.5.返回函数

    5.6.匿名函数:lambda 表示匿名函数,冒号前面的x表示函数参数。

        不用写return,返回值就是该表达式的结果。

lambda x: x * x

    5.7.装饰器:

        代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)

        简单的写法,  #

            编写函数调用日志

def log(text):
            def decorator(func):
                def wrapper(*args, **kw):
                    print '%s %s():' % (text, func.__name__)
                    return func(*args, **kw)
                return wrapper
            return decorator
        @log('execute')        #调用
        def now():
            print '2013-12-25'

    5.8.偏函数

        functools.partial: 把一个函数的某些参数设置默认值,返回一个新的函数

int2 = functools.partial(int, base=2)

6.模块

    在文件夹中创建一个 __init__.py 文件,Python会把这个目录当成一个包

        __init__.py可以是空文件,也可以有Python代码

    6.1.任何模块代码的第一个字符串都被视为模块的文档注释;

if __name__=='__main__':

            在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败

        别名:

import cStringIO as StringIO:

            优先导入cStringIO,如果不支持,可以降级使用StringIO

        作用域:

            类似__xxx__这样的变量是特殊变量,自己的变量一般不要用这种变量名;

            _xxx和__xxx这样的函数或变量就是非公开的(private)不应该被直接引用,

                可以通过 get()返回一个新的函数

                __name变量改成了_Student__name

    6.2.安装第三方模块

pip install PIL    #使用 pip安装模块,pypi.python.org,

    6.3.__future__:在旧的版本中试验新版本的一些特性。

7.面向对象编程

    7.1.类和实例

class Student(object):       #类名通常是大写开头的单词,

            (object)表示该类是从哪个类继承下来的

            如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。

def __init__(self, name, score):    #类中定义的函数只有一点不同,就是第一个参数永远是实例变量self

    7.2.获取对象信息

type(): type(123)返回type类型<type 'int'>
        isinstance(): isinstance(d, Dog)返回布尔,
            isinstance('a', (str, unicode))是否是某些类型中的一种
dir():获得一个对象的所有属性和方法,返回一个包含字符串的list
            dir('ABC')
        hasattr(): hasattr(obj, 'x') obj中有属性'x'吗
        setattr(): setattr(obj, 'y', 19) # 设置一个属性'y'
        getattr(): getattr(obj, 'y') # 获取属性'y'

转载于:https://my.oschina.net/sii/blog/659063

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值