Python函数
函数是Python中也是非常重要的,函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用该函数。
一、函数的定义
函数的定义要使用def关键字,def后面紧跟函数名,缩进的为函数的代码块。
def test():
print("Hello,World")
上述即为一个简单的函数,定义了一个名为test的函数,函数体为 print(“Hello,World”)。要使用该函数,只需调用即可。
def test():
print("Hello,World")
test()
# Hello,World
二、形参实参
函数中也可以指定参数,进行函数中的调用参数,在函数名后面括号中的成为形参,而在函数调用时传递的参数成为实参。
定义一个两数相加的函数
def add(num1, num2):
Sum = num1 + num2
print(Sum)
add(1, 2)
# 3
上述中的num1,num2为函数的形参,而在调用的add(1, 2)中的1和2为函数的实参,输出结果为Sum。
2.1 位置实参
函数的定义中可能包含多个形参,所以函数的调用中要包含多个实参,而位置实参就是要求传递的实参要与函数定义的形参一一对应,否则可能会出现错误。
def info(name, height):
print(f"The {name} height is {height}")
info("peter", 180)
# The peter height is 180
上述的参数是形参和实参对应的,如果不对应就可能出现错误。
def info(name, height):
print(f"The {name} height is {height}")
info(180, "peter")
# The 180 height is peter
可能会出现上述可笑的错误。
2.2 关键字实参
关键字实参不会像位置参数需要一一对应,在函数调用时,就直接形参对应的实参,不会出现错误。
def info(name, height):
print(f"The {name} height is {height}")
info(name="peter", height=180)
# The peter height is 180
在上述的实参中,指定了函数中的形参对应的实参,所以实参不是与形参一一对应,也不会出现错误。
def info(name, height):
print(f"The {name} height is {height}")
info(height=180, name="peter")
# The peter height is 180
2.3 默认值
在函数中可以形参指定默认值,当调用函数且没有给对应的形参传递参数时,函数会以默认的参数输出,当实参指定时,则会以指定的实参进行输出。
def info(name, height, sorce=70):
print(f"The {name} height is {height}, and sorce is {sorce}")
info(height=180, name="peter", sorce=80)
# The peter height is 180, and sorce is 80
当不指定参数时,对应的参数则以形参中指定的参数输出
def info(name, height, sorce=70):
print(f"The {name} height is {height}, and sorce is {sorce}")
info(height=180, name="peter")
# The peter height is 180, and sorce is 70
三、返回值
函数并不是只向上面的那样简单的处理,还能返回值,共其他的函数进出处理。函数中返回值的关键字为return,就是将函数的处理结果返回出来,供其使用。
def add(num1, num2):
Sum = num1 + num2
return Sum
result = add(1, 2)
print(result)
# 3
上述的函数体中并没有使用print打印输出结果,而是将计算的结果传给了Sum,使用关键字return返回Sum,在函数外将函数的结果赋值给result,从而将计算的结果输出。
四、任意数量的实参
在编写函数时,有时候不知道具体有多少实参,这时就可以使用Python中的任意数量的实参来指定,使用 * 号来指定形参就可实现这样的功能。
def info(*infor):
print(infor)
info("peter", 179, 80)
# ('peter', 179, 80)
上述函数的形参*infor让Python创建了一个名为infor的元组,并且调用函数时的实参全部以元组的形式存入。
五、任意数量的关键字实参
有时候需要接受任意数量的实参,但不知道传递给函数是什么样的信息,这时可将函数编写成能接受任意数量的键值对。使用 ** 号来指定形参就可实现这样的功能。
def info(name, height, **infor):
infor["name"] = name
infor["height"] = height
return infor
ret = info("peter", 179, sorce=80, major="math")
print(ret)
# {'sorce': 80, 'major': 'math', 'name': 'peter', 'height': 179}
上述**infor的形参,Python创建了一个名为infor的键值对字典,调用函数时指定的实参都将以键值对的形式存入infor的字典中。
六、传入列表和字典
函数不止能传入简单的参数,还可以传入列表和字典,可参考链接: 函数传入列表和字典