1.动态参数  是可以接收任意的参数.一种方式,    1,位置的动态传参,  写法是:   *参数名    接收的参数是tuple类型举个例子:def yue(*food):    print(food)yue("香蕉",'苹果','芒果')yue("键盘",'鼠标','rng牛批')yue('北冰洋','脉动','百岁山,')这样不用一个一个带进去,一个*food 就全部概括了顺序是:  位置参数,动态参数(*),默认值参数     2,**参数名   形成一个字典关键字参数的动态传参,,写法是: **参数名, 例如: **kwarg利用**来接收动态关键字参数def func(**kwargs):    print(kwargs)func(a=1, b=2, c=3)func(a=1, b=2)结果:{'a': 1, 'b': 2, 'c': 3}{'a': 1, 'b': 2}接收的是一个dict 字典

他们最终的顺序是:位置参数,*args,默认值参数, **kwargs

无敌传参def func(*args, **kwargs)这个参数是什么都可以接收,无敌的*, ** 的作用:# # 在形参: 聚合# # 在实参: 打散* 可以打散列表 元组  **可以打散字典命名空间:  ①全局命名空间 --> 我们直接在py文件中,函数外声明的变量都属于全局命名空间  ②局部命名空间 --> 在函数中声明的变量会放在局部命名空间  ③内置命名空间 --> 存放python解释器为我们提供的名字,list,tuple,str,int这些都是内置命名空间

 加载顺序:内置               取值顺序是:局部         全局                        全局         局部                        内置      作用域的问题1. globals() 获取全局作用域中的内容2.locals()    获取局部作用域中的内容a = 10  # 全局def func(): # 全局    a = 40  # 局部    b = 20  # 局部    def abc():  # 局部        d = 30 # 是局部        print("哈哈")        print(a, b) # 这⾥使⽤的是局部作⽤域        print(locals())    abc()

    # print(globals()) # 打印全局作用域中的内容    # print(locals()) # 打印局部作用域中的内容,locals()打印当前这个函数局部作用与中的内容func()

函数嵌套:1.只要遇见了()就是函数的调用,如果没有()就不是函数的调用,def fun1():    print(111)

def fun2():    print(222)    fun1()

fun2()print(333)结果是  222  111  333

def fun2():    print(222)    def fun3():        print(666)    print(444)    fun3()    print(888)

print(33)fun2()print(555)结果是  33  222  444 666 888 555

def func():    print("哈哈哈")a = func # 函数可以赋值 .相当于. a和func是一回事儿func()a()结果是   哈哈哈        哈哈哈

4.global和nonlocalglobal: 寻找全局作用域中的内容nonlocal: 寻找上一级作用域中的内容, 但不能是全局的#比如:a=10def func():    global  a      # 这里的a 是全局的    a=20           #a 被更改了    print(a)func()print(a)结果是:  20   20

a=10def func1():    a=20    print(a)    def fun2():        nonlocal a          #上一级 ,且不能是全局        a = 30        print(a)    fun2()    print(a)func1()print(a)结果是:  20  30  30  10

python 函数 动态参数 和嵌套的更多相关文章

  1. python函数动态参数详解

    Python的动态参数: 1,参数前一个"*":在函数中会把传的参数转成一个元组. def func (*args): print(args) func(123,1,2,'a') ...

  2. python 函数动态参数,名称空间,global,nonlocal

    ##################################总结######################################动态参数 *args:位置参数动态传参,接收到的是元 ...

  3. python(3)-函数动态参数

    先来看一段代码 def show(*arg): print(arg, type(arg)) if __name__ == "__main__": show(1) show(1,2, ...

  4. 函数动态参数实现format

    变量赋值一种是字符串格式化,一种是通过format的方式 1.字符串格式化 s="i am %s,age %d"%('Jasper',23)print(s) 打印输出:i am J ...

  5. Python函数可变参数*args及**kwargs详解

    初学Python的同学们看到代码中类似func(*args, **kwargs)这样的函数参数定义时,经常感到一头雾水. 下面通过一个简单的例子来详细解释下Python函数可变参数*args及**kw ...

  6. 【转】Python函数默认参数陷阱

    [转]Python函数默认参数陷阱 阅读目录 可变对象与不可变对象 函数默认参数陷阱 默认参数原理 避免 修饰器方法 扩展 参考 请看如下一段程序: def extend_list(v, li=[]) ...

  7. 详解python函数的参数

    详解python函数的参数 一.参数的定义 1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: ...

  8. 可变数据类型不能作为python函数的参数

    可变数据类型:列表.字典 不可变数据类型:整型.浮点型.字符串.元组 为什么可变数据类型不能作为python函数的参数?请看以下例子: def foo(a=[]): a.append(1) retur ...

  9. python day- 10 动态参数 函数的嵌套 命名空间和作用域 global和nolocal

    一.动态参数: 动态参数是形参的一类 分为:动态位置参数(* + 函数名)表示 调用后返回的是元祖 动态关键字参数(** + 函数名)表示 形参的排列顺序: 位置参数     >   动态位置参 ...

随机推荐

  1. JavaScript 实现一个简单的MVVM前端框架(ES6语法)

    前言 随着前端各大框架的崛起,为我们平时的开发带来了相当的便利,我们不能一直停留在应用层面,今天就自己动手实现一个乞丐版的MVVM小框架 完整代码github地址 效果 html代码 <div ...

  2. mysql驱动参数变化

    在java平台使用的mysql jdbc驱动为:mysql-connector-java. 在项目中添加如下依赖: <dependency> <groupId>mysql< ...

  3. 学习笔记——xml的入门及解析

    需求:根据配置文件创建类,并调用方法 分析:1.XML 2.解析XML 3. 根据全限定名创建对象,调用方法 XML: 可扩展的标签语言 作用:存储数据.(主要用于配置文件) 后缀名.xml 书写规范 ...

  4. GeoGlobe Server运维

    本篇博文简单记录鄙人在管理和维护GeoGlobe Server中,遇到的一些问题以及可行的解决方案 1 关于启动内存 Server默认的启动内存是256M,当服务比较多的时候,启动就会很慢.我们可以修 ...

  5. Android获取版本号

    public static String getVersionName(Context context) { PackageManager manager = context.getPackageMa ...

  6. Sql分页代码示例

    select * from (select ROW_NUMBER()over( order by id) orderid,* from test) a where a.orderid between ...

  7. pom样板

    <properties> <java.version>1.6</java.version> <project.build.sourceEncoding> ...

  8. Kali Linux之使用SET快捷生成钓鱼网站方法

    SET (Social Engineering Tools) 1.使用命令:setoolkit 会显示工具菜单 2.输入1 ,选择菜单中的Social-Engineering Attacks (社会工 ...

  9. webpack学习笔记——解决多次输出的问题&自动编译之启用观察者模式,热重载

    [解决多次输出的问题] 昨天学会了用命令打包,如下 webpack entry.js bundle.js 但是会出现多次输出要表现的内容的问题,如下,执行几次上述命令,显示几次,原因是并没有清除之前输 ...

  10. 前端向服务器请求数据并渲染的方式(ajax/jQuery/axios/vue)

    原理: jQuery的ajax请求:complete函数一般无论服务器有无数据返回都会显示(成功或者失败都显示数据): return result