表达式与语句 局部变量与全局变量 exec与eval

Python有时需要动态的创造Python代码,然后将其作为语句执行  或  作为表达式计算。

exec用于执行存储在字符串中的Python代码。

1、 语句与表达式的区别:表达式是 某事,语句是 做某事(即告诉计算机做什么)。

比如2*2是4,而print 2*2是打印4。上述两句代码在交互式解释器中执行的结果是一样的,是因为解释器总是把所有表达式的值打印出来而已。而在程序中编写类似2*2这样的表达式并不会打印显示什么,编写print 2*2则会打印4。

语句与表达式的区别在赋值时更明显,因为语句不是表达式,所以没有值。如在交互式解释器中输入 x=2则不会打印任何东西,立刻出现新的提示符。虽然什么也没显现,但是有些东西已经发生变化如x的值现在变为3.这也是语句特性的一般定义:它们改变了事物。比如,赋值语句改变了变量,print语句改变了屏幕显示的内容。

2、 命名空间(作用域) 全局变量和局部变量

除了全局作用域外,每个函数会都会创建一个新的作用域。变量分为全局变量和局部变量,函数内的变量称为局部变量只在局部命名空间中起作用。

在函数内部读取全局变量一般来说不是问题,直接访问即可。但是,如果局部变量名或者参数的名字与全局变量名相同的话,就不能直接访问了,因为全局变量被局部变量给屏蔽了。如果确实需要的话,可以使用globals函数获取被屏蔽的全局变量值。(globals返回全局变量的字典,locals返回局部变量的值)。例如:有一个名为parameter的全局变量,那么在combine(parameter)函数内部访问全局变量时,因为与参数重名,必须使用globals()['parameter']获取。代码如下:

1 def combine(parameter):

2     print parameter+globals()['parameter']

3

4 #函数调用

5 parameter="hello"

6 combine("berry")

上面讲的是再函数内部读取全局变量的方法,不包括修改。如果要在函数内部修改全局变量,需要告知修改的值是全局变量,因为在函数内部将值赋予一个变量那么变量自动成为局部变量。通过global关键字来告诉Python函数内一个需要修改的变量是一个全局变量。代码如下:

view sourceprint?1 x=1

2 def change_global(n):

3     global x

4     x=x+1

www.2cto.com

3、执行字符串的语句  exec

如输入exec "print  'hello'"会打印出hello。(注意:Python 3.0中,exec是一个函数不是一个语句了,因此使用exec('字符串语句')的方式来调用)。

eval python定义变量,表达式与语句 局部变量与全局变量 exec与eval相关推荐

  1. Scala基础:定义变量和逻辑判断语句以及方法和函数

    定义变量和逻辑判断语句 package com.zy.scalaimport scala.collection.immutableobject ScalaDemo {def main(args: Ar ...

  2. python定义变量类型为数字_python 学习(四)- 变量类型

    一.变量的定义和使用 为什么需要变量?当然是通过变量来存储数据,而存储的数据类型可能是数字.字符串.字符等等,将这些数据存储在变量中,可以方便我们去使用,除了变量之外还有一个常量,区别就是,常量是不可 ...

  3. Python定义变量

    Python定义变量 1.什么是变量: 在Python中,变量的概念基本上和初中代数的方程变量是一致的.例如,对于方程式 y=x*x ,x就是变量.当x=2时,计算结果是4,当x=5时,计算结果是25 ...

  4. python定义变量参数_Python变量定义与使用

    前言 对于任何编程语言都存在对数据的处理,比如数字.字符串.字符等,我们可以直接使用数据,同时还可以将数据保存到变量中,方便以后使用.什么是变量?在任何语言里面都一样,可以把它看成是个小容器,专门用来 ...

  5. python定义变量并赋值_Python 变量类型及变量赋值

    在 Python 中,变量不一定占用内存变量.变量就像是对某一处内存的引用,可以通过变量访问到其所指向的内存中的值,并且可以让变量指向其他的内存.在 Python 中,变量不需要声明,但是使用变量之前 ...

  6. python定义变量并赋值_Python动态声明变量赋值代码实例

    这篇文章主要介绍了Python动态声明变量赋值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过exec().globals()和loca ...

  7. python 定义变量_用python解决动态的定义变量名(并给其赋值方法:大数据处理)...

    前言: 今天为大家带来的内容是:用python解决动态的定义变量名(并给其赋值方法:大数据处理)具有很好的参考价值,希望对大家有所帮助.喜欢本文内容的记得点赞转发收藏不迷路哦!!! 最近消费kafka ...

  8. python 定义变量_python-003-变量

    1.变量的定义 python中,在程序运行时,可以随着程序的运行更改的量成为变量. 简单理解: 变量就是用来临时存储数据的容器. 可以认为好比是 逛超市 买面条 使用购物车 装面条 变量 -> ...

  9. python定义变量_Python基础 变量的基本使用

    变量的基本使用 程序就是用来处理数据的,而变量就是用来存储数据的 目标 变量定义 变量的类型 变量的命名 01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 ...

最新文章

  1. IT职场常见疾病之“颈椎病”
  2. pycharm debug code -1073741819
  3. android 6.0 logcat机制(三)logd处理请求log
  4. 开多个bitset和bitset的基本使用
  5. Sonar 质量扫描的输出日志--对应源码的跟踪(二){sonar engine源码}
  6. java der pem_JAVA解析各种编码密钥对(DER、PEM、openssh公钥)
  7. Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步
  8. 多线程快速入门 123
  9. linux远程访问服务器
  10. web平台安装程序_来了来了!开源车间调度平台正式上线!
  11. 那些远去的人,那段伟大的历史【ZZ】
  12. 这款智能手机比 iPhone 早13年,你猜多少钱?
  13. linux qt程序向windows移植失败记.
  14. 漏洞补丁在线更新失败或软件安装提示ERROR的解决方案
  15. 小米抢购神器-开放源码
  16. Yolo系列 | Yolov4v5的模型结构与正负样本匹配
  17. 回归预测 | MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神经网络多输入单输出回归预测
  18. input值不可变、隐藏input(表单隐藏域)
  19. Linux配置PHP环境
  20. 使用Java语言开发微信公众平台(六)

热门文章

  1. 信息学奥林匹克c语言提高组,全国NOIP信息学奥林匹克竞赛提高组哪家强?
  2. pring bean生命周期详解
  3. 腾然教育MCN-创作者签约须知
  4. 基于ambari-NameNode开启高可用(HA)
  5. 联想主板9针开关接线图_2020新款联想笔记本打开盖子自动开机的问题
  6. 天线的原理、分类及要求
  7. 比尔·盖茨:软件让数字生活变得更简便有效
  8. Linux od命令
  9. 航空公司为什么要信息化、数字化转型?
  10. 学什么计算机从事CAD,学cad需要什么基础?