Python 学习---------Day5
第十四章 文档
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的更多相关文章
- Python学习day5作业
目录 Python学习day5作业 ATM和购物商城 1. 程序说明 2. 基本流程图 3. 程序测试帐号 4. 程序结构: 5. 程序测试 title: Python学习day5作业 tags: p ...
- Python学习-day5 常用模块
day5主要是各种常用模块的学习 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 conf ...
- python学习-Day5
目录 今日学习内容详解 流程控制理论 程序执行流程分类: 重点小知识* 分支结构(if 语法) 单 if 分支 if 与 else 分支 if 与 elif 与 else 分支 if嵌套 练习 循环结 ...
- python 学习day5(模块)
一.模块介绍 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能 ...
- python学习Day5 几种数据类型的使用
今日内容 数据类型分类: int | complex | float | str | bool | list | dict | tuple | set 3种数据类型的方法:(数字.字符串.列表 ) 可 ...
- python学习day5 常量 运算符补充 流程控制基础
1.常量 值不会改变的量 python中没有特别的语法定义常量,一般约定用全大写字母命名常量,比如圆周率pi 2.预算符补充 2.1算数运算符 print(10/3)除法运算 print(10//3) ...
- python学习 day5 (3月6日)
字典映射,{}键值对,key 唯一的 ,可哈希,容器型数据类型 可变的(不可哈希): 字典 列表 集合 都不可做键 不可变的(可哈希): 数字 字符串 bool 元组 frozeset() 可以做键 ...
- python学习day5 数据类型Ⅲ(字典)
day5 字典 回顾&补充 面试题 #数据类型判断a = 1 #intb = (1) #intc = ('1') #strd = (1,) #tuple int py2/py3 除法 强制转换 ...
- Python学习记录day5
title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...
- Python学习笔记,day5
Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...
随机推荐
- NetBIOS发包
[NetBIOS发包] 1.拥有 LANA.Local Session Num即可发包. ncb_lsn,session号.指定发向哪. ncb_lana_num,lan-adapter号,指定用哪一 ...
- Java Sha1 加密算法
//下面四个import放在类名前面 包名后面 //import java.io.UnsupportedEncodingException; //import java.security.Messag ...
- WizNote for linux installation
源一:没有用处 官网链接http://www.wiznote.com/download-wiznote-for-Linux. 源二:提供了源及安装方法 Fedora 中文社区软件源,具体位置在这里. ...
- Integer Break
Given a positive integer n, break it into the sum of at least two positive integers and maximize the ...
- bootstrap 模态 modal 小例子
bootstrap 模态 modal 小例子 <html> <head> <meta charset="utf-8" /> <title ...
- [MEMO]: 机器学习教父级别的任务Jordan推荐的书籍
- MongoDB学习:(一)MongoDB安装
MongoDB学习:(一)MongoDB安装 MongoDB介绍: 直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...
- html5调取手机摄像头或相册
html5调用手机摄像头或者相册 由于input的type=file 格式的文件的界面并不是我们所希望的界面,所以在此我隐藏input,自定义样式,这个样式就在<a>中自己定义,这里我就不 ...
- Flask 备注一(单元测试,Debugger, Logger)
Flask 备注一(单元测试,Debugger, Logger) Flask是一个使用python开发Web程序的框架.依赖于Werkzeug提供完整的WSGI支持,以及Jinja2提供templat ...
- mysql主从切换
mysql 主从切换 主停,从做主步骤如下: 1 确认从服务器已经完成所有同步操作:stop slave io_thread show processlist 直到看到状态都为:xxx has rea ...