定义函数
python 中定义一个函数需要以 def 开头
def functions_name(): #定义一个函数 pass #占位符,为了防止定义空函数时 python 报错
def:def 作为定义函数的关键词
functions_name:这是函数名,需谨记的是,此函数名是可以赋值给变量的,某种意义上来说,函数名能够任意更改,但真正调用函数时需要在函数名后面加上 "()"
value = functions_name #将函数名赋值给变量 value value() #调用函数
模块和包
模块:任意以 .py 结尾的文件都能够作为模块导入另外的 python 程序
包:简单来说,包就是一个普通的目录下面存放了一个名为 __init__.py 的文件,此文件内容可以为空,但文件必须存在
注:自建包或自建模块都必须存放在 python 安装主目录下的 ./Lib/ 目录或者 ./Lib/site-packages/ 目录下,使用 vscode 时会对此有严格要求,pycharm 则没有
注:函数,模块,包,都是为了简化程序而存在的,一个程序会因为代码过多而导致难以阅读,函数能够将代码分块便于理解,但中型甚至大型项目则必须要用到模块和包将函数也进行分块,此三者的关系为多个函数包含在一个模块中,多个模块包含在一个包里
函数的参数
形参和实参:形参大多在定义函数时使用,无实际意义,实参多在调用函数时使用,向函数中传递参数
函数的参数大致分为五种:位置参数,默认参数,可变参数,关键字参数,命名关键字参数
位置参数:
def functions_name(x,y): pass functions_name(1,2) #向此函数传入两个参数,位置分别对应 x=1,y=2
注:def 定义函数后需空两行,此为代码编写规范(也可不按规范,不影响)
默认参数:
def functions_name(x,y=2): pass functions_name(1) #参数 y 默认设置为 2,所以可以仅传入一个参数 x 的值 functions_name(1,3) #若传入两个值,则覆盖默认值,y=3
可变参数:
def functions_name(*value): #*value 表示可变参数 pass a_list = [1,3,5,7,9] functions_name(*a_list) #已有列表的情况下需要在列表名前也加上 "*",表示将列表中的元素作为可变参数传递
functions_name(1,3,5,7,9) #向函数传参
关键字参数:
def functions_name(name,age,**parameter): #**parameter 表示定义关键字参数 pass functions_name("name","age") #关键字参数可为 0 functions_name("name","age","city","country") #可传入任意数量的关键字参数
命名关键字参数:
def functions_name(name,age,*,city,country): #"*" 表示分隔符 pass functions_name("name","age",city="changsha",country="China") #与位置参数不同的是命名关键字参数传参必须传入参数名,如 city="changsha",否则会报错,也可使用默认参数