Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器
Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器
一丶关键字:global,nonlocal
global 声明全局变量:
1. 可以在局部作用域声明一个全局变量
2. 可以修改全局变量
# 解释器认为: 如果你在局部作用域对一个变量进行修改,局部作用域已经定义了好这个变量
# 异常:
# UnboundLocalError: local variable 'count' referenced before assignment
####相当于局部声明的变量,剪切到全局
count=0
print(locals()) # count:0
def func():
global count #定义成全局变量
count+=1 # 此处由于 要修改count的值, 现在函数内没有定义count的变量, 如果想要修改全局变量count 需要global声明一下
print(locals()) # 查看当前(现在就是局部空间)空间的变量和值, 没count变量
func()
print(locals()) # 查看当前(现在就是全局空间)空间的变量和值 ,count:1
nonlocal 局部作用域如果想对父级作用域的变量(python3x新加的功能):
1.可以对父级别作用域的变量进行修改,并且在当前作用域创建
2.不能操作全局作用域
####复制 , 共用一块内存地址
def func():
count=0 #局部变量
def inner():
nonlocal count #inner函数内 修改 count 变量, 需要nonlocal声明
count+=3
print(count)
print(id(count)) #id() 查看这个inene函数中count变的内存地址 -->1952940208(内存地址)
print(locals()) #查看当前作用域中的变量和值 {'count': 3}
inner()
print(locals()) #{'inner':<function func.<locals>.inner at 0x00000140E1ABBD90>, 'count': 3}
print(id(count)) #id() 查看这个func函数中count变的内存地址 1952940208(内存地址)
func()
二丶形参中---默认参数的坑
###当你的默认参数的数据类型是可变的数据类型时 千万注意,使用的是同一个可变类型数据的内存地址 so看代码
Python进阶(三)----函数名,作用域,名称空间,f-string,可迭代对象,迭代器的更多相关文章
- Python进阶(二)----函数参数,作用域
Python进阶(二)----函数参数,作用域 一丶形参角度:*args,动态位置传参,**kwargs,动态关键字传参 *args: 动态位置参数. 在函数定义时, * 将实参角度的位置参数聚合 ...
- Python入门之函数的嵌套/名称空间/作用域/函数对象/闭包函数
本篇目录: 一.函数嵌套 二.函数名称空间与作用域 三.函数对象 四.闭包函数 ============================================================ ...
- Python记录9:函数4:名称空间作用域+闭包函数+装饰器
''' 一: 名称空间namespaces 名称空间就是存放名字与值绑定关系的内存空间 二: 名称空间分为三种 内置名称空间: 1. 特点: 存放是python解释器自 ...
- Python之函数对象、函数嵌套、名称空间与作用域、闭包函数、装饰器
目录 一 函数对象 二 函数的嵌套 三 名称空间和作用域 四 闭合函数 五 装饰器 一.函数对象 1.函数是第一类对象 #第一类对象的特性:# 可以被引用 # 可以当做参数传递 # 返回值是函数 # ...
- Python--高阶函数、函数嵌套、名称空间及变量作用域、闭包、装饰器
1.高阶函数(map/reduce/filter) 高阶函数是指函数的参数可以是函数 这篇总结几个常用的高阶函数:map/reduce/filter map函数.reduce函数.filter函数都是 ...
- Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global以及nolocal的用法
Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global以及nolocal的用法 目录 Python函数02/函数的动态参数/函数的注释/名称空间/函数的嵌套/global ...
- python自动化day4-函数嵌套、名称空间、作用域、装饰器
1.函数嵌套 #函数的镶套调用:在调用一个函数的过程中,又调用其他函数 def max2(x,y): if x > y: return x else: return y def max4(a,b ...
- python-函数的对象、函数嵌套、名称空间和作用域
目录 函数的对象 函数对象的四大功能 引用 当做参数传给一个函数 可以当做函数的返回值 可以当做容器类型的元素 函数的嵌套 函数的嵌套定义 函数的嵌套调用 名称空间与作用域 名称空间 内置名称空间 全 ...
- 【0809 | Day 12】可变长参数/函数的对象/函数的嵌套/名称空间与作用域
可变长参数 一.形参 位置形参 默认形参 二.实参 位置实参 关键字实参 三.可变长参数之* def func(name,pwd,*args): print('name:',name,'pwd:',p ...
随机推荐
- java.lang.IllegalStateException: No instances www.xxxx.com available for localhost
在SpringCloud的项目中,我们使用了自动配置的OAuth2RestTemplate,RestTemplate,但是在使用这些restTemplate的时候,url必须是服务的名称,如果要调用真 ...
- .Net Core 发送https请求/.net core 调用数字证书 使用X509Certificate2
.Net Core 发送https请求 .net core 调用数字证书 使用X509Certificate2 .NET下面的 .netfromwork使用和asp.net core下使用方式不一样 ...
- Mysql:设置主键自动增长起始值
比较郁闷昨天在家使用‘alter table `tablename` AUTO_INCREMENT=10000;’怎么也不起效,但是今天下班时间公司一同事尝试了一下就可以了.搞不明白自己当时是怎么操作 ...
- C++ 函数模板print
简述 在知乎看到文章leetcode 的奇怪 println vector 工具,于是手痒自己也写了一个print函数. 因为工作中没有需要写这种代码的情况,所以好久没有写这种代码了,还是挺怀念以前学 ...
- cmd大全
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本) 1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr ...
- LeetCode_475. Heaters
475. Heaters Easy Winter is coming! Your first job during the contest is to design a standard heater ...
- .NET HttpWebRequest应用
提供基于HttpWebRequest的请求的应用类,其中包含:get请求(带参或不带参).post请求.文件传输请求 方法的具体说明: PostHttp:post请求,支持三种提交模式:FROM.JS ...
- SpringBoot 为什么能够自动的注入一些常用的Bean ?
原文转载至:https://blog.csdn.net/qq_29941401/article/details/79605388 但是我一直没有搞懂druid是怎么自动配置的? 这个是properti ...
- 【python基础】easydict的安装与使用
前言 easydict允许以属性的方式访问dict类型,且可以递归地访问,使用起来比较方便. 安装 pip install easydict 使用 参考 1. easydict; 完
- [PHP] Laravel 体现 MySQL、Sqlite 数据的大小写敏感
要想实现数据比对的大小写敏感,方式是设置数据库字段类型 或者 字段校验字符集. MySQL 和 Sqlite 所支持的 collations 形式是不同的,你可以通过以下文档了解到. MySQL co ...