1.python的自定义函数
(1)python的函数定义
定义不含参数的python函数的基本语法:
def 函数名():
函数中封装的代码
……
注意:
- 函数名称应该见名知意。
- 函数名称的命名应该符合标识符命名规则。
- 函数的定义缩进非常严格。
(2)python的函数参数及返回值
python中的形参和实参与其他高级语言类似。但是其函数没有类型,如果函数有返回值,直接使用return
语句返回即可。return
后面的语句不会再执行了。
(3)python的函数调用
可以通过函数名调用,函数名(参数列表)
,与其他高级语言类似。没有参数的函数,直接缺省即可。
(4)python的函数文档注释
- 在开发中,如果希望给函数添加注释,应该在
定义函数
的下方,使用连续的三对引号
,对定义的函数进行说明。 - 在
函数调用
位置,使用快捷键CTRL + Q
可以查看函数的说明信息。 - 建议在定义一个函数时,与其他代码使用两个空行隔开。因为函数是一个功能模块。
(5)python的函数嵌套使用
与其他高级语言类似。
2.python的模块中的函数
(1)python的模块概述
模块是 Python 程序架构的一个核心概念
模块
类似于java中的包
,要想使用这个包中的工具,就需要import
(导入) 这个模块
。- 每一个以扩展名
py
结尾的Python
源代码文件都是一个模块
。 - 在模块中定义的
全局变量
、函数
都是模块能够提供给外界直接使用的工具。
(2)使用python模块中的函数
- 导入模块
- 使用
模块名.变量
或者模块名.函数
的方式,使用这个模块中定义的变量或者函数。
(3)自定义模块的定义和使用
- 自己写的
.py
文件就是一个模块。 - 使用自定义的模块只要
import
该模块即可。 - 模块(源文件)的命名应该符合标识符规则。
- 如果模块命名没有符合标识符规则,则会导入失败。
(4)使用python模块的好处
- 方便代码复用。(类似于java中的包。)
3.python中的函数参数与返回值
(1)python中函数参数与返回类型组合
- 无参数,无返回值
- 无参数,有返回值
- 有参数,无返回值
- 有参数,有返回值
(2)python函数内部修改全局变量
-
如果全局变量是一个可变类型(引用可变),可以通过全局变量自身的方法修改全局变量的内容(外部的变量发生了改变。),此时全局变量的引用(存储地址)没有发生变化。
-
如果全局变量是一个不可变类型(引用不可变),可以通过全局变量自身的方法修改全局变量的内容,此时创建了一个新的全局变量(引用)。
-
无论实参是可变类型还是不可变类型,只要是赋值语句,python默认修改的只是局部变量,不会影响外部变量(全局变量)。
全局变量可以在函数中被修改(使用赋值语句),前提是需要对该变量作global声明。假如这个全局变量是不可变类型的变量,那么相当于重新创建了一个全局变量替代了之前的全局变量。如果全局变量是可变数据类型,相当于更改了全局变量的引用(指向的内存的位置)。
4.函数参数缺省
(1)函数参数缺省概述
定义函数时,可以给某个参数指定一个默认值
,具有默认值的参数就叫做缺省参数
。调用函数时,如果没有传入缺省参数
,则在函数内部使用定义函数时指定的参数默认值
。
(2)函数参数缺省示例
str_list.sort() # 列表的升序排列省略了reverse=False
str_list.sort(reverse=True) # 列表的降序排列,升序比降序常用,故升序参数缺省
(3)函数参数缺省注意事项
- 必须保证带有默认值的缺省参数在参数列表末尾
- 调用函数时,如果有多个缺省参数,需要指定参数名,这样解释器才能够知道参数的对应关系!
5.多值参数
有时可能需要一个函数能够处理的参数个数是不确定的,这个时候,就可以使用多值参数
。
-
python
中有两种多值参数:- 参数名前增加 一个
*
可以接收元组
- 参数名前增加 两个
*
可以接收字典
- 参数名前增加 一个
-
一般在给多值参数命名时,习惯使用以下两个名字
*args
—— 存放元组
参数,前面有一个*
**kwargs
—— 存放字典
参数,前面有两个*
-
其中
args
是arguments
的缩写,有变量的含义,kw
是keyword
的缩写,kwargs
可以记忆键值对参数
6.元组和字典的拆包
- 在调用带有多值参数的函数时,如果希望:
- 将一个
元组变量
,直接传递给args
- 将一个
字典变量
,直接传递给kwargs
- 将一个
- 就可以使用
拆包
,简化参数的传递,拆包
的方式是:- 在
元组变量前
,增加一个*
- 在
字典变量前
,增加两个*
- 在
7.python中解释源程序的步骤
(1)python中解释程序的步骤
- 编译源代码,生成字节码文件。
- 对字节码文件进行处理,生成机器码文件,供cpu执行。
(2)生成的字节码文件的位置及名称
python生成的字节码文件在自动生成的__pycache__目录下。其名称为:文件名.cpython-35.pyc
。
.cpython-35
代表解释器的版本号。.pyc
代表编译后的字节码文件,c
是compile
的缩写。- 如果程序曾经运行过,并且没有进行修改,那么再次运行该程序时python解释器会直接加载原来生成的
.pyc
文件。 - 如果程序进行了修改,那么python解释器会先再次生成新的
.pyc
文件,然后加载该文件。