第十四章 文档
class employee:
"class doumentation"
pass
print employee.__doc__
#注释会保存在__doc__属性中以供查看.

import sys
print sys.__doc__
print int.__doc__

第十五章 函数基础
def 是可执行的代码
def创建了一个对象并将其赋值给某一变量名
return将一个结果对象发送给调用者
函数是通过赋值(对象引用)传递的
global申明了一个模块的变量并被赋值
参数,返回值以及变量并不是声明
def intersect(seq1,seq2):
res=[]
for x in seq1:
if x inseq2:
res.append(x)
return res
第十六章 作用域和参数
一个在def内定义的变量名能够被def内的代码使用,不能在函数的外部引用这样的变量名
def之中的变量名与def之外的变量名并不发生冲突,即使是使用在别处的相同的变量名,一个在def之外被赋值(例如在另外一个def之中或者在模块文件的顶
层)的变量x与在这个def之中的变量x是完全不同的变量
函数定义了本地作用域,而模块定义的是全局作用域.
内嵌的模块是全局作用域:每一个模块都是一个全局作用域,对于外部的全局变量变成一个模块对象的属性,但是在一个模块中能够像简单的变量一样使用
变量名引用分为三个作用域进行查找,首先是本地,之后是函数内,之后是全局,最后是内置
在默认的情况下,变量名赋值会创建或者改变本地变量
全局声明将赋值变量名映射到模块文件内部的作用域

作用域与带有循环变量的默认参数相比较
def make():
acts=[]
for i in range(5):
acts.append(lambda x:i**x)
return acts
acts[0](2) 4
acts[2](2) 4
这里的原因是i对于每一个列表中的函数都是相同的值4
这是嵌套作用域的值和默认参数方面遗留的一种需要解释清楚的情况,而不是引用所在的嵌套作用域的值
为了能让这类代码可以工作,必须使用默认参数把当前的值传递给嵌套作用域的变量
因为默认参数是在嵌套函数创建时候评估的,而不是在其稍后它调用时
def make():
acts=[]
for i in range(5):
acts.append(lambda x,i=i:i**x)
return acts
不可变参数是通过值进行传递
可变对象是通过指针进行传递
def change(a,b):
a=1
b[0]='spam'

x=1
L=[1,2]
change(x,L)
x=1
L={'spam',2]
避免可变参数的修改
L=[1,2]
change(x,L[:])

def change(a,b):
b=b[:]
a=2
b[0]='spam'
任意参数的实例
def f(*arg):
print arg
def f(**arg):
print arg
f() {}
f(a=1,b=2) {'a':1,'b':2}
def f(a,*pargs,**kargs):
print a,pargs,kargs

def min(*args):
res=args[0]
for i in args[1:]:
if res<args[i]
res=args[i]
return res

def min(first,*rest):
for arg in rest:
if first<arg:
first=arg
return first

def min(*args):
tmp=list(args)
tmp.sort()
return tmp[0]
第十七章 函数的高级话题
匿名函数:lambda
lambda是一个表达式,而不是一个语句
lambda的主体是一个单个的表达式,而不是一个代码块
def fun(x,y):
return x+y
fun(2,4,5)

f=lambda x,y,z:z=x+y
f(2,3,4)

x=(lambda a='fee',b='fie',c='d':a+b+c)
x("wee")

def knights():
title='sir'
action=(lambda x:title+' '+x)
return action
act=knights()
act('ad')

内置函数apply
def fun(x,y,z):
return x+y+z
apply(fun,(2,3,4))
f=lambda x,y,z:x+y+z
apply(f,(2,3,4))
在序列中映射函数 map
count=[1,2,3,4]
a=[]
for x in count:
a.append(x+10)

def inc(x):x+10
map(inc,count)
map((lambda x:x+10),count)
函数式编程工具:filter和reduce
range(-5,5)
filter((lambda x:x>0),range(-5,5))

列表解析
res=[ord(x) for x in 'spam']
[x**2 for x in range(10)]
map((lambda x:x**2),range(10))
[x for x in range(5) if x%2==0]

重访迭代器:生长器
def gen(n):
for i in range(n):
yield i**2
x=gen(4)
x.next()
x.next()
生成器表达式:迭代器遇到列表解析
[x**2 for x in range(4)]
(x**2 for x in range(4)) //返回迭代对象,使用next()获取

Python 学习---------Day5的更多相关文章

  1. Python学习day5作业

    目录 Python学习day5作业 ATM和购物商城 1. 程序说明 2. 基本流程图 3. 程序测试帐号 4. 程序结构: 5. 程序测试 title: Python学习day5作业 tags: p ...

  2. Python学习-day5 常用模块

    day5主要是各种常用模块的学习 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 conf ...

  3. python学习-Day5

    目录 今日学习内容详解 流程控制理论 程序执行流程分类: 重点小知识* 分支结构(if 语法) 单 if 分支 if 与 else 分支 if 与 elif 与 else 分支 if嵌套 练习 循环结 ...

  4. python 学习day5(模块)

    一.模块介绍 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能 ...

  5. python学习Day5 几种数据类型的使用

    今日内容 数据类型分类: int | complex | float | str | bool | list | dict | tuple | set 3种数据类型的方法:(数字.字符串.列表 ) 可 ...

  6. python学习day5 常量 运算符补充 流程控制基础

    1.常量 值不会改变的量 python中没有特别的语法定义常量,一般约定用全大写字母命名常量,比如圆周率pi 2.预算符补充 2.1算数运算符 print(10/3)除法运算 print(10//3) ...

  7. python学习 day5 (3月6日)

    字典映射,{}键值对,key 唯一的 ,可哈希,容器型数据类型 可变的(不可哈希): 字典 列表 集合 都不可做键 不可变的(可哈希): 数字 字符串 bool 元组 frozeset() 可以做键 ...

  8. python学习day5 数据类型Ⅲ(字典)

    day5 字典 回顾&补充 面试题 #数据类型判断a = 1 #intb = (1) #intc = ('1') #strd = (1,) #tuple int py2/py3 除法 强制转换 ...

  9. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

  10. Python学习笔记,day5

    Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...

随机推荐

  1. Windows服务二:测试新建的服务、调试Windows服务

    一.测试Windows服务 为了使Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点.像其他应用程序一样,Windows服务也是在Program.cs的Main ...

  2. CSS 图片倾斜的制作

    <style> #zhong{ height:600px; width:1350px; position:relative; z-index:2} .znei{ height:60px; ...

  3. KVO

    •基本概念 Key Value Observing, 键值观察者.它提供一种机制,当指定的对象的属性被修改后,则对象就会接收到通知. 与NSNotification不同,键值观察中并没有中心对象来为所 ...

  4. ABP mapto 映射

    obj1.MapTo(obj2); obj1=>obj2: 在obj1实体里添加映射 [AutoMap(typeof(obj2))] public class obj1 { }

  5. 快捷键的记录,Word和PPT的一些常用操作

    1)PPT背景设置:右键->背景->背景填充下的下拉箭头->填充效果->图片-  >选择图片->确定->选择应用或应用全部 2)Word,PPT求和符号怎么打 ...

  6. [z]START WITH CONNECT BY PRIOR子句实现递归查询

    [z]http://jingyan.baidu.com/article/5d368d1e182bb93f60c05784.html START WITH CONNECT BY PRIOR这个语法主要用 ...

  7. [z]查表空间使用情况

    SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE ...

  8. 对Hadoop体系的一点认识

    前言:Hadoop体系核心大多源自Google的思想,里面的思想的确很精彩!比如分布式计算,云的思想等,比起其他简单技术,更使得我想写这文章, 虽然这个东东在一般公司不可能用到! 首先由于hadoop ...

  9. CSS换行文本溢出显示省略号,多行

    首先,div部分 <body> <div>多行的显示该如何解决呢,后面经过一番google后,我找到了chrome的一个API可以解决上面提到的需求-webkit-line-c ...

  10. Redis与Memcached的区别

    传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...