python第二周学习函数

python的内置函数有很多
例如:
abs函数:这个和php一样
cmp(x,y)比较函数:如果x<y,返回-1,如果x==y,返回0,如果x>y,返回1;这个函数还是有点不太一样需要特地记一下。
数据类型转换函数:int整形函数、float浮点型函数、str字符串型函数、unicode编码转换函数、bool布尔型函数;这写函数方法都是根据类型的名字来命名的记起来很好记。
给函数起别名:

>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数

这个起别名的方法很简单,不过我感觉用处不大。

定义函数:

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

pass占位符,放一个pass,让代码能运行起来。

python函数可以返回多个值,原理其实是返回了一个数组,由于语法的原因可以省略括号

函数的参数

例如:如何计算x的n次方

def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

上面的方法固定了传参,如果少传就会报错,因此还可以设置默认参数“def power(x, n=2):”
几点重点记忆:

必选参数在前,默认参数在后
如何设置默认参数
多个传参时变化大的在前面变化小的在后面

def func(a, b, c=0, *args, **kw):
    print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw

*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。

递归函数

这块当然逻辑都是一样的,函数在内部可以调用自身那么他就是递归函数
还有文档上的例子(if else 的写法看上去还是很简单特别的):

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)
切片

切片概念:
数组名[0:3],0:3是数组中的索引,指获取数组0到3的元素,
还可以使用负数,
数组名[-10:]后10个数,
数组名[::5]数组中每5个元素取一个,
数组名[:10:2]前10个数,每两个取一个,
数组名[10:20]前11-20个数,
什么都不写,只写[:]就可以原样复制一个数组:

重点:字符串也可使用切片操作
例如:'ABCDEFG'[:3]

迭代:

在Python中,迭代是通过for ... in来完成的

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(),如果要同时迭代key和value,可以用for k, v in d.iteritems()。

列表生成式

列表生成式的代码格式,感觉还是比较不好使用的

range(1, 11),可以生成1到11的数组
[x * x for x in range(1, 11)],当然还可以加上一些计算
[x * x for x in range(1, 11) if x % 2 == 0],for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方

for循环其实可以同时使用两个甚至多个变量,比如数组后面跟iteritems()可以同时迭代key和value

lower(),将list中所有的字符串变小写

生成器

在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。
要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

    L = [x * x for x in range(10)]
    L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    g = (x * x for x in range(10))
    g

创建L和g的区别仅在于最外层的[]和(),L是一个list,而g是一个generator。

高阶函数

变量可以指向函数,这个还是很特别的

f = abs
a = f(-10)
10
传入函数

既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

def add(x, y, f):
    return f(x) + f(y)

当我们调用add(-5, 6, abs)时,参数x,y和f分别接收-5,6和abs,根据函数定义,我们可以推导计算过程为:

x ==> -5
y ==> 6
f ==> abs
f(x) + f(y) ==> abs(-5) + abs(6) ==> 11
map()

map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回.

图片.png
def f(x):
    return x * x
a = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
print a
[1, 4, 9, 16, 25, 36, 49, 64, 81]
filter

Python内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

如何勇filter()删除1~100的素数呢?

import math
def is_prime(n):
    list_num = []
    for i in range(2, n):
        for num in range(2, int(math.sqrt(n))+1):
            if i % num == 0 and i != num:
                break
            elif i % num != 0 and num == (int(math.sqrt(n))):
                list_num.append(i)
    return list_num
    
print is_prime(100)

总结:本周主要围绕着python的函数部分在看,整理一些比较有代表性的例子,同时明显感受代码风格和逻辑能接受,但是无法段时间熟练掌握,代码风格差异和php比起来蛮大的,有很多细节运行demo的时候需要花时间理解,这周进度很慢问题是有些地方不好理解,下周加快进度,再写一些稍难一点的demo,来加深这部分语法风格的掌握。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,557评论 1 118
  • python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正...
    renyangfar阅读 3,027评论 0 10
  • 教程总纲:http://www.runoob.com/python/python-tutorial.html 进阶...
    健康哥哥阅读 2,017评论 1 3
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,219评论 0 4
  • 内置函数Python解释器内置了许多功能和类型,总是可用的。他们是按字母顺序列在这里。 abs(x)返回一个数的绝...
    uangianlap阅读 1,228评论 0 0