函数介绍
函数是组织好的,可以重复使用的,用来实现特定功能的代码块。
这里面分为自定义函数以及内置函数,内置函数就是Python当中已经写好的函数,不需要我们再次动手去写的,例如之前接触到的print() 、input() 、int() 、str()等等。自定义就是需要我们自行写的函数。
函数的定义
函数的定义:
def 函数名(传入参数可省略):
函数体
return 返回值(可省略)
函数的调用:
函数名(传入参数 如果有)
给出样例:(写一个自动帮忙输出hello world的函数,并使用)
def say_hello_world() : # 函数的确立
print("hello world")
say_hello_world() # 函数的执行
输出结果:
可以看出的是:函数需要先定义后使用。也就是说函数的定义需要在上面,使用放在下面。
函数的参数
这边直接给一个样例进行分析:给出的是自动帮忙计算加法的样例:
def add(data1,data2) : # 函数的确立
print(f"{data1}+{data2}={data1+data2}")
add(1,2) # 函数的执行
输出结果:
在函数的定义中,我们可以看到data1和data2属于形参,表示生存周期就在函数体内,出了函数体,它就不存在了。而又可以看出传入参数的时候,我们传入的是多个参数,就需要使用逗号隔开。
而外部传入的1,2或者说我们传入一个变量,属于实际参数,生存周期就是整个程序运行的时间,值得注意的是,传入参数的时候,按顺序传入数据,使用逗号,进行区分多个变量。
函数的返回值
函数返回值的定义
直接写一段代码进行分析,实际上也就是上述加法带有return的样例:
def add(data1,data2) : # 函数的确立
r = data1+data2
return r
sum = add(1,2) # 函数的执行
print(f"1+2={sum}")
输出结果:
返回值实际上就是函数完成的时候,返回到主程序当中的数据。
或者说return返回值就代表着函数的结束使用,在函数return的后面,如果再次接上相关代码,是不实现的。
None类型
实际上就算函数没有使用return 返回值,他也会有返回值,他返回的实际上是None这个字面量,代表着这个函数没有返回值
样例:
def aa() :
print("函数执行了")
result=aa()
print(result," ",type(result))
输出结果:
或者我们也可以手动的返回None,在函数的末尾写上return None,也相当于没有返回值的情况。
而对于None的应用场景:
- 函数没有返回值时候。
- 用在if判断的时候,实际上None放到if的判断语句当中,就等效于False。
例子:
def check(num) :
if(num>=18) :
return 1
else:
return None
if not check(2) :
print("您未成年")
输出结果:
值得注意的是not的作用相当于C++当中的!。
- None可以用于声明无内容的变量。
比如:name=None
函数的嵌套调用
实际上这个操作十分的简单,哪里需要使用就哪里进行书写:
def fun1() :
print("---2---")
def fun2() :
print("---1---")
fun1()
print("---3---")
fun2()
输出的结果:
但这里的前提是,在使用函数之前,就需要先进行定义。
变量的作用域
局部变量:
作用在函数体内部,在函数外部无法进行使用的变量。
实际上就是在函数体内部定义的变量。
样例:
num1=1
def fun1() :
num1=2
print(f"这里使局部变量num1,num1的值为:{num1}")
fun1()
print(f"这里使全局变量num1,num1的值为:{num1}")
输出结果:
全局变量:
作用在函数内部和外部都可以使用。
实际上就是在函数体外部定义的变量。
我们可以使用global关键字进行声明,使局部变量变成全局变量。
样例:
num1=1
def fun1() :
global num1
num1=2
print(f"这里使局部变量num1,num1的值为:{num1}")
fun1()
print(f"这里使全局变量num1,num1的值为:{num1}")
输出结果:
实际上global num1就相当于对于num1的全局声明,声明其是一个全局变量,方便去使用。