一、动态参数
#形参 有3种动态参数
#*args 动态参数,不定长参数
def func (*args):
print(args,type(args))
func(1,2,"alex",3,4,55,5,)
#输出结果 (1, 2, 'alex', 3, 4, 55, 5) <class 'tuple'> def func(a,b,c,*args):
print(a)
print(b)
print(c)
print(args,type(args))
func(1,2,"alex")
'''
#输出结果
# 1
# 2
# alex
# () <class 'tuple'>
'''
def func(*args,a,b,c):
print(a)
print(b)
print(c)
print(args,type(args))
func(1,2,"alex")
#结果将会报错。TypeError: func() missing 3 required keyword-only arguments: 'a', 'b', and 'c'
'''
'''
a=1
def func(a,b,c,sex="男",*args):
print(a)
print(b)
print(c)
print(sex)
print(args,type(args))
func(1,2,"alex","wusir","ritian")
#运行结果:
# 1
# 2
# alex
# wusir
# ('ritian',) <class 'tuple'>
'''
'''
def func(a,b,c,*args,sex="男"):
print(a)
print(b)
print(c)
print(sex)
print(args,type(args))
func(1,2,"alex","wusir","ritian",sex="女")
#输出结果:
# 1
# 2
# alex
# 女
# # ('wusir', 'ritian') <class 'tuple'> '''
'''
## *kwargs def func(**kwargs):
print(kwargs)
func(a=1,b=4,c=3,d=2)
# 结果 :{'a': 1, 'b': 4, 'c': 3, 'd': 2},结果输出的为字典模式. '''
'''
def func(a,b,c,*args,sex="男",**kwargs):
print(a)
print(b)
print(c)
print(sex)
print(args,type(args))
print(kwargs)
func(1,2,"alex","wusir","ritian",sex="女",name="taibai",age=21)
# 输出结果:
# 1
# 2
# alex
# 女
# ('wusir', 'ritian') <class 'tuple'>
# {'name': 'taibai', 'age': 21}
#特点:位置参数,*args,默认参数,**kwargs '''
'''
def func(*args,**kwargs):
#万能参数
print(args)
print(kwargs)
func(1,2,3,45,name="alex",age=56)
# 结果 :
# (1, 2, 3, 45)
# {'name': 'alex', 'age': 56} '''
'''
def my_sum(*args):
count = 0
for i in args:
count+=i
return count
print(my_sum(1,2,3,4,78))
print(sum([1,2,3]))
# 结果 :
# 88
# 6
''' '''
#魔法运算:打散
def func(*args, **kwargs):
print(args) l1 = [1,2,3]
l2 = [1,2,3,4,5,55,3,0]
func(*l2,*l1) # 输出结果:(1, 2, 3, 4, 5, 55, 3, 0, 1, 2, 3) '''
def func(*args,**kwargs):
print(args)
print(kwargs)
dic ={"name":"alex","age":12}
dic2 ={"name":"jin","age":12}
func(**{"name1":"alex","age1":12},**{"name2":"jin","age2":22},name3="wusir")
二、名称空间,局部全部
'''
名称空间:
全局名称空间,
局部名称空间,
内置名称空间.(input,print,sum len)
加载顺序:
内置名称空间-->全局名称空间-->局部名称空间(执行函数时) 取值顺序:
先从局部名称空间找--> 全局名称空间找--->内置名称空间
'''
'''
name = "wusir"
def func():
name="alex"
print(name)
func()
''' """
def len(x):
return x
print(len([1,2,3]))
# 输出结果:[1, 2, 3]
"""
# 作用域的角度:
# 全局作用域 全局名称空间,内置名称空间
# 局部作用域,局部名称空间, def func():
name ="alex"
print(globals())
print(locals())
func() print(globals())
print(locals()) # 输出结果:
# {'__name__': '__main__', '__doc__': '\n#形参 有3种动态参数\n#*args 动态参数,不定长参数\ndef func (*args):\n print(args,type(args))\nfunc(1,2,"alex",3,4,55,5,)\n#输出结果 (1, 2, \'alex\', 3, 4, 55, 5) <class \'tuple\'>\n\ndef func(a,b,c,*args):\n print(a)\n print(b)\n print(c)\n print(args,type(args))\nfunc(1,2,"alex")\n', '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0205F950>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/parcharm/12/10/1.py', '__cached__': None, 'func': <function func at 0x02165E88>}
# {'name': 'alex'}
# {'__name__': '__main__', '__doc__': '\n#形参 有3种动态参数\n#*args 动态参数,不定长参数\ndef func (*args):\n print(args,type(args))\nfunc(1,2,"alex",3,4,55,5,)\n#输出结果 (1, 2, \'alex\', 3, 4, 55, 5) <class \'tuple\'>\n\ndef func(a,b,c,*args):\n print(a)\n print(b)\n print(c)\n print(args,type(args))\nfunc(1,2,"alex")\n', '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0205F950>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/parcharm/12/10/1.py', '__cached__': None, 'func': <function func at 0x02165E88>}
# {'__name__': '__main__', '__doc__': '\n#形参 有3种动态参数\n#*args 动态参数,不定长参数\ndef func (*args):\n print(args,type(args))\nfunc(1,2,"alex",3,4,55,5,)\n#输出结果 (1, 2, \'alex\', 3, 4, 55, 5) <class \'tuple\'>\n\ndef func(a,b,c,*args):\n print(a)\n print(b)\n print(c)\n print(args,type(args))\nfunc(1,2,"alex")\n', '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0205F950>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/parcharm/12/10/1.py', '__cached__': None, 'func': <function func at 0x02165E88> 三、函数的嵌套
def fun1():
print(111) def fun2():
print(222)
fun1()
fun2()
print(111)
#输出结果为
# 222
# 111 def fun2():
print(222)
def fun3():
print(666)
print(444)
fun3()
print(888)
print(333)
fun2()
print(555)
# 输出结果为 :
# 111
# 333
# 222
# 444
# 666
# 888
# 555 四 global nonlocal 关键字 global 1.声明一个全局变量
    #引用全局变量,并改变
def func()
  
def func():
global a
a = 2
print(a)
func()
print(a)
# 输出结果
# 2
# 2 #可变的数据类型
l1 =[1,2,3]
def func():
l1.append(444)
func()
print(l1)
#输出结果
# [1, 2, 3, 444]
''' #nonlocal
a = 1
def func():
nonlocal a
a = 2
print(a)
func()
''' #父级函数
def func():
name ="wusir"
def inner():
nonlocal name
name = "taibai"
print(name)
inner()
print(name)
func()
#运行结果 :[1, 2, 3, 444] def add_b():
b =42
def do_global():
b = 10
print(b)# 第一步 b=10
def dd_nonlocal():
nonlocal b
b=b+20
print(b)#第二部 b=30
dd_nonlocal()
print(b)#第三步 b=30
do_global()
print(b)#第四步:b=42
add_b()
结果 :

10
30
30
42

Day 10 动态参数&名称空间,局部全部.函数嵌套&global nonlocal关键字.的更多相关文章

  1. python-函数-动态传参,作用域的问题,函数嵌套,global nonlocal

    ⼀. 函数参数--动态传参 之前我们说过了传参, 如果我们需要给⼀个函数传参, ⽽参数⼜是不确定的. 或者我给⼀个 函数传很多参数, 我的形参就要写很多, 很⿇烦, 怎么办呢. 我们可以考虑使⽤动态参 ...

  2. 动态参数 名称空间 作用域 作用域链 加载顺序 函数的嵌套 global nonlocal 等的用法总结

    03,动态参数 *args,**kwargs # 用户传入到函数中的实参数量不定时,或者是为了以后拓展,# 此时要用到动态参数*args,**kwargs(万能参数.)# *args接收的是所有的位置 ...

  3. python基础之函数参数,名称空间,以及函数嵌套

    函数进阶内容梗概: 1. 函数参数--动态传参 2. 名称空间, 局部名称空间, 全局名称空间, 作⽤用域, 加载顺序. 3. 函数的嵌套 4. gloabal , nonlocal 关键字 1. 函 ...

  4. Python记录9:函数4:名称空间作用域+闭包函数+装饰器

    ''' 一: 名称空间namespaces     名称空间就是存放名字与值绑定关系的内存空间 二: 名称空间分为三种     内置名称空间:         1. 特点: 存放是python解释器自 ...

  5. Day11名称空间,作用域,闭包函数

    Day11 1.函数对象: ①可以被引用 ​ ②可以作为另一个函数的参数 ​ ③可以作为另一个函数的返回值0 ​ ④可以被存储到容器类型中 2.函数嵌套: ①嵌套调用:在一个函数中调用了另一个函数 ​ ...

  6. python之函数名称空间,作用域,嵌套函数

    目录 嵌套函数 定义 名称空间的三大类(只存变量名) 名称空间加载顺序 变量名的查找顺序为 作用域 嵌套函数 定义 函数内部定义的函数,无法在函数外部使用内部定义的函数. def f1(): def ...

  7. python 10 动态参数

    目录 1. 函数的动态参数 1.1 动态位置参数(*arges) 1.2 动态关键字参数 (**kwargs) 1.3 万能传参: 2. 函数的注释 3. 名称空间 4. 函数嵌套 5. 函数变量修改 ...

  8. python 函数的动态参数 命名空间,作用域以及函数嵌套,global和nonlocal (重点)

    *** 坚持坚持,即使你不太强*** 1.函数的动态传参 2.函数的命名空间及作用域 3.函数嵌套 4.global和nonlocal关键字 一.函数的动态传参 1. *args: 位置参数动态传参, ...

  9. 函数补充:动态参数,函数嵌套,global与nonlocal关键

    一丶动态参数 1.*args 位置参数,动态传参 def func(*food): print(food) print(func("米饭","馒头"," ...

随机推荐

  1. VINS-mono详细解读

    VINS-mono详细解读 极品巧克力 前言 Vins-mono是香港科技大学开源的一个VIO算法,https://github.com/HKUST-Aerial-Robotics/VINS-Mono ...

  2. C++的MFC 与 HTML 双向通讯

    C++中嵌入ie浏览器总结(1) - ie边框 及上下文菜单 最近项目中用html 来做界面,也就折腾了一下在wxwidget中嵌入浏览器的若干细节工作,mfc也基本是类似的,由于wxwidget中已 ...

  3. Ubuntu下笔记本触控板的禁启

    1.命令行方式,得每次用终端输入命令行设置 sudo rmmod psmouse #禁用触摸板 sudo modprobe psmouse #启用触摸板 2.永久禁用触摸板 打开终端,然后 sudo ...

  4. android 混淆文件proguard.cfg详解 (转载)

    -injars  androidtest.jar[jar包所在地址] -outjars  out[输出地址] -libraryjars    'D:\android-sdk-windows\platf ...

  5. WebService安全加密

    众所周知,WebService访问API是公开的,知道其URL者均可以研究与调用.那么,在只允许注册用户的WebService应用中,如何确保API访问和通信的安全性呢?本文所指的访问与通信安全性包括 ...

  6. 2018.09.05 bzoj1010: [HNOI2008]玩具装箱toy(斜率优化dp)

    传送门 一道经典的斜率优化dp. 推式子ing... 令f[i]表示装前i个玩具的最优代价. 然后用老套路. 我们只考虑把第j+1" role="presentation" ...

  7. C#打印日志的小技巧

    public static void Log(params System.Object[] message) { string str = ""; if (message == n ...

  8. flask_login

    一.配置 对于登录系统,我们将会使用到两个扩展,Flask-Login 和 Flask-OpenID.在microblog.py中配置: Flask-OpenID 扩展需要一个存储文件的临时文件夹的路 ...

  9. IoC的基本概念

    一.什么是IOC ioc是一个英文缩写,英文全称是 Inversion of Control,翻译过来是“控制反转”.理解好Ioc的关键是要明确“谁控制谁,控制了什么,为何是反转,哪些方面反转了” 谁 ...

  10. Linux各个版本资源下载

    Linux系统各发行版镜像下载(持续更新) == Linux系统各发行版镜像下载(2014年10月更新),如果直接下载不了,请使用迅雷下载.并且注意,我的下载地址,在  迅雷 里才起作用. Linux ...