函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
def 函数名():
函数内编写代码
...
...
函数名()
例如:
# 定义名字叫info的函数
def info():
print("第一行")
print("第二行")
print("第n行...")
info()
一个简单的例子:
def hello(name):
print(f"hello {name}")
hello(input("请输入您的名字:"))
定义了一个函数hello(),给里面传入了一个参数name;
在调用hello()时,给里面写入“input("请输入您的名字:")”,相当于把“input("请输入您的名字:") ”传给了参数name;所以执行完毕会有上面的结果;
return 语句将Python函数的结果,返回到调用的地方,并把程序的控制权一起返回,即在函数中,执行到return语句时,会退出程序 (try...finally语句除外); Python 函数中,没有return语句时,默认 return一个 None 对象;多个return语句时,运行到第一个return语句即返回,不再执行其它代码;
return是将函数的结果输出给函数的调用者,是给程序用的;
print是将文字信息输出到控制台,是给人看的;
return是一个返回值,只有被打印的时候才能拿到它的值;
def hello(name):
# print(f"hello {name}")
return f'hello,{name}'
hello(input("请输入您的名字:"))
如上述结果,拿不到return的返回值
不打印的话,相当于这个return的值你拿到了,但是看不到,只有打印了函数的调用才能看到;
【所以return值你想看到必须打印(函数的调用)】
再举个例子
def add(x, y):
return x + y
def minus(x, y):
return x - y
print(minus(add(1, 3), 2))
print(minus(2, 1))
返回值可以是任意类型,如果函数中没写return,则默认返回None
def func():
return [1,True,(11,22,33)]
result = func()
print(result)
def func():
value = 1 + 1
ret = func()
print(ret) # None
当在函数中 未写返回值 或 return 或 return None ,执行函数获取的返回值都 是None。
def func():
value = 1 + 1
return # 或 return None
ret = func()
print(ret) # None
return后面的值如果有逗号,则默认会将返回值转换成元组再返回。
def func():
return 1,2,3
value = func()
print(value) # (1,2,3)
函数一旦遇到return就会立即退出函数(终止函数中的所有代码)
def func():
print(1)
return "结束吧"
print(2)
ret = func()
print(ret)
在定义函数时,如果在括号中添加 变量 ,我们称它为函数的形式参数:
# ###### 定义有三个参数的函数(a1/a2/a3一般称为形式参数-形参) #####
def func(a1,a2,a3):
print(a1+a2+a3)
# 执行函数并传入参数(执行函数传值时一般称为实际参数-实参)
func(11,22,33)
# 执行函数并传入参数
func(9,2,103)
def add(n1,n2):
print(n1+n2)
add(1,22)
def add(n1,n2):
print(n1+n2)
add(n1=1,n2=22)
def three_add(x, y, z=10):
return x + y + z
print(three_add(2, 4))
z为默认参数,当没有对z进行位置传参时,它的默认参数为10
def three_add(x, y, z=10):
return x + y + z
print(three_add(2, 4,5))
当对z进行位置传参时,它的默认参数会被覆盖;
*
def func(*abc):
print(abc)
# 只能按照位置传参
func(1, 2, 3, 4)
func(22)
func(22,33)
func(22,33,99)
func()
将传入的参数变成一个元组;
**
def func(**kwargs):
print(kwargs)
# 只能按关键字传参
func(n1="小胖")
func(n1="小胖", age=18)
func(n1="小胖", age=18, email="xx@live.com")
将传入的参数变成一个字典;