一、def 创建函数
- #----------------------------------------------------------------------
- def hello(name):
- """test"""
- return 'hello, ' + name + '!'
- print hello('wisp')
- 结果为:
- hello, wisp!
二、关键字参数
传递参数的时候指定形参,可以不分顺序地向函数传入参数,在创建函数的时候使用关键字也可以成为该参数的默认值。
- >>> def hello(greeting,name):
- print '%s,%s!' % (greeting,name)
- >>> hello('hello','wisp')
- hello,wisp!
- >>> hello(greeting='hello',name='wisp')
- hello,wisp!
使用关键字提供默认值:
- >>> def hello_new(greeting='hello',name='wisp'):
- print '%s,%s!' % (greeting,name)
- >>> hello_new()
- hello,wisp!
三、任意长度的参数
在形参前面加"*"号,这样所有的参数会放在同一个元组中,然后使用,如果不提供任何参数,形参就是一个空元组
- >>> def print_params(*params):
- print params
- >>> print_params('Testing')
- ('Testing',)
- >>> print_params(1,2,3)
- (1, 2, 3)
** 号收集关键字
- >>> def print_params_3(**params):
- print params
- >>> print_params_3(x=1,y=2,z=3)
- {'y': 2, 'x': 1, 'z': 3}
四、反转过程
把元组或者字典分解成参数传给函数
* 分解元组
** 分组字典
- >>> def add(x,y):
- return x + y
- >>> params = (1,2)
- >>> add(*params)
- 3
- >>> def hello_new(greeting='hello',name='wisp'):
- print '%s,%s!' % (greeting,name)
- >>> params = {'name':'wisp','greeting':'hello'}
- >>> hello_new(**params)
- hello,wisp!
五、作用域
每个函数调用都会创建一个新的作用域,函数内的变量称为局部变量,函数内部可以用globals()[] 调用全局变量,函数内部也可以用global 来定义全局变量
- >>> x = 1
- >>> def change_global():
- global x
- x = x + 1
- >>> change_global()
- >>> x
- 2
6、递归
递归,就是引用自身。
当函数直接返回值时有基本实例
递归实例,包括一个或者多个问题最小部分的递归调用
- def factorial(n):
- """by wisp"""
- if n == 1:
- return 1
- else:
- return n * factorial(n-1)
- print factorial(10)
- 3628800
二元查找算法:
- def search(sequence, number, lower, upper):
- """by wisp"""
- if lower == upper:
- assert number == sequence[upper]
- return upper
- else:
- middle = (lower + upper) // 2
- if number > sequence[middle]:
- return search(sequence, number, middle+1, upper)
- else:
- return search(sequence, number, lower, middle)
- print search(range(1,100),37)
本文转自运维笔记博客51CTO博客,原文链接http://blog.51cto.com/lihuipeng/860224如需转载请自行联系原作者
lihuipeng