一、动态参数
#形参 有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. Golang之hello,beego

    学习谢大神的beego记录 过程: 目录结构: 编译命令: go build -o myBeego.exe go_dev/day13/beego_example/main执行myBeego.exe即可 ...

  2. 向Ubuntu的Dash中添加图标

    首先准备.xpm图标文件,如果程序文件夹中没有,那么可以根据自己喜好到网上下载喜欢的图标,不要太大,然后将其改为.xpm文件(直接改了后缀名就行).然后打开/usr/share/application ...

  3. [Selenium]当DOM结构里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert进行验证?

    我在测试的过程中遇到一个这样的问题,我无法通过CssSelector找到iFrame下边的html: <div id="mailEditorDiv" style=" ...

  4. wcf服务契约的重载

    a. 服务端 .服务端 契约用OperationContract的Name实现重载 using System; using System.Collections.Generic; using Syst ...

  5. datagrid分页 从后端获取数据也很简单

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Datagrid.aspx. ...

  6. IE浏览器调用jquery需要注意的小问题

    今天在进行前端重构的时候发现了一个非常奇怪的浏览器兼容性问题,我想在网页上放一个JS的特效,于是下载了jquery-easyui,经过修改完成所需要的效果后,准备放入项目中,发现在IE浏览器中无法运行 ...

  7. 2018.10.19 bzoj1584: Cleaning Up 打扫卫生(线性dp)

    传送门 dp妙题. 考虑到每个位置分一组才花费nnn的贡献. 因此某一段不同的数的个数不能超过sqrt(n)sqrt(n)sqrt(n),于是对于当前的位置iii我们记pos[j]pos[j]pos[ ...

  8. IntellJ IDEA javax.servlet.ServletException 找不到javax.servlet.ServletException的类 java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

    误状态:错误显示 解决: (1)说明缺少包---->添加如下包配置 <dependency> <groupId>javax.servlet.jsp</groupId ...

  9. 状态机中的RAM注意的问题--减少扇出的办法

    可能我不会抓紧时间,所以做事老是很慢.最近在整维特比译码过程深感自己有这样的毛病. 每天会有一点进展,但是却是一天的时间,感觉别人都做起事情来很快.可能这个东西有点难,做 不做得出来都不要紧,但我的想 ...

  10. java使用WebUploader做大文件的分块和断点续传

    版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...