"""
函数参数:实参、形参
实参分类:
位置传参/位置参数:调用函数传入的具体的值,按对应位置传入值
关键字传参/关键字参数:指定函数传值的关键字,键值对
形参:
1.必备参数:(必须参数)必须要传的值,否则报错
2.默认参数:默认值,可传,可不传,不传使用默认值
3.不定长参数:
*args:
**kwargs:
"""
# 实参
def add_number(a, b, c):
return a + b + c
add_number(11, 22, 33) # 实参:位置参数
add_number(a=11, b=22, c=33) # 实参:关键词参数
add_number(11, c=33, b=22) # 同时存在位置参数和关键字参数的时候,关键字参数放在后面
# 形参
def func4(a, b, c=90):
print("a", a)
print("b", b)
print("c", c)
func4(1, c=2) # TypeError: func4() missing 1 required positional argument: 'b'
# a ,b 为必填参数,C为默认参数,可以不填,但是不写a,b会报错
# 不定长参数:*arge:接受位置参数:xx **kwargs:接受关键词传参:xx=xx
def func3(a, b, c, *args):
print(a)
print(b)
print(c)
print(args)
func3(11, 22, 33, 44)
def func2(a, b, c, *args, **kwargs):
print(a)
print(b)
print(c)
print(args)
print(kwargs)
func2(11, 22, 33, 44, 55, d=77)
"""
11---a
22---b
33---c
(44, 55) ----*args
{'d': 77} ----**kwargs
"""
# 函数参数拆包
"""
函数定义
*:表示接受位置参数的不定长参数
**:表示接受关键字参数的不定长参数
"""
def func(*args, **kwargs):
print(args)
print(kwargs)
func(11, 22, 33, a=1, b=2, c=3)
"""
(11, 22, 33)---args
{'a': 1, 'b': 2, 'c': 3}---kwargs
"""
def func1(a, b, c, d):
print('a=', a)
print('b=', b)
print('c=', c)
print('d=', d)
tup = (1, 3, 2, 4)
func1(*tup)
"""
a= 1
b= 3
c= 2
d= 4
"""
dic = {'a': 1, 'b': 3, 'c': 2, 'd': 4}
func1(**dic)
"""
a= 1
b= 3
c= 2
d= 4
"""
"""
全局变量:直接定义在文件中的变量叫全局变量
局部变量:定义在函数内部的变量叫局部变量
"""
# 全局变量:直接定义在文件中的变量叫全局变量,在文件任何地方都可以调用
a = 100
d = ""
# 局部变量:
def func():
c = 55
print(c)
func()
# print(c) ---在外面引用C 会报错。提示变量C未定义!
# ——————————函数的作用域(有效范围)——————————————————
# 局部变量的作用域:函数内部
# 函数参数的作用域:函数内部
# 函数中使用全局变量:首先申明为全局变量:global
def func2(a1, b):
c = 100
print(a1)
print(b)
def func3():
global d
d = 100
func3()
print(d)
# 同时存在局部变量和全局变量时,会优先使用局部变量,如果没有找到局部变量,才会使用全局变量
def func1():
a = 10
print(a)
func1()
# 在函数内部申明了全局变量后,如果修改了全局变量的值,则最开始定义的全局变量对应的值也修改了
# 定义全局变量b=200
b = 200
# 在函数中使用全局变量,并修改值
def func4():
global b
b = 210
print('函数内部打印变量b:', b)
func4()
print('函数外部打印变量b:', b)
'''
函数内部打印变量b: 210
函数外部打印变量b: 210
在函数内部申明全局变量,修改对应的之后,在外部使用该全局变量,对应的值也修改了
'''
python函数参数和作用域
最新推荐文章于 2022-12-10 15:08:50 发布