1. 1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序: 位置,*args,默认值,**kwargs 在形参上*聚合, **聚合 在实参上*打散, **打散例
  1. # def chi(good_food, bad_food,drink, ice, jiu):# print("我要吃", good_food, bad_food)## chi("盖浇饭", "辣条")
  2.  
  3. # 位置参数 > *动态参数 > 默认值参数
  4.  
  5. # def chi( *food, a, b): # 可以传入任意的位置参数# print("我要吃", food) # 动态参数接收到的是tuple类型的数据## chi("盖浇饭", "辣条", "面条")# def func(a, b, c, *args, d = 5):# print(a, b, c, d, args)## func(1,2,3)# func(1,2,3,4,5,6,7, d ="马大哈")
  6.  
  7. # def chi(*food):# print("我要吃", food)
  8.  
  9. # 写函数. 给函数传递任意个整数. 返回这些数的和# def he(*n):# sum = 0# for e in n:# sum += e# return sum# print(he(5))
  10.  
  11. # 动态接收关键字参数# *位置参数# **关键字参数# def func(**food): # **food动态接收关键字参数# print(food) # 接收到的是字典## func(good_food="盖浇饭", bad_food="辣条", drink="冰封")
  12.  
  13. # 关键字参数一定在位置参数后面# 位置参数 > *args > 默认值 > **kwargs
  14.  
  15. # 这个函数可以接收所有的参数(无敌的)# def func(*args, **kwargs):# print(args)# print(kwargs)# func(1, 2, 5, 6, name="taibai",age=18, sex="不详")
  16.  
  17. # 把列表中的每一个元素作为参数, 传递给函数. 一次都传过去
  18.  
  19. # def func(*args, **kwargs): # *表示聚合,所有的位置参数, 聚合成元组 **聚合成字典# print(args)# print(kwargs)### # lst = ["马虎疼", "大洋哥", "小花生", "毛尖妹妹"]# # func(*lst) # 实参, 打散, 迭代产生的## dic = {"name":"太白", "alex":"wuse"}# func(**dic) # 把字典打散. 以key=value形式进行传参
  20.  
  21. # def func(a, b):# """# 计算a+b的和, 返回一个数# :param a: 第一个数# :param b: 第二个数# :return: 返回计算之后的和# """# return a + b
  22.  
  23. # 定义函数# def 函数名(形参): 1.位置参数, 2, *args, 3.默认值参数, 4. **kwargs# 函数体 return 返回值# 函数名(实参) 1. 位置参数. 2.关键字参数. 3. 混合参数,
  1. 2. 命名空间和作用域 命名空间: 1. 内置命名空间: python解释内部运行时的变量函数 2. 全局命名空间: 我们在py文件中直接声明出来的变量,函数 3. 局部命名空间: 在函数内部声明的变量和函数. 作用域: 1.全局作用域:内置+全局 2.局部作用域:局部 globals() 查看全局作用域中的名字 locals() 查看当前作用域中的名字例
  1. # a = "123" # 全局# b = 36 # 全局# def func(): # 全局# c = "马化腾" # 局部## def func2():# print(c)
  2.  
  3. a = 10def func(): a = 20 print(a) # 就近原则 print(globals()) # globals() 获取到全局作用域(内置,全局)中的所有名字 print(locals()) # locals() 查看当前作用域中的所有名字func()
  1. 3. globalnonlocal global: 把全局变量拿到局部来用. nonlocal: 把离他最近的一层的变量拿过来.不会找全局例
  1. # def func():# global a # a 不再是局部变量. 是全局变量# a = 30 # 把全局中的a重新赋值成30# print(a)# func()# print(a)
  2.  
  3. # a = 10# def func1():## def func2():# nonlocal a # 找局部作用域中 离他最近的那个变量引入进来# a = 20# print(a)# func2()# print(a)# func1()4.函数的嵌套例
  1. # def chi():# print("我要吃")## print(chi())
  2.  
  3. # def func1():# print("哈哈")## def func2():# func1()# print("呵呵")# func1()# func2()
  4.  
  5. # def func1():# print("呵呵")# def func2():# print("哈哈")# func2()# print("吼吼")# func1() #
  6.  
  7. def func1(): print("赵") def func2(): print("钱") def func3(): print("孙") print("李") def func4(): print("哈哈") func2() print("周") func2()func1()
  1.  

动态参数(*args,**kwargs),命名空间和作用域,global和nonlocal,函数的嵌套的更多相关文章

  1. python之动态参数 *args,**kwargs和命名空间

    一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args ...

  2. python之动态参数 *args,**kwargs(聚合,打散--转载

    转自https://www.cnblogs.com/ellisonzhang/p/10243122.html 一.函数的动态参数 *args,**kwargs, 形参的顺序 1.你的函数,为了拓展,对 ...

  3. python之动态参数 *args,**kwargs(聚合,打散)

    一.函数的动态参数 *args,**kwargs, 形参的顺序1.你的函数,为了拓展,对于传入的实参数量应该是不固定,所以就需要用到万能参数,动态参数,*args, **kwargs 1,*args  ...

  4. 函数动态参数 *args **kwargs

    def f1(*args,**kwargs): print(args,type(args)) print(kwargs,type(kwargs))li = [11,22,33]dic = {'k1': ...

  5. Python_动态参数、名称空间、作用域、作用域链、加载顺序、函数的嵌套、global、nonlocal

    1.动态参数 当实参数量与形参数量相等时,参数传递正常. def func1(a, b, c): pass func1(1, 2, 3) 当实参数量与形参数量不相等时,则会报错. def func1( ...

  6. python --- 10 *args **kwargs 命名空间 作用域 函数的嵌套

    函数进阶 1.   "*"  和  "**" ① 在形参位置时   都是聚合的作用 *args    位置参数→元组 **kwargs   关键字参数→字典 混 ...

  7. python之路---10 *args **kwargs 命名空间 作用域 函数的嵌套

    二十八.函数进阶 1.   "*"  和  "**" ① 在形参位置时   都是聚合的作用 *args    位置参数→元组 **kwargs   关键字参数→ ...

  8. python可变参数*args, **kwargs

    python可变参数*args, **kwargs def foo(* args, ** kwargs): print ' args = ',  args print ' kwargs = ',  k ...

  9. python基础学习Day10 函数形参的动态参数、*args **kwargs 命名空间 global 与 nonlocal

    一.函数形参的动态参数 原因:为了拓展,对于实参数量不固定,故需要万能参数,即动态参数, *args   **kwargs # def sum1(*args): # 在函数定义时,在*位置参数,聚合. ...

随机推荐

  1. secureCRT 设置证书免密登陆

    1 第一步 2 第二步 3 第三步 4 第4 步 ,然后选择你的 私钥文件

  2. @RequestMapping、@Responsebody、@RequestBody和@PathVariable详解(转)

    一.预备知识:@RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. @Requ ...

  3. DelphiXE7 Datasnap TDSClientCallbackChannelManager内部实现初探

    回调的原理很简单,开一个线程(为了区别其它线程,先将此线程命名为“通道线程”),注册一个“轻量”的回调,然后此线程(通道线程)等服务器返回信息(回调),服务器有信息返回时,通道线程再开个线程执行用户注 ...

  4. Spring Cloud(Dalston.SR5)--Hystrix 断路器

    Spring Cloud 对 Hystrix 进行了封装,使用 Hystrix 是通过 @HystrixCommand 注解来使用的,被 @HystrixCommand 注解标注的方法,会使用 Asp ...

  5. SQL中varchar和nvarchar有什么区别

    varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节. nvar ...

  6. Android的路径信息[转]

    Delphi早就把IO相关的都提取到System.IoUtils单元中了. 路径操作就使用TPath的方法都很方便.usesSystem.IoUtilsTPath.GetTempPath//临时目录T ...

  7. 黄聪:安装cnpm替代默认的npm

    使用cnpm替代默认的npm: npm install -g cnpm --registry=https://registry.npm.taobao.org

  8. 运行startup.bat的启动过程

    一.前言 一般启动tomcat都是找到bin目录下的startup.bat(windows)下或者startup.sh(linux下),所以要研究tomcat的启动,startup脚本是避不开的.那么 ...

  9. 【事务隔离级别】数据库事务隔离级别-UNDERSTANDING ISOLATION LEVELS

    参考链接:ISOLATION LEVELS ISOLATION LEVELS In a database system, concurrent transactions are processed i ...

  10. Ubuntu 14.10 下Hadoop FTP文件上传配置

    最近老板提出一个需求,要用Hadoop机群管理生物数据,并且生物数据很多动辄几十G,几百G,所以需要将这些数据传到HDFS中,在此之前搭建了HUE用来图形化截面管理HDFS数据,但是有个问题,上面使用 ...