函数
下水道 --》 通下水道 --》 找一个工具(买一个工具 --》 方便,拿来就用,不需要关心内部构造)
函数就相当于这个工具 --》 干一件特定的事的(需要用的时候才用,提前造/买)
需要用函数的时候,拿来用就行了,提前写/复制粘贴
def caculator():
num1 = input('请输入一个数字')
num1 = int(num1)
sig = input('请输入一个符号')
num2 = input('请输入另一个数字')
num2 = int(num2)
if sig == '-':
print(num1 - num2)
elif sig == '+':
print(num1 + num2)
elif sig == '*':
print(num1 * num2)
elif sig == '/':
print(num1 / num2)
else:
print('对不起,我不认识')
caculator()
函数的定义
先定义函数,后调用
- 定义函数:
'''
# 创建一个工具,不会使用(工具名 -->与变量名的规范一模一样)
def 函数名(等同于变量名)():
"""对函数(工具)的描述信息"""
:param1:描述
:param2:描述
:return:返回值
函数名()
'''
def 函数名(param1、param2……):
code 1
code 2
code 3
...
return 返回值
# 函数定义的特性: 函数定义过程,只检测语法,不执行代码
- 调用函数
函数名(param1、param2……)
#猜大小的案例
def guess():
'''给定两个数,打印较大的数'''
# 猜大小的代码
x = 30
y = 20
if x > y:
print(x)
else:
print(y)
guess()
print(guess._doc_) # 给定两个数,打印较大的数
#_doc_解释说明函数方法
# 调用阶段,会执行代码
定义函数的三种方法
空函数
def register():
# TODO:注册功能,暂时不会写
pass # 写个空函数,占个位置
有参函数(有参数()的函数)
def guess1(x,y):
"""给定两个数,打印较大的数"""
if x > y:
print(x)
else:
print(y)
# 当你使用手电筒,在使用的时候调一下(输入一个参数)
guess1(50,20) # 使用函数的得传参
无参函数
def guess2():
"""给定两个数,打印较大的数"""
x = 30
y = 20
if x > y:
print(x)
else:
print(y)
函数的调用
def guess1():
"""给定两个数,打印较大的数"""
x = 20
y = 30
if x > y:
print(x)
else:
print(y)
# 函数的调用--》使用函数
print(guess1) # 函数的地址
guess1() # 没有为什么,加括号就能调用(执行内存中的代码)
函数的返回值
没有return,默认返回None
None就是返回值(使用函数后拿到的一个结果)
return返回一个返回值,如果没有返回值,返回None
def compare():
x = 10
y = 20
if x > y:
return x
else:
return y
res = compare()
print(res)
return 可以终止函数
假设有多个return的时候,运行到第一个就会结束,不会运行第二个
def print_1_10():
for i in range(10):
if i == 5:
return # 终止函数
print(i)
print_1_10()
return 可以返回多个值,返回值以元组的形式接收
def return_nums():
return 10, 100, 1000
res = return_nums()
print(res[1])
可变长函数
# *形参
def f1(*args): # 调用函数时,有多少个位置实参,我就接收多少个参数
print(args)
# *args(约定俗称的),用 元组 接收多余的 位置实参
# **形参
def f1(**kwargs):
print(kwargs)
# **kwargs,用 字典 接收多余的 关键字实参
#了解
# *实参
def f1(a, b, c, e, d, f, g):
print(a, b, c, e, d, f, g)
lt = [1, 2, 3, 4, 5, 6, 7]
f1(*lt)
# *lt把列表中的元素打散成 位置实参 依次传给位置形参
# **实参
def f1(z, b):
print(z, b)
dic = {'z': 1, 'b': 2} # a=1,b=2
f1(**dic) # **dic把字典打散成 关键字实参 然后传给函数f1