python函数的坑
2024-09-08 09:43:17
一、默认参数的坑,如果你的默认参数指向的是可变的数据类型,那么你无论调用多少次这个默认参数,都是同一个。
def func(a,list=[]):
list.append(a)
return list
print(func(10,),id(list)) #[10]
print(func(20,[]),id(list)) #20 [] 这里传了一个空列表,只要传了值,就用传值的。
print(func(100,),id(list)) #[10, 100] 没有传值,故沿用第一个空列表,而第一个空列表在第一次执行时加了一个10.
def func(a,list=[]):
list.append(a)
return list
ret1=func(10,)
ret2=func(20,[])
ret3=func(100,)
print(ret1) #[10, 100] 此组是执行完了func(100,)再打印,故ret1和ret3是同一个列表,值也相同。
print(ret2) # [20]
print(ret3) #[10, 100] 此组是执行完了func(100,)再打印,故ret1和ret3是同一个列表,值也相同。
二。global和nonlocal
# def wrapper():
# count=1
# def inner():
# nonlocal count #内层函数对外层函数的局部变量进行修改用nonlocal。
# count+=1
# print(count)
# inner()
# wrapper()
def func():
global name
name='太白金星'
print(name)
func()
print(name) #使用global在局部申明(创建)了一个全局变量,函数一执行,name就可以打印。
# 但如果注释掉上一句func(),则函数只是加载,没有执行,就会报name错误。
最新文章
- 用Windows PowerShell 控制管理 Microsoft Office 365
- 带你学C,带你飞——入门
- AP_应付税务预扣税Withholding Tax中付款时产生预扣税(案例)
- (转载)Linux启动过程详解
- Jquery的attr属性
- ie6下常见的bug 调整页面兼容性
- [USACO08NOV]奶牛混合起来Mixed Up Cows
- 【Spring】的【bean】管理(XML配置文件)
- ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范
- 1. [mmc subsystem] 概念与框架
- kafka单机安装和启动
- Eclipse:An error has occurred. See error log for more details. java.lang.NullPointerException
- ISP PIPLINE (十五) AF
- 机智的造假->;sql给Echart提供数据
- 【转载】pycharm破解,可使用到2099年.pycharm版本 pycharm-professional-2016.3.1
- How to enable usb on vbox
- Jquery ajax load(),get(),post()
- java-抽象类的成员特点
- SpringMVC验证框架Validation特殊用法
- python traceback
热门文章
- AlexeyAB DarkNet YOLOv3框架解析与应用实践(五)
- BEP 7:CUDA外部内存管理插件(下)
- 用CLion实现本地方法并给java调用
- 并发王者课-铂金2:豁然开朗-“晦涩难懂”的ReadWriteLock竟如此妙不可言
- 谷歌:python速成课程笔记
- sql server数据库性能优化之2-避免使用CTE公用表达式的递归【by zhang502219048】
- 终于放弃了单调的swagger-ui了,选择了这款神器—knife4j
- 【题解】T749 localmaxima
- 《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)
- JavaScript与服务端进行数据交互的方式