变量-函数的命名空间,函数动态传参


# 形态参数的3中类型:
# *args 动态参数,不定长参数
# args元组,包括了所有的位置参数
# **kawargs 包括了关键动态参数
# 命名空间{1.全局变量空间:
# {2.局部变量空间:
# {3.内置空间:
#

作用域


作用域就是作用范围,按照生效范围可以分为全局作用域和局部作用域。


全局作用域:包含内置名称空间、全局名称空间,在整个文件的任意位置都能被引用、全局有效


局部作用域:局部名称空间,只能在局部范围生效


'''
def func(*args): ##动态位置参数
print(args,type(args))
func([1,2,3,'ok',23,4,5666])
# ########################
def func(**kawargs): ##函数的关键字传参
print(kawargs)
func(a=32,b=32,c=44)

 



'''

def fcun(*args):
print(args)
a=[1,2,4,55,3,2,1]
b=['alex','join','kak']
fcun(*a,*b)

 

 
def func1(*args,**kwargs):
    print(args,kwargs)
l2={'k':'name','k1':'age','k2':'scrot'}
ls=(1,2,3,4,5,6)
func1(*ls,**l2)

# def func2(a,b,c,*args,sex='男'):
#     print(a,b,c,sex,args)
# func2(1,2,'alex','wusir','jonb')

 




#########万能混合默认传参###########
1.
def func3(a,b,c,*args,sex='男',**kwargs):
print(a,b,c,args,sex,kwargs)
func3(1,2,'alxe','wusir',sex='女',name='猴子',scort=55)

#2.
def func4(*args,**kwargs):
print(args,kwargs)
return args,kwargs
ret1=func4(1,2,3,4,5,6,name='alex',age=90)
print(ret1)

 



#######万能按位置传参#########
def my_sum(*args):
cont=1
for i in args:
cont *= i
return cont
print(my_sum(1,2,3,4,5))

########魔法运算:打撒########
def func5(*args,**kwargs):
print(args)
k1=['ale','烫头','保健','桑拿'],['k粉','ge','唱歌']
k2={'牛':'牛鞭','猪':'猪头','鸡':'鸡爪'}
func1(*k1,**k2)

###方法2
def func6(*args,**kwargs):
print(args,kwargs)
kl=('wlxe','大圣','猴子',44)
func6(*'76',*'悟空',*{'吃饭':'喝酒','打麻将':'同花顺'},a='wl')


#名称空间: 全局名称空间,
# 局部名称空间,
# 内置名称空间

# 加载的顺序:
# {1.内置命名空间——>全局命名空间——》局部命名空间(执行函数名时))
#
# {2.取值的顺序:
# (先从局部名称空间找——》全局命名空间找——》内置命名空间找)

########全局变量与函数局部变量######
name ='bbq'
def funcon():
name ='banana'
print(name)
funcon()

########内置函数变量
def ls(x):
return x
ret=ls([1,2,3,4])
print(ret)

########################global关键字,nonlocal关键字。###############################
name1='wll'
def funcon3():
global name1
name1='alxe'
print(name1)
funcon3( )
print(name1) ##最后的结果是global声明后的 变量的值

#####可变数据类型
ll=[2,5,7,8]
def fnuc():
ll.append(444)
return ll
fnuc()
print(ll)

a3 = 25
def fnuc1():
global a3
a3 = 252
print(a3)
fnuc1()

#嵌套循环,nonlocal只对父级生效
def fnuc1(): #1.声明函数名
a = 'alex' #3进入a=alex #9.此时a=‘alex’变为‘tb’
def fs(): #4.开始走第二个循环函数声明
nonlocal a #7.nonlocal 声明局内变量a
a = 'tb' #8.重新赋值a=tb (包括上面的a=’alex‘也生效了
print(a) #10.自己打印fs函数内的a
print(a) #5.这个没有在fs第二个嵌套里面所以打印
fs() #6.开始调用fs变量
print(a) #11.打印这个掉o用了 函数fnuc1后的a
fnuc1() ###2.调用函数
posted @ 2018-02-01 20:52  胸不平$怎平天下  阅读(135)  评论(0编辑  收藏  举报