python摸爬滚打之day010----函数进阶
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----函数进阶的更多相关文章
- python学习日记(函数进阶)
命名空间 内置命名空间 存放了python解释器为我们提供的名字:print,input...等等,他们都是我们熟悉的,拿过来就可以用的方法. 内置的名字在启动解释器(程序运行前)的时候被加载在内存里 ...
- python 基础篇 11 函数进阶----装饰器
11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是 ...
- python 基础篇 10 函数进阶
本节主要内容:1. 函数参数--动态传参2. 名称空间, 局部名称空间, 全局名称空间, 作⽤域, 加载顺序.3. 函数的嵌套4. gloabal, nonlocal关键字 ⼀. 函数参数--动态传参 ...
- Python初学者第二十二天 函数进阶(1)
22day 1.函数命名空间: 2.函数作用域的查找顺序:LEGB locals->enclosing function ->globals ->_builtins_ a.local ...
- python基础学习之函数进阶【匿名函数、作用域关系、闭包、递归】
匿名函数 lambda的用法: lambda x:x+1 解释,同等于以下函数 def test(x): return x+1 因为没有函数名,所以称为匿名函数 只适用于简易的逻辑,复杂逻辑无法实现 ...
- Python之路----生成器函数进阶
def generator(): print(123) yield 1 print(456) yield 2 g = generator() ret = g.__next__() print('*** ...
- 【python 3】 函数 进阶
函数进阶 1.函数命名空间和作用域 命名空间一共分为三种: 全局命名空间 局部命名空间 内置命名空间 *内置命名空间中存放了python解释器为我们提供的名字:input , print , str ...
- python基础 (初识函数&函数进阶)
函数基础部分 .什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...
- python基础之 初识函数&函数进阶
函数基础部分 1.什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...
随机推荐
- Java编程的逻辑 (77) - 异步任务执行服务
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- Intelij U
1.https://link.jianshu.com/?t=http://idea.lanyus.com/,下载JetbrainsCrack-2.6.2.jar,放到bin目录 2.编辑bin目录下面 ...
- Login failed for user 'IIS APPPOOL\ASP.NET v4.0'
Looks like it's failing trying to open a connection to SQL Server. You need to add a login to SQL Se ...
- “failed to excute script xxx” PyInstaller 打包python程序为exe文件过程错误
在使用PyInstaller打包python程序,打包命令为: pyinstaller -F -w -i manage.ico yourpyfile.py 顺便说一下几个参数的作用 -F:是直接生成单 ...
- duilib进阶教程 -- TreeView控件的不足 (7)
上一个教程中,虽然播放列表的框架和迅雷一样了,但是字体大小.文字居中还没有解决.如果是刚学duilib,搞定这个可不容易,因为在有了入门教程的指导后,很容易就想到去看[属性列表.XML],但是当你试了 ...
- [Tensorflow] Practice - The Tensorflow Way
该系列主要是<Tensorflow 实战Google深度学习框架 >阅读笔记:有了Cookbook的热身后,以这本书作为基础形成个人知识体系. Ref: [Tensorflow] Cook ...
- [Tensorflow] Cookbook - Retraining Existing CNNs models - Inception Model
From: https://github.com/jcjohnson/cnn-benchmarks#alexnet 先大概了解模型,再看如果加载pre-training weight. 关于retai ...
- IntelliJ IDE破解
1.购买正版用户 2.激活码 一:下载以下jar,放到 bin 破解补丁无需使用注册码,下载地址 idea14 keygen下载地址 二:在下面两个文件中加入-javaagent:E:\IDEA\In ...
- 理解syslinux,SYSLINUX和PXELINUX
在研究网络装机的过程中,菜菜地被Syslinux.SYSLINUX和PXELINUX这些定义折磨了一下 它们有什么区别和联系?为什么配置PXELINUX要安装的是Syslinux而不是Pxelinux ...
- http方式访问svn
接下来做一下svn的http访问 首先,说一下,svn的http访问时依赖apache的dav_svn模块,然后赋予www-data访问权限,进行版本控制 我的服务器环境Ubuntu16.04 准备工 ...