Python笔记(叁)继续学习


Posted in Python onOctober 24, 2012

主题:
为什么要有方法呢?
回答居然是:懒惰是一种美德
方法的定义关键词:

def
用callable来判断是否是可调用:

x = 1 
y = math.sqrt 
callable(x) #False 
callable(y) #True

关于方法的返回值:
def hello(name): 
return 'Hello, ' + name + '!'

有一个算法的实现:前面两个数的和是后面的数
fibs = [0, 1] 
for i in range(8): 
fibs.append(fibs[-2] + fibs[-1]) result:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

如此就可以定义一个方法实现:
def fibs(num): 
result = [0, 1] 
for i in range(num-2): 
result.append(result[-2] + result[-1]) 
return result

跳出方法中命令的执行:
def test(): 
print 'This is printed' 
return 
print 'This is not'

如果方法没有返回任何东西的话,返回的是None
关于方法的参数
我们传入方法的参数是否被改变的问题,在很多语言中都会遇到。

例子:

def try_to_change(n): 
n = 'Mr. Gumby' name = 'Mrs. Entity' 
try_to_change(name) 
name # 'Mrs. Entity'

上面的例子参数没有被改变,那么那些参数是可变的呢。
String number tuples 是作为不可变的类型,我们不能改变它们。如果我们使用可变的类型作为参数就可以实现参数在方法内被改变的功能了。
def change(n): 
n[0] = 'Mr. Gumby' names = ['Mrs. Entity', 'Mrs. Thing'] 
change(names) 
names #['Mr. Gumby', 'Mrs. Thing']

这部分内容其实类似于java,我以前有个博文:猛击即可到达

方法传参,可以通过以下的方式解决参数意思的混淆:

def hello_1(greeting, name): 
print '%s, %s!' % (greeting, name) 
hello_1(greeting='Hello', name='world') #Hello, world!

一个更具名字找人的方法集:
def init(data): #1 
data['first'] = {} 
data['middle'] = {} 
data['last'] = {} def lookup(data, label, name): 
return data[label].get(name)#2 
def store(data, full_name): 
names = full_name.split()#3 
if len(names) == 2: names.insert(1, '')#4 
labels = 'first', 'middle', 'last' 
for label, name in zip(labels, names):#5 
people = lookup(data, label, name) 
if people: 
people.append(full_name)#6 
else: 
data[label][name] = [full_name]

使用:
MyNames = {} 
init(MyNames) 
store(MyNames, 'Magnus Lie Hetland') 
lookup(MyNames, 'middle', 'Lie') #['Magnus Lie Hetland']

理解:

1,data 的数据结构式这样的:{'middle': {}, 'last': {}, 'first': {}}
2,get方法根据建找到值
3,string的split方法,可以加入分隔符,默认是空格为分隔符:

test = 'a,2,d' 
test.split(',') #['a', '2', 'd'] 
name = 'my xy dd' 
names = name.split() 
names #['my', 'xy', 'dd']

4,insert插入的时候后面的值向后退,不要理解成替换
names.insert(1, '') 
names #['my', '', 'xy', 'dd']

5,zip方法说明的例子:
x = [1, 2, 3] 
y = [4, 5, 6] 
zipped = zip(x, y)#(1, 4), (2, 5), (3, 6)

6,这个label里已经存在查找的name了,就把full name加上去
关于参数中的 * 和 **

* :表示任意个数的参数

**

:表示dictionary参数

例子:

def print_params_2(title, *params): 
print title 
print params 
print_params_2('Params:', 1, 2, 3)

结果是

Params:
(1, 2, 3)

def print_params(**params): 
print params 
print_params(x=1, y=2, z=3)

结果是:{'z': 3, 'x': 1, 'y': 2}
结合*可以改进刚刚的存储名字的方法:
def store(data, *full_names): 
for full_name in full_names: 
names = full_name.split() 
if len(names) == 2: names.insert(1, '') 
labels = 'first', 'middle', 'last' 
for label, name in zip(labels, names): 
people = lookup(data, label, name) 
if people: 
people.append(full_name) 
else: 
data[label][name] = [full_name]

调用:
d = {} 
init(d) 
store(d, 'Han Solo') 
store(d, 'Luke Skywalker', 'Anakin Skywalker') 
lookup(d, 'last', 'Skywalker')#['Luke Skywalker', 'Anakin Skywalker']

总结:

工作中虽然用不到,但是抽点时间学习,充实自己也不错哦。
笔记可以用来翻看学习,希望未来的我看到这里的时候,不要气馁,不要骄狂,一点一滴的学习,可能将来没有用,但耐心的本事也许就是需要这样的方式锻炼出来的。
让我们继续前行!

Python 相关文章推荐
推荐11个实用Python库
Jan 23 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
Mar 19 Python
python比较两个列表是否相等的方法
Jul 28 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
Python对excel文档的操作方法详解
Dec 10 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
Pytorch反向求导更新网络参数的方法
Aug 17 Python
浅谈ROC曲线的最佳阈值如何选取
Feb 28 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
python笔记(2)
Oct 24 #Python
python笔记(1) 关于我们应不应该继续学习python
Oct 24 #Python
Python的一些用法分享
Oct 07 #Python
Python天气预报采集器实现代码(网页爬虫)
Oct 07 #Python
python代码检查工具pylint 让你的python更规范
Sep 05 #Python
python 基础学习第二弹 类属性和实例属性
Aug 27 #Python
用Python写的图片蜘蛛人代码
Aug 27 #Python
You might like
PHP 截取字符串专题集合
2010/08/19 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
jquery tools 系列 scrollable学习
2009/09/06 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
Python Socket编程入门教程
2014/07/11 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
八大排序算法的Python实现
2021/01/28 Python
python matplotlib画图实例代码分享
2017/12/27 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
如何清空python的变量
2020/07/05 Python
django和flask哪个值得研究学习
2020/07/31 Python
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
机关干部三严三实心得体会
2014/10/13 职场文书
2014年销售部工作总结
2014/12/01 职场文书
创业计划书之溜冰场
2019/10/25 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
Python使用openpyxl批量处理数据
2021/06/23 Python
字节飞书面试promise.all实现示例
2022/06/16 Javascript