eval与exec的区别,以及变量的作用范围
2024-09-07 06:34:45
# eval与exec的区别:eval 有返回值,而 exec没有返回值
# 这两个函数都是执行python语句,注意:里面传的是字符串的格式
a = eval('1+2')
a # 这里a有值
3 b = exec('1+2')
b # 这里b没有值 def printstr():
print('hello word')
return 1 eval('printstr()')
hello word
1 #可以返回参数 exec('printstr()')
hello word
# 这里就没有返回
# 变量的作用范围
参数为不可变的,对外部的变量就没影响
参数为可变的,对外部的变量就影响
a = 100
def func(a):
a+=1
return a
func(a)
101
a # a的值并没有改变
100 list1 = []
def add(list1):
list1.append(1)
return list1 add(list1)
[1]
list1 # 改变了
[1]
# 函数默认参数“默认参数必须指向 不变对象!
>>> def add_end(L=[]):
... L.append('END')
... return L
... >>> print(add_end([1,2,3]))
[1, 2, 3, 'END']
>>> print(add_end(['x','y','z']))
['x', 'y', 'z', 'END']
>>> print(add_end())
['END']
>>> print(add_end())
['END', 'END']
>>> print(add_end()) # 这是默认参数为可变对象导致的,因为可以变对象参数的作用范围是全局的
['END', 'END', 'END'] #修改方法 >>> def add_end(L=None):
... if L==None:
... L= []
... L.append('END')
... return L
...
>>> print(add_end([1,2,3]))
[1, 2, 3, 'END']
>>> print(add_end(['x','y','z']))
['x', 'y', 'z', 'END']
>>> print(add_end())
['END']
>>> print(add_end())
['END']
>>> print(add_end())
['END']
最新文章
- Windows 10 技术预览版9926 “未知源”引起系统休眠后自启的解决办法
- percona-toolkit 之 【pt-online-schema-change】说明
- 适配布局-ios
- uva 11357 Matches
- thinkjs——修改where默认条件为or
- 第五周&;第六周
- [转]Asp.Net MVC 扩展联想控件
- bzoj 2242 [SDOI2011]计算器(数论知识)
- (转载)PHP 提示和技巧
- linux用户管理最常用的三个文件说明(不完整版)
- iOS核心应用对象
- x264中的帧类型、条带类型、数据分区(data partition)
- 6、50道JAVA基础编程练习题跟答案
- Java 六种异常处理的陋习(转)
- Openresty 数据共享API.Data Sharing within an Nginx Worker
- Java之继承深刻理解
- Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现
- Docker for windows : 安装Redis
- 初学python之路-day05
- Linux的命名空间详解--Linux进程的管理与调度(二)【转】