1: 魔法变量 *arg ,**args 主要用于我们的函数参数,也可以用于分割列表
*arg
是用来发送一个非键值对的可变数量的参数列表给一个函数.
**args
允许你将不定长度的
键值对
, 作为参数传递给一个函数
使用顺序:
some_func(fargs, *args, **kwargs)
举列
args=('one',32,2)
argss={"arg3":"3","arg1":1,"arg2":"two"}
dicts ={ "name":"瑾",
"sex":"男",
"age":20
}
arg = [1,2,3,4,5,6,7,8,9]
# 魔法变量放入我们调用参数
def fun(arg1,arg2,arg3):
print("agr1", arg1)
print("agr2", arg2)
print("agr3", arg3)
# 魔法变量放入函数参数
def funs(arg,*args):
print("第一个参数是",arg)
print(args)
for a in args:
print("*arg中的参数是:",a)
# 正常顺序
def funss(arg,*args, **kwargs):
print(arg)
print(*args)
for k,v in kwargs.items():
print("**argss中的参数是:{0}:{1}".format(k,v))
# 只放入 **kwargs
def funkwargs(**kwargs):
print(kwargs)
for k,v in kwargs.items():
print("**argss中的参数是:{0}=={1}".format(k,v))
# 使用*arg
fun(*args)
》》》agr1 one
agr2 32
agr3 2
# 使用**agrs
fun(**argss)
》》》agr1 1
agr2 two
agr3 3
funs(1,2,23,44)
>>>第一个参数是 1
(2, 23, 44)
*arg中的参数是: 2
*arg中的参数是: 23
*arg中的参数是: 44
funs(2,arg)
>>>第一个参数是 2
([1, 2, 3, 4, 5, 6, 7, 8, 9],)
funss(1,args,dicts)
>>>*arg中的参数是: [1, 2, 3, 4, 5, 6, 7, 8, 9]
1
('one', 32, 2) {'name': '瑾', 'sex': '男', 'age': 20}
funkwargs(name="abaf",age=10) # 这里有个坑 不能直接传入我们的dict funkwargs(dicts)
>>>{'name': 'abaf', 'age': 10}
**argss中的参数是:name==abaf
**argss中的参数是:age==10
funkwargs(**dicts)
>>>{'name': '瑾', 'sex': '男', 'age': 20}
**argss中的参数是:name==瑾
**argss中的参数是:sex==男
**argss中的参数是:age==20
print("我是华丽的分割线---------------------------------------------")
list=[1,2,3,4,5,"c#","python","admin"]
苦逼的 好像忘记了怎么用*来分割list列表了 晚上回去翻翻
代码复制过来到这里缩进有问题啊
# 猴子补丁
# 利用了python中的名字空间是开放的
# 通过了dict来实现
# 导入一个module
# 将module对象加入到sys.modules,后续对该module的导入将直接从该dict中获得
# 将module对象加入到globals dict中
# 可以来换模块,更新什么的
class foo():
def bar(self):
print("foo.bar")
def bar(self):
print("更新模块")
print("这是替换前的")
foo().bar()
foo.bar=bar
print("这是替换后的")
foo().bar()
》》》