第十四章 文档
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. 关于GC的几篇文章

    http://msdn.microsoft.com/zh-cn/magazine/bb985010(en-us).aspx http://msdn.microsoft.com/zh-cn/magazi ...

  2. 阿里巴巴Java招聘

    大家好: 我是阿里巴巴B2B的应用架构师,现在大量招聘Java工程师,对自己技术有信心的兄弟姐妹,请联系我吧. 版权声明:本文为博主原创文章,未经博主允许不得转载.

  3. ubuntu apt 安装

    1. ./autogen.sh: libtoolize: not found sudo apt-get install aptitude sudo aptitude install libtool 2 ...

  4. linux下添加链接与删除链接(ln命令的用法)

    添加链接使用ln命令用法:#ln --help用法:ln [选项]... 目标 [链接名]或:ln [选项]... 目标... 目录或:ln [选项]... --target-directory=目录 ...

  5. 寻找子域名的IP段

    校网网络安全检测,第一步,我们做的工作是找出学校所有的IP段.  当然,期间我们可以利用软件帮助我们扫描,但是一款软件往往是不够的,因为它全面,所以我们用了IISPutScanner,subDomai ...

  6. .NET HttpClient扩展

    /// <summary> /// HttpClient扩展类 /// </summary> public static class HttpClientExtensions ...

  7. Netty 的 inbound 与 outbound, 以及 InboundHandler 的 channelInactive 与 OutboundHandler 的 close

    先看一个例子. 有一个简单 Server public class SimpleServer { public static void main(String[] args) throws Excep ...

  8. Asp.Net MVC4入门指南(7):给电影表和模型添加新字段

    在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entit ...

  9. 使用 hexdump dump 文件内容

    名词解释 [dump] dump 是指把文件的内容,每个字节用2位十六进制数来表示的方式. 缘由 最近看矢泽久雄的<How Program Works>,了解到 dump “exe文件”( ...

  10. C#实现:给定任意要给字符串,输出所有可能的回文的子字符串集合。

    class Program { static void Main(string[] args) { string testStr = "sdfadfdsfadfdsfsdf"; i ...