本节主要内容:

      1. 上节遗留的内置函数:

         callable(), chr(),ord(), compile(), eval(),exec(), divmod(), isinstance() ,filter(), map()

      2. 装饰器

  (一)内置函数补充:

    callable():   查看函数是否可被调用,可以调用为True,否则返回False。

 print(callable(0))
print(callable('string'))
def add(a,b):
return a + b
print(add(1,2))
print(callable(add)) False
False
3
True

    chr(), ord()  : 字母转换为数字,数字转换为字母。

 r = chr(65)
print(r) n = ord('a')
print(n) A
97

  

  应用ASCII字符代码随机生成验证码:

       点击一次随机自动生成验证码:

 import random
li = []
for i in range(6):
r = random.randrange(0,5)
if r == 2 or r == 4:
num = random.randrange(0,10)
li.append(str(num))
else:
temp = random.randrange(65,91)
c = chr(temp)
li.append(c)
result = ''.join(li)
print(result) 7SC45Q

  complie() : 将字符串转换为Python代码

  eval() : 编译成表达式,执行表达式,并获取结果,有返回值

  exec():  执行python代码,但没有返回值

 s = 'print(123)'
r =compile(s,'<string>','exec') #中间字符串必须指定
exec(r) print(exec('7+9+8')) #没有返回值为None
ret = eval('7+9+8')
print(ret) 123
None
24

  divmod():  得到商和余数,一般用于分页标识

 r = divmod(97,10)  #97行,每页10行
print(r)
print(r[0])
print(r[1]) (9, 7) #分9页,余7行
9
7

  isinstance():  判断对象是否为某个类的实例

 s = [11,22,33]
r = isinstance(s,list)
print(r) True

  filter() :  函数,可迭代的对象,给定一个对象的序列或函数,每个序列元素都通过过滤器筛选,保留函数返回值为True的对象。

 def f2(a):
if a > 22:
return True
li = [11,22,33,44,55]
ret = filter(f2,li)
print(list(ret)) #lambda案例:
f1 = lambda a: a > 30 #不成立即为False
ret = f1(10)
print(ret) li = [11,22,33,44,55]
result = filter(lambda a:a>33, li)
print(list(result)) [33, 44, 55]
False
[44, 55]

  map():  与filter相似,map()将函数调用映射到每一个序列的元素上,并返回一个包含所有返回值的列表。可实现for 循环

 li = [11,22,33,44,55]
def f2(a):
return a + 100 #循环每一个元素并加100
result1 = map(f2,li)
print(list(result1)) #返回列表必须指定list result2 = map(lambda a:a - 10, li)#lambda用法
print(list(result2)) [111, 122, 133, 144, 155]
[1, 12, 23, 34, 45]

  (二)装饰器:

      可称为在函数调用上的一种修饰,当声明一个函数或者方法时,才会应用额外的调用。

    装饰器的格式:

      @ + 函数名

      def 函数名(参数):

      @开头,装饰器的函数名和参数(可选参数),接着装饰器声明的是被修饰的函数和装饰函数的可选参数

 def outer(func):
def inner():
print('log')
return func()
return inner() @outer
def f1():
print("F1") @outer
def f2():
print("F2") @outer
def f100():
print("F100") log
F1
log
F2
log
F100

一个实际例子:

 from time import ctime,sleep  #调用模块

 def time_func(func):          #定义时间函数装饰器并定义内容函数tm_func
def tm_func():
print('[%s] called' % (ctime())) #输出当前时间戳
return (func)
return tm_func()
@time_func #应用空函数体定义foo()函数并用time_func修饰
def foo():
pass
foo()
sleep(2) #第一个函数执行后等待2s后执行第二个函数
@time_func #定义第二个函数修饰
def foo1():
print('调用成功') #输出结果
foo1() [Tue May 31 11:59:37 2016] called
[Tue May 31 11:59:39 2016] called
调用成功

后续内容下节补充。。。。谢谢

python之函数的更多相关文章

  1. python的函数

    函数一词起源于数学,但是在编程中的函数和数学中的有很大不同.编程中的函数式组织好的,可重复使用的,用于实现单一功能或相关联功能的代码块. 我们在学习过程中已经使用过一些python内建的函数,如pri ...

  2. python strip()函数 介绍

    python strip()函数 介绍,需要的朋友可以参考一下   函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 rm删除 ...

  3. python split()函数

    Python split()函数 函数原型: split([char][, num])默认用空格分割,参数char为分割字符,num为分割次数,即分割成(num+1)个字符串 1.按某一个字符分割. ...

  4. Python数学函数

    1.Python数学函数 1.abs(x):取绝对值,内建函数 2.math.ceil(x):向上取整,在math模块中 3.cmp(x,y):如果 x < y ,返回-1:如果 x == y ...

  5. Python回调函数用法实例详解

    本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...

  6. Python之函数与变量

    本节内容 函数介绍及其作用 函数的定义与调用 函数的参数说明 全局变量与局部变量 值传递和引用传递 一.函数的介绍及其作用 编程语言中的函数与数学中的函数是有区别的:数学中的函数有参数(输入),就会有 ...

  7. Python基础-函数篇

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数  函数与函数式编程 1.面向对象: 华山派-- ...

  8. 【C++实现python字符串函数库】strip、lstrip、rstrip方法

    [C++实现python字符串函数库]strip.lstrip.rstrip方法 这三个方法用于删除字符串首尾处指定的字符,默认删除空白符(包括'\n', '\r', '\t', ' '). s.st ...

  9. 【C++实现python字符串函数库】二:字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  10. 【C++实现python字符串函数库】一:分割函数:split、rsplit

    [C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...

随机推荐

  1. caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片

    经过前面两篇博文的学习,我们已经训练好了一个caffemodel模型,并生成了一个deploy.prototxt文件,现在我们就利用这两个文件来对一个新的图片进行分类预测. 我们从mnist数据集的t ...

  2. 转 android 从底部弹出一个popuwindow,渐入渐出效果。我这里是用在购物车需要选择购买选项的操作。

    最近要改客户端,需要实现一个从底部弹出的popuwindow,像我这种渣渣android技术,能整出popuwindow但是整不出动画,百度之,记录一下. 从下面这个地址转的 http://blog. ...

  3. node爬虫之gbk网页中文乱码解决方案

    之前在用 node 做爬虫时碰到的中文乱码问题一直没有解决,今天整理下备忘.(PS:网上一些解决方案都已经不行了) 中文乱码具体是指用 node 请求 gbk 编码的网页,无法正确获取网页中的中文(需 ...

  4. 纯CSS实现图片水平垂直居中于DIV(图片未知宽高)

    <div class="demo"><a href="#"><img src="http://nec.netease.c ...

  5. C#稳固基础:传统遍历与迭代器

    Hello,Coders.我们除了天天的码 if…else…之外,还会不断的码出foreach.我今天要说的是:传统遍历需实现的接口及我们还有一种更简洁优雅的方式实现多种迭代器. 传统遍历 传统的遍历 ...

  6. 最为简易的yii 教程(一)

    了解目录的框架结构 framework主要有 base          框架核心组件 caching        缓存组件 db                数据库组件 gii          ...

  7. .dwg(sw)-exb

    尺寸风格:除了标准外合并,合并好后删除. 文本风格:除了标准外合并,合并好后删除.

  8. Cocos2d-X3.0 刨根问底(四)----- 内存管理源码分析

    本系列文章发表以来得到了很多朋友的关注,小鱼在这里谢谢大家对我的支持,我会继续努力的,最近更新慢了一点,因为我老婆流产了抽了很多时间来照顾她希望大家谅解,并在此预祝我老婆早日康复. 上一篇,我们完整的 ...

  9. 【BZOJ-2668】交换棋子 最小费用最大流

    2668: [cqoi2012]交换棋子 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1055  Solved: 388[Submit][Status ...

  10. jquery生成元素注册事件无效,及事件委托的使用

    在页面加载完成之后,我们在页面操作用js生成html代码到页面,动态的添加元素带页面上 但是,这里可能很多人就必须碰到的一个问题就出现了,当你之后动态添加了元素到页面上,发现这个元素的绑定事件无效,如 ...