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 相关文章推荐
Python 自动补全(vim)
Nov 30 Python
在Python中利用Pandas库处理大数据的简单介绍
Apr 07 Python
python算法演练_One Rule 算法(详解)
May 17 Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 Python
Python Django框架实现应用添加logging日志操作示例
May 17 Python
Python中一些深不见底的“坑”
Jun 12 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
python简单实现插入排序实例代码
Dec 16 Python
python实现录制全屏和选择区域录屏功能
Feb 05 Python
使用python如何删除同一文件夹下相似的图片
May 07 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 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获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
原生JS生成指定位数的验证码
2020/10/28 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
python网络编程之读取网站根目录实例
2014/09/30 Python
python协程用法实例分析
2015/06/04 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
酒店副总岗位职责
2013/12/24 职场文书
消防安全责任书
2014/04/14 职场文书
高一新生军训方案
2014/05/12 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技