一、动态参数
#形参 有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. ServiceStack支持跨域提交

    //ServiceStack对浏览器有一定的限制 //修改AppHost.cs文件 using Funq;using ServiceStack;using ServiceStackTest.Servi ...

  2. Golang之redis

    redis是个开源的高性能的key-value的内存数据库,可以把它当成远程的数据结构. 支持的value类型非常多,比如string.list(链表).set(集合). hash表等等 redis性 ...

  3. python编辑excel

    转: http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html

  4. Bioconductor简介

    Bioconductor简介 2012-10-09 ~ ADMIN 源:Bioconductor: open software development for computational biolog ...

  5. Luogu 2154 [SDOI2009]虔诚的墓主人

    弄了很久,状态很烂…… 首先发现可用的点一共只有$1e5$个,所以可以离散化坐标来方便计算. 发现对于一个空格,设它的上.下.左.右分别有$u, d, l, r$个点,它产生的贡献是$\binom{u ...

  6. [NOI.AC]COUNT(数学)

    解析: 也可以将所有的可能都计算出来,后进行减法运算. 代码: #include<bits/stdc++.h> using namespace std; #define ll long l ...

  7. 8.19 extjs jar 包使用。

    一.文件结构在ExtJS官网下载好4.0的开发包解压后,我们得到如图的文件结构 文件/文件夹名作用builds  压缩后的ExtJS代码,体积更小,更快docs  开发文档examples  官方演示 ...

  8. Hadoop 1: NCDC 数据准备

    本文介绍Hadoop- The Definitive Guide一书中的NCDC数据准备,为后面的学习构建大数据环境; 环境 3节点 Hadoop 2.7.3 集群; java version &qu ...

  9. 2018.07.20 bzoj2152: 聪聪可可(点分治)

    传送门 本蒟蒻AC的第二道点分治,调了30min" role="presentation" style="position: relative;"&g ...

  10. java中File的delete和deleteOnExit区别(转)

    Java的File类中有两个delete方法:delete和deleteOnExit delete无需解释,为直接删除,deleteOnExit文档解释为:在虚拟机终止时,请求删除此抽象路径名表示的文 ...