python函数

参数:

形参:只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参的作用域只在函数内部。

实参:有确定值得参数,所有的数据类型都可以被当做参数传给函数。

局部变量:作用域只在当前函数内部,外部变量默认不能被函数内部修改,只能引用。如果想在函数里修改全局变量,必须global,但是强烈建议不要使用,会增加代码调试难度。

函数内部是可以修改列表,字典,集合,实例

位置参数:按顺序

默认参数:必须放在位置参数后面

关键参数:放在位置参数后面,可以指定值

非固定参数:*args = () 以位置参数的形式传入 **kwargs = {} 以关键参数形式传入

参数定义
形参 只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参的作用域只在函数内部。
实参 有确定值得参数,所有的数据类型都可以被当做参数传给函数。
局部变量 作用域只在当前函数内部,外部变量默认不能被函数内部修改,只能引用。如果想在函数里修改全局变量,必须global,但是强烈建议不要使用,会增加代码调试难度。
位置参数 按顺序
默认参数 必须放在位置参数后面
关键参数 放在位置参数后面,可以指定值
非固定参数 *args = () 以位置参数的形式传入 **kwargs = {} 以关键参数形式传入
def stu_register(name,age,course,country='CN',hobbie='girl',*args,**kwargs):
    print("----注册学生信息-----")
    print("姓名",name)
    print('age',age)
    print('国籍',country)
    print('课程'course)
    print('爱好',hobbie)
    print(args,kwargs)
stu_register('孙悟空',21,'CN','linux','北京','IT,'MAN',id='stu1111')

递归

特性:

    1 必须有一个明确的结束条件

  2 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

  3 递归效率不高,递归层次过多会导致栈溢出(栈的长度是2M)

  4 return 的作用,代表函数的结束,返回函数结果

小练习:二分查找

data = range(4200000000)

def binary_search(find_str, data_set, count):
    mid = int(len(data_set)/2)
    if mid == 0:
        if data_set[mid] == find_str:
            print("find it", find_str, count)
        else:
            print("can't find", count)
        return
    if data_set[mid] == find_str:
        print("find it", find_str, count)
    elif data_set[mid] > find_str:
        binary_search(find_str, data_set[:mid], count+1)
    elif data_set[mid] < find_str:
        binary_search(find_str, data_set[mid+1:], count+1)
binary_search(7, data, 1)

匿名函数

匿名函数最复杂的运算是三元运算

高阶函数

1、把一个函数的内存地址当做参数传给另一个函数

2、一个函数把另一个函数当做返回值返回

posted @ 2017-02-09 16:04  wescker  阅读(181)  评论(0)    收藏  举报