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通过shutil实现快速文件复制的方法
Mar 14 Python
python脚本设置超时机制系统时间的方法
Feb 21 Python
实例讲解Python编程中@property装饰器的用法
Jun 20 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
Dec 18 Python
python调用c++ ctype list传数组或者返回数组的方法
Feb 13 Python
Django中Middleware中的函数详解
Jul 18 Python
django-filter和普通查询的例子
Aug 12 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
PyChon中关于Jekins的详细安装(推荐)
Dec 28 Python
Python入门基础之数字字符串与列表
Feb 01 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
文件上传类
2006/10/09 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
tornado框架blog模块分析与使用
2013/11/21 Python
详解Python爬虫的基本写法
2016/01/08 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
Python 打印中文字符的三种方法
2018/08/14 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
Django中提示消息messages的设置方式
2019/11/15 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
质量承诺书格式
2014/05/20 职场文书
心得体会的写法
2014/09/05 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
党员活动总结
2015/02/04 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
Python提取PDF指定内容并生成新文件
2021/06/09 Python