一、默认参数的坑,如果你的默认参数指向的是可变的数据类型,那么你无论调用多少次这个默认参数,都是同一个。



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错误。

最新文章

  1. 用Windows PowerShell 控制管理 Microsoft Office 365
  2. 带你学C,带你飞——入门
  3. AP_应付税务预扣税Withholding Tax中付款时产生预扣税(案例)
  4. (转载)Linux启动过程详解
  5. Jquery的attr属性
  6. ie6下常见的bug 调整页面兼容性
  7. [USACO08NOV]奶牛混合起来Mixed Up Cows
  8. 【Spring】的【bean】管理(XML配置文件)
  9. ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范
  10. 1. [mmc subsystem] 概念与框架
  11. kafka单机安装和启动
  12. Eclipse:An error has occurred. See error log for more details. java.lang.NullPointerException
  13. ISP PIPLINE (十五) AF
  14. 机智的造假->sql给Echart提供数据
  15. 【转载】pycharm破解,可使用到2099年.pycharm版本 pycharm-professional-2016.3.1
  16. How to enable usb on vbox
  17. Jquery ajax load(),get(),post()
  18. java-抽象类的成员特点
  19. SpringMVC验证框架Validation特殊用法
  20. python traceback

热门文章

  1. AlexeyAB DarkNet YOLOv3框架解析与应用实践(五)
  2. BEP 7:CUDA外部内存管理插件(下)
  3. 用CLion实现本地方法并给java调用
  4. 并发王者课-铂金2:豁然开朗-“晦涩难懂”的ReadWriteLock竟如此妙不可言
  5. 谷歌:python速成课程笔记
  6. sql server数据库性能优化之2-避免使用CTE公用表达式的递归【by zhang502219048】
  7. 终于放弃了单调的swagger-ui了,选择了这款神器—knife4j
  8. 【题解】T749 localmaxima
  9. 《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)
  10. JavaScript与服务端进行数据交互的方式