python 之 初识函数

膜拜大神

有很多大神写了介绍函数是什么的好博文,我自问无法超越,但是引用还是可以的,真的很好,适合反复阅读

我在这里获得过很多的帮助,所以膜拜他们

路飞的美女讲师博客

银角大王博客

感觉自己没有写下去的必要了…..

 

函数的返回值return

return的作用:

1.函数执行完毕后,可以给调用者返回数据

2.一旦遇到return,结束当前函数的运行

不写return是没有返回值的,或者,return后面没有内容,也是返回None。

return返回一个值

return返回一个值的情况,只需在return后面写上要返回的内容即可。

return返回多个值

可以返回任意多个、任意数据类型的值

返回的多个值会被组织成元组被返回,也可以用多个值来接收

函数的参数

默认参数

为什么要有默认参数:将变化最小的值设置成默认参数,在进行传参时,如果参数不变,就不用传入

节省了输入工作量,不用每一个都输一遍一样的值

默认参数陷进:默认参数一定要指向不可变类型

形参

形式参数,没有具体的值,只在调用的时候,才有确定的值

实参

实际参数,有实际的值

关键参数

必须放在位置参数后面

两种传参方式(按位置传参,按关键字传参)

位置参数必须传值

非固定参数

*args:使用方法,打包成列表,并加            *[]。注意:会截胡所有位置参数

**kwargs:接受未定义的关键字参数,   **{}

总结:

1.定义:def 关键词开头,空格之后接函数名称和圆括号()。
2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。
    参数可以定义多个,也可以不定义。
    参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、
*args、默认参数、**
kwargs顺序定义。
    如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序
3.注释:函数的第一行语句应该添加注释。
4.函数体:函数内容以冒号起始,并且缩进。
5.返回值:return [表达式] 结束函数。不带表达式的return相当于返回 None

def 函数名(参数1,参数2,*args,默认参数,**kwargs):
        """注释:函数功能和参数说明"""
        函数体
        ……
        return 返回值

调用函数的规则

1.函数名()
    函数名后面+圆括号就是函数的调用。
2.参数:
    圆括号用来接收参数。
    若传入多个参数:
        应按先位置传值,再按关键字传值
        具体的传入顺序应按照函数定义的参数情况而定
3.返回值
    如果函数有返回值,还应该定义“变量”接收返回值
    如果返回值有多个,也可以用多个变量来接收,变量数应和返回值数目一致

无返回值的情况:
函数名()

有返回值的情况:
变量 
= 函数名() 多个变量接收多返回值: 变量1,变量2,... = 函数名()

 

函数变量与Global

函数变量分为  局部变量  和  全局变量

定义在函数外部的一级变量,叫做全局变量

局部变量只能在局部生效(即在函数内部定义的变量,只能在函数内部生效)

在函数内部可以引用全局变量

 

在函数中就修改全局变量

在函数中使用Global 修改全局变量

name = 'black girl'


def change_name():
    global name
    name = '黑姑娘'
    print('', name, '里面', id(name))


change_name()
print(name, id(name))

在函数内部可以修改全局列表等可变集合,只能是可变集合

name = 'black girl'
l = [1, 2, 3]

def change_name():
    global name
    name = '黑姑娘'
    l[1] = 5
    del l[2]
    print('', name, '里面', id(name))


change_name()
print(name, id(name))
print(l)

嵌套函数

定义:函数内部,再次定义了一个函数,无法直接在全局被调用

只有在外层函数中被调用了,才会执行

age = 19


def func1():
    global age

    def func2():
        print(age)
    func2()
    age = 72


func1()
print(age)

想一下,执行结果是什么?

 

函数作用域

定义:作用域,就是变量的作用范围,函数中的变量的作用域就是函数内部

定义完成后,作用域就生成,作用域链向上查找

无论在任何地方调用,都会回到定义它的作用域内

全局作用域:包含内置名称空间、全局名称空间,在整个文件的任意位置都能被引用、全局有效

局部作用域:局部名称空间,只能在局部范围生效

匿名函数

定义:匿名函数,是指,定义一个函数,不用函数名,以lambda 开头

只能定义简单的函数,最复杂的就是三元函数

它的主要作用是和其它函数配合使用,如:map(生成一个map对象,通过函数对参数内的每个值进行同样的操作)

list1 = [1, 2, 3]
list2 = list(map(lambda x: x*6, list1))
print(list2)

 

高阶函数

定义:把一个函数以参数的形式,传递给另一个函数,就是高阶函数

满足以下任意一个条件,即是高阶函数

接受一个或多个函数作为输入

return另外一个函数

age = 19


def func():
    print(age)


def func1(func):
    global age
    func()
    age = 72


func1(func)
print(age)

 

def fun(x, y):
    return x+y
posted @ 2018-05-24 22:16  游小刀  阅读(98)  评论(0编辑  收藏  举报
levels of contents