1.该形参在函数调用阶段如果不给值 则使用默认的
2.该形参在函数调用阶段也可以继续给值 则使用你给的
"""
位置 形参与默认值形参在定义的时候位置形参
必须在默认值形参的前面
"""
’‘’‘格式越简单的月靠前 格式越复杂的越靠后’‘’
#1.函数无论传入多少位置参数都可以正常运行
可变长参数
def func(x, y, *a): print(x, y, a) func() func(1) func(1, 2, 3, 4, 5, 6, 7) # 1 2 (3, 4, 5, 6, 7)
""" *号在形参中的使用 用于接收多余的位置 并组织成元组的形式赋值给*号后面的变量名 """
def index(a, b ,c): print(a, b, c) new_list = [11, 22, 33] index(new_list) # 肯定不行 列表是一个整体 相当于一个实参 index(new_list[0], new_list[1], new_list[2]) # 可以 '''r如果index形参是*args 列表里面有很多元素 如何实现按照位置一一传入''' def index1(*args): print(args) new_list1 = [11,22,33,44,55,66,77,88,99] index1(*new_list1) # (11, 22, 33, 44, 55, 66, 77, 88, 99) """ *号在实参中的使用 会将列表、元组内的元素打散成位置参数的形式一一传值 """
def index2(**kwargs): print(kwargs) new_dict = {'username': 'jason','pwd': 123} index2(**new_dict) # index2(username='jason',pwd=123) {'username': 'jason', 'pwd': 123} """ **号在实参中的使用 会将字典内的键值对打散成关键字参数传入 """
name ='jason' # name 全局 def func(): # func 全局 pass if i: a=123 # a全局 for i in range(10): print(i) # i全局 while True: a=123 # a 全局
在查找名字的时候 要先确定自己当前位置在哪
1. 如果你在局部
局部>>>全局>>>内置
2.如果你在全局
全局>>>内置
x = 111 def f1(): x = 222 def f2(): x = 333 def f3(): x = 444 def f4(): x=555 print(x) f4() f3() f2() # 通过发f1 执行所有的函数 f1()
x = 111 def f1(): x = 222 def f2(): x = 333 def f3(): x = 444 def f4(): print(x) x=555 f4() f3() f2() # 通过发f1 执行所有的函数 f1()
x = 111
def f1():
x = 222
def f2():
x = 333
def f3():
x = 444
f4()
f3()
f2()
# 通过发f1 执行所有的函数
f1()