函数
1.函数的作用
2.函数的定义
3.函数的参数
4.函数的返回值
5.全局变量和局部变量
6.内部函数
1.函数的作用
将重复的代码封装到函数,使用时直接找函数即可。
大大增强了代码的模块化和提高了代码的重复利用率。
2.函数的定义
'''
格式:
def 函数名([参数,参数,....]):
函数体(重复的代码)
注意事项:
1.必须使用关键字def
2.函数体注意缩进
3.函数名() 绑定在一块,是必须写的
'''
3.函数的参数
#第一类无参函数:
'''
def func():
pass(函数体)
func() -----> 进行调用
'''
#第二类有参函数:
'''
1.普通参数
def func(name,age):
pass(函数体)
func('小谢','18') --->这里形参和实参个数要一致
'''
#举例:
def func(name,age):
print(name,age) #结果为:小谢 18
func('小谢','18')
'''
2.可变参数
A.
def func(*args):
pass
func() ------>函数调用时,实参的个数可以没有,也可以有多个。但是不可以是关键字参数(key = value这种类型)
func(4)
func('小谢',18)
'''
#举例:
def func(*args):
print(args)
func() # 这样调用的结果为:()
func(4) # 这样调用的结果为:(4,)
func('小谢', 18) # 这样调用的结果为:('小谢', 18)
'''
B:
def func(**kwargs):
pass
func(a = 1,b = 2) ---->函数调用时,实参的个数可以没有,也可以多个,但必须是关键字参数
'''
#举例
def func(**kwargs):
print(kwargs) # 结果为:{'a': 1, 'b': 2}
func(a=1, b=2)
#C:
def func(*args, **kwargs):
print(args) # 结果为:(1, 3)
print(kwargs) # 结果为:{'1': 'a', '2': 'b'}
list1 = [1, 3]
dict1 = {'1': 'a', '2': 'b'}
func(*list1, **dict1) # 这里转换成了func(1, 3, '1': 'a', '2': 'b')
#*和** 在传实参时作用是对其进行拆解。在形参时*的作用是用元组封装。**作用是用字典进行封装
# D:混用
def func(name, *args, **kwargs): # name是不可变参数,所以在进行调用时,必须要有这个参数。后面两个可有可无。
print(name, args, kwargs) #根据*不能直接关键字参数,**只能接受关键字参数,系统会自动的从前往后进行识别和调整
func('小谢') # 结果为:小谢 () {}
func('小谢', a=1) # 系统会直接跳过*args 结果为:小谢 () {'a': 1}
def func(name,age = 18) #注意这里,若调用时,不给age值,则默认age为18
pass
4.函数的返回值
'''
return 返回值
1.return 后面可以是一个参数,接收的时候x = add(1,2)
2.return 后面也可以是多个参数,如果是多个参数则底层会将多个参数先放到一个元组中
将元组作为整体返回。
3.接收的时候也可以是多个。
'''
# 举例:
def add(a, b):
return a + b # x = add(1, 2)调用函数时
# return a, b #y = add(1, 2)和i, j = add(1, 2)调用函数时
x = add(1, 2)
print(x) # 结果为:3
y = add(1, 2)
print(y) # 结果为:(1, 2)
i, j = add(1, 2)
print(i, j) # 结果为:1 2
5.全局变量和局部变量
1.全局变量:声明在函数外层,所有的函数都可以访问
2.局部变量:在函数内部声明,仅限于函数内部访问
3.全局变量可以在函数中随便访问,但是全局变量如果是不可变的,则在函数中进行修改时需要添加global关键字(global 变量);全局变量是可变的时候,不需要在函数中添加global关键字
6.内部函数
就是函数中包函数
在内部函数中:
1.可以访问外部函数的变量
2.内部函数可以修改外部函数的可变类型的变量比如:list1
3.内部函数修改全局的不可变变量时,需要在内部函数中声明 global 变量
内部函数修改外部函数的不可变量时,需要在内部函数中声明 nonlocal 变量
4.locals() 查看当前的函数中声明的内容有哪些,以字典的形式输出 print(locals())
globals()查看全局中声明的内容有哪些,以字典的形式输出 print(globals()) 注意这个里 面会输出一些系统的键值对
一个注意事项:
函数声明不顶用,必须进行函数调用才会执行