您的位置:首页 > 编程语言 > Python开发

python之函数

2016-05-31 12:04 387 查看

本节主要内容:

      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
调用成功

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

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: