1、函数动态传参

 *args : 将所有的位置参数打包成一个元组的形式.

 **kwargs : 将所有的关键字参数打包成一个字典的形式.

 形参的接收顺序:    位置参数 > *args > 默认值参数> **kwargs.

2、命名空间

 命名空间: 在python解释器执行后, 内存中开辟的一块用于存放变量名和值对应关系的一个空间.

 分类:

      内置命名空间: python自己提供的一些方法, print(), int()...

      全局命名空间: .py文件中, 函数外声明的变量等...

      局部命名空间: 函数或类中声明的变量...

 命名空间的加载顺序:  内置命名空间  >> 全局命名空间  >> 局部命名空间

         取值顺序: 局部命名空间  >>  全局命名空间  >> 内置命名空间

3、作用域

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

 局部作用域: 仅在函数或类内部的作用域

4、global , nonlocal

 global: 声明全局变量. 声明不使用局部作用域中的变量, 直接用全局作用域中的变量.

 a = 10
def outer():
a = 100
def inner():
global a # 不是改变inner()外部的a,而是改变全局作用域中的a(即最外边的a)
a = 200
inner()
outer()
print(a) #

global

 nonlocal: 声明全局内某层函数外的局部变量.  声明在局部作用域中,调用父级命名空间中的变量.

 a = 10
def outer():
a = 100
print("nonlocal之前",a) #
def inner():
nonlocal a # 仅改变inner()父级的局部作用域.
a = 200
inner()
print("nonlocal之后",a) #
outer()
print(a) #

nonlocal

  注意: nonlocal 不能声明调用最外层(即全局作用域)的变量, 会直接报错.

 a = 10
def outer():
def inner():
nonlocal a # 不能找到最外层(即全局作用域)的变量
a = 200
inner()
outer() # 会直接报错 : SyntaxError: no binding for nonlocal 'a' found

nonlocal

python摸爬滚打之day010----函数进阶的更多相关文章

  1. python学习日记(函数进阶)

    命名空间 内置命名空间 存放了python解释器为我们提供的名字:print,input...等等,他们都是我们熟悉的,拿过来就可以用的方法. 内置的名字在启动解释器(程序运行前)的时候被加载在内存里 ...

  2. python 基础篇 11 函数进阶----装饰器

    11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是 ...

  3. python 基础篇 10 函数进阶

    本节主要内容:1. 函数参数--动态传参2. 名称空间, 局部名称空间, 全局名称空间, 作⽤域, 加载顺序.3. 函数的嵌套4. gloabal, nonlocal关键字 ⼀. 函数参数--动态传参 ...

  4. Python初学者第二十二天 函数进阶(1)

    22day 1.函数命名空间: 2.函数作用域的查找顺序:LEGB locals->enclosing function ->globals ->_builtins_ a.local ...

  5. python基础学习之函数进阶【匿名函数、作用域关系、闭包、递归】

    匿名函数 lambda的用法: lambda x:x+1 解释,同等于以下函数 def test(x): return x+1 因为没有函数名,所以称为匿名函数 只适用于简易的逻辑,复杂逻辑无法实现 ...

  6. Python之路----生成器函数进阶

    def generator(): print(123) yield 1 print(456) yield 2 g = generator() ret = g.__next__() print('*** ...

  7. 【python 3】 函数 进阶

    函数进阶 1.函数命名空间和作用域 命名空间一共分为三种: 全局命名空间 局部命名空间 内置命名空间 *内置命名空间中存放了python解释器为我们提供的名字:input , print , str ...

  8. python基础 (初识函数&函数进阶)

    函数基础部分 .什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...

  9. python基础之 初识函数&函数进阶

    函数基础部分 1.什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...

随机推荐

  1. MSSQL 2012 修改所有表的架构Schame

    ALTER SCHEMA [dbo] TRANSFER [sq_szswdjd].COM_Category ); declare csr1 cursor for select 'Name' = nam ...

  2. 【转】WPF自定义控件与样式(2)-自定义按钮FButton

    一.前言.效果图 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等 还是先看看效果图吧:   定义Button按钮名称叫FButton,主要是集成了 ...

  3. Dapper的基本使用,Insert、Update、Select、Delete

    简介 Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的.也就是说实体类都要自己写.它没有复杂的配置文件,一个单文 ...

  4. BackgroundWorker学习笔记

    1 简介 BackgroundWorker 类允许您在单独的专用线程上运行操作. 耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态. 如果您需要能进行响 ...

  5. 解决pycharm在ubuntu下搜狗输入法一直固定在左下角的问题

    1.缩放VMware,当ubuntu中出现下拉导航条时,点击左上角查看>立即适应客户机,然后在pycharm中打中文的时候不用全屏,就可以看到输入法显示的文字了. 2.目前没有发现搜狗输入法版本 ...

  6. M0 M4关于库函数的讲解(以时钟为例)

    #define CLK_PWRCON_PD_WAIT_CPU_Pos 8 #define CLK_PWRCON_PD_WAIT_CPU_Msk (1ul << CLK_PWRCON_PD_ ...

  7. 什么是web标准、可用性、可访问性

    前言:大家不难发现,只要是招聘UED相关的岗位,如前端开发工程师.交互设计师.用户研究员甚至视觉设计师,一般都对web标准.可用性和可访问性的理解有要求.那么到底什么是web标准.可用性.可访问性呢? ...

  8. css3整理--box-sizing

    box-sizing语法: box-sizing : content-box || border-box || inherit 参数取值: content-box:此值为其默认值,其让元素维持W3C的 ...

  9. C语言程序设计--文件操作

    前言 这里尝试与Python对别的方法来学习C语言的文件操作,毕竟我是Pythoner. 文件打开与关闭 Python #因为是和C语言比对,所以不使用with filename = "/e ...

  10. url自动补全index.php

    location / { index index.html index.htm index.php l.php; autoindex on; if (!-e $request_filename) { ...