# 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']

eval与exec的区别,以及变量的作用范围的更多相关文章

  1. python3的eval和exec的区别与联系

    eval: 可以把字符串里的字符转换为可执行代码,但只支持一行字符.可以返回执行后得到的值.如下: f = "3+6+9+8"s = eval(f)print(s)输出: &quo ...

  2. eval 与 exec, compile区别

    exec 不是表达式: python 2. x, 中的一个语句和 python 3. x. 中的一个函数它编译并立即计算一个字符串中包含的语句或者语句集. 例如: exec('print(5)') # ...

  3. Python中eval与exec用法的区别

    Python中eval,exec这两个函数有着相似的输入参数类型和执行功能,因此在用法上经常出现混淆,以至经常用错,程序易抛出错误.下面主要通过这两个函数的语法来阐述区别,并用例子来进一步说明. 首先 ...

  4. Python中的eval()、exec()及其相关函数

    刚好前些天有人提到eval()与exec()这两个函数,所以就翻了下Python的文档.这里就来简单说一下这两个函数以及与它们相关的几个函数,如globals().locals()和compile() ...

  5. 深度辨析 Python 的 eval() 与 exec()

    Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个. 大部分函数是我们经常使用的,例如 print().open ...

  6. [转]Python中的eval()、exec()及其相关函数

    Python中的eval().exec()及其相关函数   刚好前些天有人提到eval()与exec()这两个函数,所以就翻了下Python的文档.这里就来简单说一下这两个函数以及与它们相关的几个函数 ...

  7. 【转】Python中的eval()、exec()及其相关函数

    [转]Python中的eval().exec()及其相关函数 刚好前些天有人提到eval()与exec()这两个函数,所以就翻了下Python的文档.这里就来简单说一下这两个函数以及与它们相关的几个函 ...

  8. python内置函数 eval()、exec()以及complie()函数

    1.eval函数 eval() 函数用来执行一个字符串表达式,并返回表达式的值. eval(expression[, globals[, locals]]) 参数 expression -- 表达式. ...

  9. linux中fork, source和exec的区别

    转:linux中fork, source和exec的区别 shell的命令可以分为内部命令和外部命令. 内部命令是由特殊的文件格式.def实现的,如cd,ls等.而外部命令是通过系统调用或独立程序实现 ...

随机推荐

  1. 再谈mysql锁机制及原理—锁的诠释

    加锁是实现数据库并发控制的一个非常重要的技术.当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁.加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更 ...

  2. 看某视频开始做LINUX笔记的第一天

    LINUX系统对分区的基本要求: 1.最少要有一个根分区 / 分区,用来存放系统文件及程序.其大小至少在5GB以上. 2.要有一个 swap (交换)分区,它的作用相当与windows的虚拟内存,sw ...

  3. [转帖]流言终结者 —— “SQL Server 是Sybase的产品而不是微软的”

    流言终结者 —— “SQL Server 是Sybase的产品而不是微软的” https://www.cnblogs.com/xxxtech/archive/2011/12/30/2307859.ht ...

  4. robot-framework 利用evaluate关键字生成随机数

    robot-framework 利用evaluate关键字生成随机数 最近用RF(robot-framework简称)操作MangoDB,需要直接将数据写到数据库里,又不想每次写的数据完全相同,就想到 ...

  5. Python 入门 之 初识面向对象

    Python 入门 之 初识面向对象 1.初识面向对象编程 (核心--对象) (1)观察以下代码: # 面向过程编程 s = "alexdsb" count = 0 for i i ...

  6. Codeforces 1194D. 1-2-K Game

    传送门 先考虑只能走 $1,2$ 步的情况,设 $p[i]$ 表示当 $n=i$ 时先手是否必胜 自己手玩一下发现 $p$ 就是 $011011011...011$ 这样循环(下标从 $0$ 开始,其 ...

  7. jsp页面中使用 splitfn:split注意事项

    我们有一个 字段存储内容是  xxxx意见~~@~~是 在页面上需要分开显示,格式为 xxx意见 是 使用 ${fn:split(comments, '~~@~~')[1]} 来分割是发现出现@符文字 ...

  8. mybatis和spring的整合

    Mybatis与Spring的集成 1.配置Spring环境 创建maven工程 pom.xml导入依赖 <project xmlns="http://maven.apache.org ...

  9. weex 通用样式以及需要注意的问题

    一.说明 weex 对于 css 样式的支持是非常有限的,并且使用样式的时候,必须遵循 weex 定义的规则. 对于不遵循 weex 样式规则的代码,往往在 web 页面上有效,而在 native 环 ...

  10. React 长列表修改时避免全体渲染

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <script ...