在前面的学习中,其实咱们已经接触到了一些函数,好比:
type() 函数能返回数据的类型python
len() 函数能返回数据的长度函数
print() 函数能在控制台将内容输出出来学习
range() 函数能生成整数数列spa
这些函数都是python的内置函数,咱们能够直接调用,后面咱们将会接触到更多的python的内置函数。经过观察,咱们不难发现,函数有如下两个特色:blog
1、python中函数的定义
除了python 内置函数外,咱们还能够根据需求自定义函数,函数的定义有如下规则:内存
- 使用关键字def 来向python发出信号,标识你要定义一个函数;
- def 后跟具体的函数名称,注意,自定义函数的名称最好不要跟内置函数名称发生冲突;
- 函数名称后跟一对圆括号,圆括号内存放调用该函数时须要传入的参数;
- 在函数体内,咱们可使用 一对 三引号 来定义文档字符串,这就至关因而给函数加了一段注释,说明该函数的具体做用;
- 函数通常以return 结束,用来返回值方便调用,若是没有return语句,则默认返回None;
- 函数遇到return就会终止,即return后面的代码将不会被执行。
一、函数的语法:作用域

举一个比较简单的例子:文档

二、函数的调用

2、函数中的参数
一、形式参数和实际参数
- 形式参数:函数定义时候的参数
- 实际参数:函数调用时候的参数
二、函数的位置参数
- 位置参数:形式参数和实际参数要一一按照顺序对应,很少很多,位置同样。

关于函数的参数传递,咱们须要注意以下几点:字符串
- 调用函数传递的参数个数必定要和函数定义的参数个数一致,不然会报错;
- 注意函数体里面参数的类型,要输入正确的参数类型,不然会报错。
三、函数的默认参数
- 在函数定义的时候,给形式参数一个默认值,即为默认参数;
- 在函数定义时,若是有默认值,在调用时若是传入了实际参数,那么默认参数不会生效,若是没有传入实际参数,默认参数会生效。

四、位置参数与默认参数
一个函数有的时候不只有位置参数,还会有默认参数,若是这两种参数同时存在的时候,就必定要把默认参数放在位置参数的后面,不然会报错!!变量

五、关键字参数
- 做用:是相对于位置参数讲的,能够提升函数调用时候的可读性,更加容易理解实际参数的意义;
- 关键字的名字===形式参数;
- 关键字参数区别位置参数,能够不按照顺序进行调用,能够交换顺序;
- 关键字参数也要放到位置参数的后面。

六、不定长参数
不定长参数包括位置不定长参数和关键字不定长参数:
- *args:位置不定长参数;
- *kwargs:关键字不定长参数
(1)位置不定长参数:*args
- *args:在函数内部的表现形式:names是一个元组
- *args:能够接收从函数调用的时候多余的位置参数
- *args:加在其余位置参数的后面

(2)关键字不定长参数:*kwargs
上面咱们讲了不定长位置参数,这一节咱们来掌握下带有关键字的不定长参数。它与普通的不定长参数的区别就是带有关键字,且必须指定关键字,不然识别不了。

3、局部变量和全局变量
一、定义
- 局部变量是在函数内部声明的变量,只能在该函数调用它,若是试图在超出范围的地方调用,程序就会报错;
- 全局变量是在整个整个py文件中定义的变量,全局范围内均可以访问。
二、局部变量和全局变量须要注意的几个点
- 全局做用域能获取局部变量吗??? 不能!!!
- 全局做用域能修改局部变量吗??不能!!!
- 局部做用域能获取全局变量吗??能!!!
- 局部变量能修改全局变量吗??不能!!!
三、局部做用域修改全局变量的方法

返回的结果是:27