文档章节

Python教程1-7

s
 sidiansh
发布于 2016/04/14 09:40
字数 1571
阅读 38
收藏 1

学自

 廖雪峰的官方网站

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'

© 著作权归作者所有

上一篇: Python教程8-10
下一篇: Scrapy 相同的标签
s
粉丝 1
博文 37
码字总数 17462
作品 0
济南
私信 提问
人人都能学会的python编程教程(基础篇)完整版

人人都能学会的python编程教程1:第一行代码 人人都能学会的python编程教程2:数据类型和变量 人人都能学会的python编程教程3:字符串和编码 人人都能学会的python编程教程4:关系运算符与循...

编程老司机
2018/05/10
0
0
《Python从小白到大牛》简介

本书是一部系统论述Python编程语言、OOP编程思想以及函数式编程思想的立体化教程(含纸质图书、电子书、教学课件、源代码与视频教程)。为便于读者高效学习,快速掌握Python编程方法。本书作...

tony关东升
2018/06/26
0
0
10 分钟快速入门 Python3

(给程序员的那些事加星标) Python 是由吉多·范罗苏姆(Guido Van Rossum)在 90 年代早期设计。 它是如今最常用的编程语言之一。它的语法简洁且优美,几乎就是可执行的伪代码。 注意:这篇...

程序员的那些事_
01/29
0
0
深入折腾scrapy之一:环境搭建 beta0.3(2013-2-4更新)

发表于:http://www.ballooncat.com/scrapy-setup.html 最近在深入折腾scrapy,先放出环境搭建教程一枚,随后放出更多关于scrapy配置,扩展方面的教程.教程为beta版,部分细节在实际环境中可能会有...

我不叫大脸猫
2013/01/09
991
0
在知乎上学Python爬虫 - 知乎

有很多人正在入门Python爬虫,学习Python爬虫。在这个过程中,会遇到很多难题,许多小伙伴都会去寻找答案,但是因为答案的纷繁复杂和种类多样,往往要花上好些时间。 而码不理经常会在知乎上...

编程实验室
10/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【在 Nervos CKB 上做开发】Nervos CKB 脚本编程简介[3]:自定义代币

原文作者:Xuejie 原文链接:https://xuejie.space/2019_09_06_introduction_to_ckb_script_programming_udt/ Nervos CKB 脚本编程简介[3]:自定义代币 CKB 的 Cell 模型和 VM 支持许多新的用...

NervosCommunity
49分钟前
4
0
通过OAuth2.0 获取授权访问SF 用户数据

通过OAuth2.0 获取授权访问SF 用户数据 OAuth2.0 相关知识 深入了解 Salesforce 中的 OAuth 2.0(SF官方) OAuth 2.0 的一个简单解释(阮一峰大神) OAuth 2.0 的四种方式(阮一峰大神) GitHub OA...

在山的那边
55分钟前
7
0
编写程序:从键盘上接受一个三位数(首先要确保是三位数),计算出各位之和输出。

#include<stdio.h> int main() { int a,sum=0; printf("请输入一个三位数:\n"); scanf("%d",&a); sum=a/100+a%100/10+a%10; printf("这三个数的和:%d",sum); return 0; }......

201905021729吴建森
今天
7
0
如何离开/退出/停用Python virtualenv

我正在使用virtualenv和virtualenvwrapper。 我可以使用workon命令在virtualenv之间切换。 me@mymachine:~$ workon env1(env1)me@mymachine:~$ workon env2(env2)me@mymachine:~$ workon e......

技术盛宴
今天
7
0
成长之路 万事坚持难

任何事情开了头,想要更好的发展下去,不忘初心,就一定要坚持下去。 以前自己坚持了一些事情,比如早睡不吃东西,由于中途断了,没有及时止损,导致又接着恶习断了几天。所以 及时的反省和调...

T型人才追梦者
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部