Python默认参数的陷阱
一:内置函数
- globals()
- locals()
1.返回的是字典,字典里面的键值对:全局作用域的全部内容
print(globals())
2.返回的是字典,字典里面的键值对:当前作用域的全部内容
print(locals())
二:默认参数的陷阱
1.默认参数:没传值,可变数据类型在内存中是同一个
def func(name, alist=[]):
alist.append(name)
renturn alist
r1 = fun('whj')
print(r1)
>>>['whj']
r2 = fun('xhl')
print(r2)
>>>['whj','xhl']
2.默认参数:传值
def func(a, alist=[]):
list.append(a)
renturn alist
print(func(10))
>>>[10]
print(func(20, []))
>>>[20]
print(func(100))
>>>[10, 100]
3.默认参数执行顺序
def func(a, alist=[]):
list.append(a)
renturn alist
r1 = func(10)
r2 = func(20, [])
r3 = func(100)
print(r1)
>>>[10, 100]
print(r2)
>>>[20]
print(r3)
>>>[10, 100]
三:局部变量与全局变量
1.在函数中,如果你定义了一个变量,但是在定义这个变量之前对其引用了,
那么解释器认为是语法问题,应该在使用前定义
count = 1
def func():
print(count)
count = 3 ×
func()
2.global
在局部作用域声明一个全局变量
3.nonlocal
不允许操作全局变量
内层函数对外层函数的局部变量进行修改(嵌套函数)
Python默认参数的陷阱的更多相关文章
- 笔记:Python 默认参数必须指向不变对象
笔记:Python 默认参数必须指向不变对象 学习记录 >>> def add_end(L=[]): L.append('END') return L >>> ad ...
- Python中list作为默认参数的陷阱
在Python中,作为默认参数的一定要是不可变对象,如果是可变对象,就会出现问题,稍不注意,就会调入陷阱,尤其是初学者,比如我(┬_┬). 我们来看一个例子. def add(L=[]): L.app ...
- python默认参数陷阱
对于学习python的人都有这样的困惑 def foo(a=[]): a.append(5) return a Python新手希望这个函数总是返回一个只包含一个元素的列表:[5].结果却非常不同,而 ...
- Python函数默认参数的陷阱
默认参数实际上只有一个值 代码1 def func(l = 1): l += 1 print(l) func() func() func() 代码2 lst = [] def func(a,l = l ...
- Python - 默认参数传参陷阱
def extend_list(v, li=[]): li.append(v) return li list1 = extend_list(10) print(list1) # [10] list2 ...
- Python默认参数的坑
默认参数的坑 定义一个函数,传入一个list,添加一个end再返回 def add_end(L=[]): L.append('END') return L 正常调用时,结果似乎不错 print add ...
- Python 默认参数
定义默认参数 定义函数的时候,还可以有默认参数. 例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数: >>> int('123') ...
- python默认参数不能定义为可变对象类型
python的默认参数只会在函数定义时被确定,而不是每次调用时重新确定,所以,一旦在函数中修改了默认参数,则在随后的调用中都会生效 由于这个特性,在定义函数时,如果默认参数使用可变的对象类型,如空列表 ...
- Python默认参数
在python函数中, 可以使用如下方式声明并初始化参数 def to_smash(total_candies, n_friends=3): """Return the ...
随机推荐
- Dicom文件基本操作
官方文档 网址:https://github.com/fo-dicom/fo-dicom托管在github上. 官方例子 Dicom文件基本操作 var file = DicomFile.Open(@ ...
- 一个startforresult的例子
https://blog.csdn.net/qq_32521313/article/details/52451364
- Alink漫谈(十四) :多层感知机 之 总体架构
Alink漫谈(十四) :多层感知机 之 总体架构 目录 Alink漫谈(十四) :多层感知机 之 总体架构 0x00 摘要 0x01 背景概念 1.1 前馈神经网络 1.2 反向传播 1.3 代价函 ...
- JWT生成Token做登录校验
一.JWT的优点 1.服务端不需要保存传统会话信息,没有跨域传输问题,减小服务器开销. 2.jwt构成简单,占用很少的字节,便于传输. 3.json格式通用,不同语言之间都可以使用. 二.使用JWT进 ...
- Spring+hibernate+JSP实现Piano的数据库操作---3.Piano实体类
package com.entity; import org.springframework.stereotype.Component; import javax.persistence.*; @Co ...
- 一文带你学习DWS数据库用户权限设计与管理
前言 本文将介绍DWS基于RBAC(Role-Based Access Control,基于角色的访问控制)的数据库用户权限管理.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成 ...
- Linux图形界面与命令行界面以及用户之间的转换
刚刚不小心进入了命令行界面,,,,,, ALT SHIFE F5 咋回去的呢 sudo startx 但是回去以后默认是root ,,,,,, 所以切换用户 su username//用户名 就可以切 ...
- 图解 JVM 核心知识点(面试版)
一.基本概念 1.1 OpenJDK 自 1996 年 JDK 1.0 发布以来,Sun 公司在大版本上发行了 JDK 1.1.JDK 1.2.JDK 1.3.JDK 1.4.JDK 5,JDK 6 ...
- numpy第三方库
# 导入numpy 并赋予别名 np import numpy as np # 创建数组的常用的几种方式(列表,元组,range,arange,linspace(创建的是等差数组),zeros(全为 ...
- PHP zip_entry_name() 函数
定义和用法 zip_entry_name() 函数返回 zip 档案的名称.高佣联盟 www.cgewang.com 语法 zip_entry_name(zip_entry) 参数 描述 zip_en ...