一、动态参数
#形参 有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. C#以记事本(指定程序)打开外部文档(指定文档)

    System.Diagnostics.Process.Start("notepad.exe", "D:\\a.txt");

  2. 无法启动MYSQL服务”1067 进程意外终止”解决的方法——汇总及终极方法

    自己一開始依照百度经验里的方法--<MySQL下载安装.配置与使用(win7x64)>去安装和配置,可是到后面步骤总是出现1067代号的错误. 慢慢折腾去解决. 这里汇总各种导致mysql ...

  3. JVM 系列 ClassLoader

    JVM 系列()ClassLoader 在前面一节中,主要介绍了 Class 的装载过程,Class 的装载大体上可以分为加载类.连接类和初始化 3 个阶段.本小节将主要介绍绍 Java 语言中的 C ...

  4. Directory /usr/local/hadoop/tmp/tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible

    解决方法: <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp< ...

  5. Java 关键字有哪些

    数据类型: Boolean(布尔型)    int    long    short    byte    float    double    char    class    interface( ...

  6. 《Linux多线程服务端编程——使用muduo C++网络库》读书笔记

    第一章 线程安全的对象生命期管理 第二章 线程同步精要 第三章 多线程服务器的适用场合与常用编程模型 第四章 C++多线程系统编程精要 1.(P84)11个常用的最基本Pthreads函数: 2个:线 ...

  7. 记录一次shell里局部变量的问题

    一:起因是这样的,自己今天面试被问到怎么读取某文件夹下所有的文件的每一行的数值的总和:其中文件中数值在每一行里的格式为num|,如33|,因此我第一想到的是通过cut -d\| f1 file来获取每 ...

  8. AD采样的一个例子

    用122.88k时钟采样153.6k的信号

  9. Bluebird-NodeJs的Promise

    Promise是异步代码实现控制流的一种方式.这一方式可以让你的代码干净.可读并且健壮. 比如,你用来异步处理文件事件的回调代码: fs.readFile('directory/file-to-rea ...

  10. DOM数据解析

    //DOM : Document Object Model ,一种XML解析的方式,先读取整篇的内容,然后再进行解析,解析速度比较快,如果内出现错误,解析就会失败,iOS不支持DOM解析,goole提 ...