引入
如果在你的程序中有一段代码需要频繁使用,怎么办?最简单粗暴的办法就是,在程序中重复的编写这段代码。
如果这段代码的某些功能需要更改,怎么办?最简单粗暴的办法就是,找到所有用到这段代码的地方逐一进行修改。
您觉得上述的解决办法如何?— 您要是敢这么写,分分钟被开除~
解决代码重复
上述解决问题的方式最大的问题就是代码重复,用到一次就重复一次,无疑在现实生活中也可以找到例子,比如每次用Python写程序的时候都重复装一遍解释器和pycharm吗?显然不是,只安装一次,写代码的时候直接拿来用就OK了。这里的解释器或者pycharm就是上述例子中被频繁使用的代码,可以事先准备好,用的时候直接拿来用。
在程序中具备某种功能的工具指的就是一个函数,事先准备好就是函数的定义,使用就是函数的调用。
函数定义
函数的使用必须遵循先定义再使用的原则。
函数的定义相当于把一段代码保存,然后将这段代码的内存地址赋值给函数名,函数名就是对这段代码的引用,函数的定义和变量的定义是类似的。没有定义函数直接使用就相当于在使用一个不存在的变量。
定义函数基本语法如下:
def 函数名(参数1, 参数2....):
'''
函数描述
'''
函数体代码
return 值
'''
def - 定义函数的关键字
函数名 - 指向函数体代码内存地址,对函数体代码进行引用,函数名应该见名知意
括号 - 括号内定义参数,参数可有可无
冒号 - 括号后要加冒号,下一行缩进后书写函数体代码
函数描述 - 描述函数的具体功能,不是必要的,但是建议加上
函数体 - 实现功能的具体代码
return 值 - 函数的返回值,非必要
'''
函数的定义有三种方式,如果把函数比喻为一个工厂,函数的参数就是送进工厂的原材料,但是有些工厂是不需要外部提供原材料。
第一种:无参函数
def func():
print('我不需要外界为我提供参数')
第二种:有参函数
def func(a, b):
print('需要外界传参给我')
print(a, b)
第三种,空函数
# 函数体代码为pass为空函数,可以用来在构思项目的时候用空函数代替,当代码构思完成可以将pass替换掉
def func():
pass
函数调用与返回值
函数的使用分为定义和调用阶段,在定义函数时只检测python语法,不执行函数体代码,函数名加括号就是调用函数,只有调用函数才会执行函数体代码。
# 定义函数阶段
def func():
print('func')
func1()
def func1():
print('func1')
# 调用函数阶段
func()
# 执行结果
func
func1
在定义函数阶段,没有语法错误,在调用阶段,两个函数的代码都在内存中,