一、函数作用
函数:函数就是将一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个函数的名字即可实现对应的功能。
二、函数定义、调用
定义:def 函数(参数【option】):
代码1
代码2
......
调用:函数名(参数[option])
三、函数参数
参数:在定义函数的时候,函数需要调用者给他的数据就叫参数
①位置参数:调用函数的时候根据函数定义的参数位置来传递参数
def user_info(name,age,gender):
print(f'您的名字是{name},年龄是{age},性别是{gender}')
user_info('bull',20,'男')
②关键字参数:函数调用,通过’键=值‘形式加以指定。可以让函数更加清晰,容易使用,同时也清楚了参数的顺序需求。
注意: 函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不
存在先后顺序。
def user_info(name,age,gender):
print(f'您的名字是{name},年龄是{age},性别是{gender}')
#调用函数
user_info('bull',age=20,gender='男')
#位置参数要放在关键字参数的后面,关键字参数不要求顺序,无所谓
user_info('bull',gender='男',age=20)
③缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)
def user_info(name,age,gender='男'):
print(f'您的名字是{name},年龄是{age},性别是{gender}')
#调用函数,使用默认参数,不传gender
user_info('bull',18)
#调用函数,更改默认的参数值
user_info('tom',age=23,gender='男')
#调用函数,关键字参数不区分顺序,只要在位置参数后面就可以
user_info('jack',gender='男',age=25)
④不定长参数:也可叫可变参数。用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。此时,
可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。
def user_info(*args):
print(args)
user_info('TOM') # ('TOM',)
user_info() # ()
user_info('tom',90) # ('tom', 90)
⑤关键字参数传递:通过关键字传递参数,直接给关键字赋值;传递参数不用考虑参数传递的顺序
def user_info(**kwargs):
print(kwargs) # 返回的结果是{'name': 'tom', 'age': 10, 'gender': '男'}
user_info(name='tom', age=10, gender='男')
四、函数返回值
函数的返回值return关键字:
通俗理解:我们去药店买口罩,付过钱之后,店员给了我们口罩,在函数中,如果需要返回结果给用户,那么就需要使用函数的返回值。
def buy():
return '口罩'
# 使用变量保存函数的返回值
goods = buy()
print(goods)
①return 后面跟了值/变量,调用这个函数就会得到return后面的值
②return语句用于退出函数,向调用方返回一个表达式。执行到return语句时,会退出函数,return之后的语句不再执行
③ return a,b 写法,返回多个数据的时候,默认是元组类型。
④ return在不带参数的情况下(或者没有写return语句),默认返回None
五、函数变量
①局部变量:所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效
局部变量的作用:在函数体内部,临时保存数据,当函数被调用完成后,则销毁局部变量
def add(x,y):
x = 2
y = 3
return x+y
print(add(1,2))
②全局变量:指的是在函数体内,外都能生效的变量
a = 1
b = 2
def add(a,b):
return a+b
print(add(a,b))
局部变量声明成为全局变量 global
name = '李四'
def add():
global name
name = '张三'
# name = '王五'
return name
name1 = add()
print(name)
print(name1)