def func(a, b):
pass
# a和b就是函数func的形参
func(1,2)
# 数据1和2就是函数func的实参
# 定义学员注册功能
def register(name, age, gender='male'):
print('%s:%s:%s' % (name, age, gender))
register('jason', 18)
register('tony', 28)
register('kevin', 38)
register('lili', 18, 'female')
register('lili', 18, gender='female')
# 1.函数无论传入多少位置参数都可以正常运行
# 可变长形参
# def func(x,y,*a):
# print(x,y,a)
# func() # ()
# func(1) # (1,)
# func(1, 2, 3, 4, 5, 6, 7) # (1, 2, 3, 4, 5, 6, 7)
# func(1,2) # 1 2 ()
# func(1,2,3,4,5,6,7,8,9) # 1 2 (3, 4, 5, 6, 7, 8, 9)
# func(1,2) # 1 2 (3, 4, 5, 6, 7, 8, 9)
"""
*号在形参中的使用
用于接收多余的位置参数 并组织成元组的形式赋值给*号后面的变量名
"""
# 2.函数无论传入多少关键字参数都可以正常运行
# def index(x, y, **b):
# print(x, y, b)
# index() # {}
# index(a=1,b=2,c=3,d=4) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# index(y=2, x=1) # 1 2 {}
# index(y=2, x=1, u=222, k=111, l=444) # 1 2 {'u': 222, 'k': 111, 'l': 444}
"""
**号在形参中的使用
用于接收多余的关键字参数 并组织成字典的形式赋值给**号后面的变量名
"""
# 3.定义一个函数无论传入多少位置参数和关键字参数都可以正常运行
# def index(*a,**b):
# print(a,b)
# index() # () {}
# index(1,2,3,4) # (1, 2, 3, 4) {}
# index(a=1,b=2,c=3) # () {'a': 1, 'b': 2, 'c': 3}
# index(1,2,3,4,a=1,b=2,c=3) # (1, 2, 3, 4) {'a': 1, 'b': 2, 'c': 3}
"""
墨守成规
可变长形参 *与**后面的变量名其实是可以随便定义的
但是python中推荐使用
*args
**kwargs
def index(*args, **kwargs):
pass
"""
# 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]) # 可以
'''如果index形参是*args 列表里面有很多元素 如何实现按照位置一一传入'''
# def index1(*args):
# print(args)
# new_list1 = [11,22,33,44,55,66,77,88,99]
# index1(*new_list1) # index1(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}
"""
**号在实参中的使用
会将字典内的键值对打散成关键字参数传入
"""
1.命名关键字参数
def register(name,age,*,sex,height):
pass
# register('jason',18,'male',183)
register('lili',18,sex='male',height='1.8m') #正确使用
"""
sex height在传入实参的时候必须以关键字参数的形式
ps:该类型的参数几乎不用 也几乎很少能碰到
"""
name = 'jason' # name全局
def func(): # func全局
pass
if 1:
a = 123 # a全局
for i in range(10):
print(i) # i全局
while True:
a = 123 # a全局
x = 111
def f1():
x = 222
def f2():
x = 333
def f3():
x = 444
def f4():
x = 555
print(x)
# x = 555 特例
f4()
f3()
f2()
# 通过调用f1 执行所有的函数
f1()