主要内容:

1、函数参数 ----动态传参

2、名称空间与作用域

3、函数的嵌套

4、global,nonlocal关键字

一、函数参数 ------动态传参

形参的第三种:动态传参

动态传参分为两种:

1、动态接受位置参数,在参数位置编写*表示接受任意内容,多个参数传递进去,接收到的是列表。

动态传参的时候要注意,动态参数必须在位置参数的后面。

这个程序运行会报错,因为前面传递进去的所有位置参数都被*food接收了,a和b永远接收不到参数。

关于默认值参数:

我们发现,默认值参数写在动态参数前面,默认值参数只有一种可能生效。

这个时候我们发现所有的默认值都生效了,如果不给出关键字传参,那么默认值是永远生效的。

2、动态接收关键字参数

在python中使用**来接受动态关键字参数。

这时候接收的是一个字典。

最终顺序:

位置参数 > *args  > 默认值参数  >**kwargs

这四种参数可以任意的进行使用

动态参数的另一种传参方式:

在实参位置上给一个序列,列表,可迭代对象前面加个*表示把这个序列打散。如果是字典也可以打散,不过需要两个*。

函数的注释:

def func(a,b):
'''
这个函数是用来计算a和b的和
:param a: 第一个数据
:param b: 第二个数据
:return: 返回的是两个数的和
'''
return a + b
print(func(5,6))
print(func.__doc__) #document文档

二、命名空间与作用域

我们给存放名字和值得关系的空间起一个名字:命名空间。我们的变量在存储的时候就是存储在这片空间中的。

命名空间分类:

1、全局命名空间------>函数外声明的变量

2、局部命名空间------->函数中声明的变量

3、内置命名空间-------->python解释器为我们提供的名字,list,tuple,str,int

作用域:

1、全局作用域:全局命名空间+内置命名空间

2、局部作用域:局部命名空间

我们可以通过globals()函数查看全局作用域中的内容,也可以通过locals()来查看局部作用域中的变量和函数信息。

三、函数的嵌套

a = 1
def fun_1():
a = 2
def fun_2():
nonlocal a
a = 3
def fun_3():
a = 4
print(a)
print(a)
fun_3()
print(a)
print(a)
fun_2()
print(a)
print(a)
fun_1()
print(a) 结果 1 2 3 4 3 3 1

四、关键字global和nonlocal

global a    1、可以把全局中的内容引入到函数内部

2、在全局创建一个a变量

nonlocal     表示在局部作用域中,寻找外层函数中离他最近的那个变量

2018.8.9 python中的动态传参与命名空间的更多相关文章

  1. python记录_day10 动态传参 命名空间 作用域

    一.动态传参 动态传参用到 *args 和 **kwargs ,*号表示接收位置参数,args是参数名:**表示接收关键字参数,kwargs是参数名 def chi(*food): print(foo ...

  2. MaxPlus WStr Python 中的字符串传递给 MaxPlus

    MaxPlus WStr Python 中的字符串传递给 MaxPlus 在 MaxPlus 中,很多方法的参数使用的字符串的类是 WStr,所以在 Python 中,我们传递字符串的时候,就要把 P ...

  3. Python中的动态类

    Python中的动态类 有这样一个需求,我有SegmentReader.PostagReader.ConllReader这三个Reader,他们都继承于一个Reader类.在程序运行中,由用户通过se ...

  4. python之路--动态传参,作用域,函数嵌套

    一 . 动态传参(重点)  * ,  ** * 与 ** * 在形参位置. * 表示不定参数, 接收的是位置参数 接收到的位置参数的动态传参: 都是元组 def eat(*food): # 在形参这里 ...

  5. python函数的动态传参.作用域与命名空间

    一.动态传参1.*表示动态传参. 可以接受所有的位置参数传参的时候自动的把实参打包成元组 交给形参 def chi(*food): print(food) chi() # 动态传参可以不传参数 chi ...

  6. Python中的引用传参

    Python中函数参数是引用传递(注意不是值传递).对于不可变类型,因变量不能修改,所以运算不会影响到变量自身:而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量. 引用传参一: >& ...

  7. python中传值和传地址问题

    在python中,还没有对这个知识点有一个详细的定义,很模糊的说明了,通过下面代码,可以观察出来,什么时候传的是值,什么时候传的是地址 有时候会发现自己的数据发生变化,可能就是这个原因,python的 ...

  8. 2018.8.15 python 中的sorted()、filter()、map()函数

    主要内容: 1.lambda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 一. lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 ...

  9. python中给函数传参是传值还是传引用

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

随机推荐

  1. @Data注解getset不起作用

    在idea的setting安装Lombok插件,重启idea

  2. 教老婆学Linux运维(二)Linux常用命令指南【上】

    目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...

  3. [scrapy-redis] install and configure scrapy-redis on CentOS 7 (1)

    0. 安装依赖 yum install -y zlib zlib-devel openssl openssl-devel bzip2 bzip2-devel sqlite-devel gcc wget ...

  4. 【Java】 生成32位随机字符编号

    /** * 生成32位编码 * @return string */ public static String getUUID(){ String uuid = UUID.randomUUID().to ...

  5. Linux入门(服务)

    LInux入门之 服务 服务介绍 常驻在内存中的程序,且可以提供一些系统或网络功能,那就是服务.比如: apache提供web服务 ftp提供文件下载上传服务 ssh提供了远程连接服务 防火墙提供了安 ...

  6. python编程基础之十

    分支条件: 单一分支条件:if 条件 : 条件真运行... 双分支条件:if 条件 : 条件真运行else: 条件假运行... 多分支条件:if 条件1 : 条件1真运行elif 条件2 : 条件1假 ...

  7. Selenium+PhantomJS使用时报错原因

    运行下面代码:'''PhantomJS运用''' from selenium import webdriverimport time # 通过keys模拟键盘from selenium.webdriv ...

  8. icon font在sketch中的下载与安装

    icon font的下载安装: 1.首先打开sketch--插件--管理插件--获取插件--搜索 icon font--点击icon font--clone or download--下载的是一个sk ...

  9. C# 添加、读取、删除Excel文档属性

    在文档属性中,可以设置诸多关于文档的信息,如创建时间.作者.单位.类别.关键词.备注等摘要信息以及一些自定义的文档属性.下面将通过C#程序来演示如何设置,同时对文档内的已有信息,也可以实现读取或删除等 ...

  10. Vue成员获取

    0828自我总结 Vue成员获取 一.vue中data的获取 1.获取data里面的某个变量 $data.msg也可以简写成msg 2.获取data全部内容 $data 二.获取vue中vue挂钩的对 ...