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 ...
随机推荐
- socket选项总结(setsocketopt)
功能描述: 获取或者设置与某个套接字关联的选 项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为了操作套接字层的选项, ...
- asp.net LINQ LinqDataSource控件显示数据和DropdownList显示数据
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- Android菜鸟成长记12 -- ORMLite的简单使用
在我们的开发中,为了提高开发效率,我们一般都会使用到框架,ormilte则是我们必不可少的数据库框架. 对于ORMLite我也是今天才刚刚接触,我们先从一个简单的项目来了解它吧. ORMLite ja ...
- css3、html5学习笔记
2016/12/14 ----认真看完绝对对你有帮助 HTML5针对移动端,移动端的浏览器主要是chrome,是webkit内核; app(applicatin):应用; native app:原生的 ...
- Java Iterator, ListIterator 和 foreach语句使用
Java Iterator, ListIterator 和 foreach语句使用 foreach语句结构: for(part1:part2){part3}; part2 中是一个数组对象,或者是带 ...
- C# DataGridView控件清空数据完美解决方法
C# DataGridView控件绑定数据后清空数据在清除DataGridview的数据时: 1.DataSource为NULL(DataGridView.DataSource= null;)这样会将 ...
- allegro - 层叠相关参数
层叠结构设置 弹出Layout Cross Section对话框 Subclass Name一列是该层的名称,可以按照自己的需要来填写.Type 列选择该层的类型,有三种: ·CONDUCTOR: ...
- Sublime text 3 中Package Control 的安装与使用方法和解决Sublime Text 3不能正确显示中文的问题
Sublime text 3 中Package Control 的安装与使用方法,英文好可以在这个网址看看, 下面简单的说明一下 : https://packagecontrol.io/install ...
- MSSQLSERVER服务无法启动的解决方案
MSSQLSERVER服务无法启动的解决方案 有时候sqlserver无法启动了,原因是mssqlserver服务没有启动,当你手动启动时,又出现服务无法响应的可恶错误提示... 笔者“有幸”遇到了, ...
- 简单的通用TreeView(WPF)
工作中要为很多类创建TreeView, 很多时候仅仅是因为要显示字段不同, 就得Ctrl+C.Ctrl+V复制一份几乎相同的代码, 这难免让人生厌, 于是希望像泛型集合的扩展方法那样, 可以在使用的时 ...