A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

函数的作用
编程大师Martin Fowler先生曾经说过:“代码有很多种味道,重复是最坏的一种!”,所以,在Python中为了避免重复出现代码,我们可以讲一个函数功能封装到一个函数的功能模块中,有需要使用这个函数的地方我们只需要调用这个函数即可。

函数的定义
在Python中用def定义函数,在函数执行完后可以通过return关键字来返回一个值,所返回出来的值在后续的程序中可以被使用。
def 函数名():
        函数体
        renturn 要返回的值
函数名()                #调用函数
函数的参数
1、函数的参数可以有默认值,在调用函数时如果没有传入对应参数的值时系统将使用该参数的默认值。
def add(a=0,b=2,c=3):
2、函数还可以使用可变参数。
def add(*args):                #在参数名前的*表示args是一个可变参数,即在调用add函数时可以传入0个或多个参数
3、函数还可以不传入参数,即在函数名后的括号里不写任何东西。
def add():
用模块管理函数
在Python中每个文件就代表了一个模块,在不同的模块中可以有同名的函数,在使用函数的时候我们通过import关键字导入指定的模块就可以区分到底要使用的是哪个模块中的函数,如下所示。
直接导入函数:
import module1 as foo                #module1为函数所在的文件名
导入模块:

import nodele1

需要说明,如果我们导入的模块除了定义函数之外还有其他的可以执行的代码时,Python解释器在导入这个模块时就会执行代码,但是事实上我们并不想这样,因此如果我们在模块中编写了其他的执行代码,最好时将这些执行代码放入如下所示的条件中,这样只有在我们直接运行该模块时 if 条件下的这些代码才会被执行,因为只有在直接执行该模块时名字才是"main"。
__name__是Python中一个隐含的变量,它代表了模块的名字,只有被Python解释器直接执行的模块的名字才是_main_。

if __name__ == '__main__':
        print('hello world')

关于全局变量和局部变量
一般我们在函数中定义一个局部变量时,只能作用于函数的局部作用域,并不能作用于全局作用域。
我们可以使用global关键字来指示函数里的局部变量来源于全局作用域,如果全局作用域中没有这个变量,那么下面一行代码就会定义这个变量并将其作用域全局作用域。这样函数里的变量就可以同时作用与全局作用域了。如下所示,如果函数里的变量a发生变化时,函数外的值也会随之变化。

a = 200
def foo():
        global a

同理,如果我们希望函数内部的函数能够修改嵌套作用域中的变量,可以使用nonlocal关键字来指示变量作用域嵌套作用域。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马