码迷,mamicode.com
首页 > 其他好文 > 详细

11th

时间:2015-05-08 21:46:33      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

---恢复内容开始---

11.1.1函数和过程

函数可以不带参数,最后返回一个值,

过程是简单,特殊,没有返回值的函数。

返回的对象的数目 python实际返回的对象
0   .None
1 object
>1 tuple

11.2.2关键字参数

你可以按顺序输入对应的参数也可以显式的给定参数

比如:def foo(x)       foo(x = 2)

11.2.4参数组

你可以向函数传递没有显式定义的参数,比如元组和字典

 func(positional_args,keyword_args,*tuple_grp_nonkw_args, **dict_grp_kw_args)

 1 from operator import add, sub
 2 from random import randint, choice
 3 
 4 ops = {+:add, -:sub}
 5 MAXTRIES = 2
 6 def doprob():
 7     op = choice(+-)
 8     nums = [randint(1,10) for i in range(2)]
 9     nums.sort(reverse = True)
10     ans = ops[op](*nums)
11     pr = %d %s %d=%(nums[0], op, nums[1])
12     oops = 0
13     while True:
14         try:
15             if int(raw_input(pr)) == ans:
16                 print "correct"
17                 break
18             if oops == MAXTRIES:
19                 print answer\n %s%d%(pr,ans)
20             else:
21                 printincorrect... try again
22                 oops += 1
23         except (KeyboardInterrupt, 24                 EOFError, ValueError):
25             print invalid input...try again
26 
27 def main():
28     while True:
29         doprob()
30         try:
31             opt = raw_input(Again? [y]).lower()
32             if opt and opt[0] == n:
33                 break
34         except(KeyboardInterrupt, EOFError):
35             berak
36 if __name__ == __main__:
37     main()

这是一个让人解算术题的程序

 11.3.5内部/内嵌函数

在函数的内部定义函数时,这个函数的作用域是它的外部函数。

如果内部函数的定义里包含了对在外部函数里定义的对象的引用(或者说这个对象在外部函数之外),

这时内部函数将是一个闭包(closure)

11.3.6函数装饰器

装饰器看起来是这样的:

@decorator()

def func2Bdecorated(func_opt_args):

效果相当于

def func2Bdecorated(func_opt_args):

func2Bdecorated = decorator(func2Bdecorated)

之前的例子中装饰器没有参数,现在给出有参数的例子:

@deco1(deco_arg)

@deco2

def func():pass

相当于
func = deco1(deco_arg) (deco2(func))

通过一个例子更好的理解装饰器:

from time import ctime, sleep

def tsfunc(func):
    def wrappedFunc():
        print [%s] %s() called % (ctime(), func.__name__)
        return func()
    return wrappedFunc

@tsfunc
def foo():
    pass

foo()
sleep(4)

for i in range(2):
    sleep(1)
    foo()

 

11th

标签:

原文地址:http://www.cnblogs.com/autoria/p/4488790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!