Python--pass、del、exec、eval

pass:

  表示什么都不做,可用作占位符

name = input("name":)
    if name == "shuai":
        # 待完成
        pass

  



del删除:

  对于不再使用的对象,Python会将其删除

内存回收:

  • 定义变量会占用内存空间,所以对于不用的变量需要回收掉
  • 什么是没用的变量?
  • 没用的变量就是没用变量名指向它
  • 一个值可以被多个变量名所指(这种绑定的关系官方称为:引用计数),当引用计数为0时,就意味着没用任何名字跟值建立绑定的关系,就视作垃圾,这就是需要回收的,python会自动将其回收,释放空间

查看引用计数:

  通过导入sys模块,使用getrefcount()方法查看

  这里"yuan"这个字符串对象有3个引用:x、y、getrefcount()

  注:getrefcount()也算做一个引用

内存地址:

   ID可以反映内存地址,使用id()查看

  • 变量的定义就会开辟内存空间,但是如下图,查看ID是一样的,这违背了原则
  • 这是python的优化机制,对于占用内存较小的值,就直接指向,不新开辟



exec:

  将字符串作为代码执行

exec("print(‘hello‘)")
# hello

  调用时如果提供一个参数,会污染命名空间,多数情况下要向他传递一个命名空间(存放变量名)

# 代码使用了sqrt,出错
from math import sqrt
exec("sqrt = 1")
print(sqrt(4))
# Traceback (most recent call last):
#   File "E:/Text/demo.py", line 6, in <module>
#     print(sqrt(4))
# TypeError: ‘int‘ object is not callable

# 添加第二个参数,一个字典,用作代码字符串的命名空间
from math import sqrt
d = {}
exec("sqrt = 1", d)
print(sqrt(4))
print(d["sqrt"])
# 2.0
# 1

# 字典d中添加了包含所有内置函数和值的字典__builtins__print(d)

  



eval:

  类似exec,用于计算用字符串表示的Python表达式的值,并返回结果(exec没有返回),同样可以提供命名空间

print(eval(input("输入计算表达式:")))
# 输入计算表达式:1 + 3 * 2
# 7

  

原文地址:https://www.cnblogs.com/Mr-chenshuai/p/10035578.html

时间: 11-28

Python--pass、del、exec、eval的相关文章

Python可执行对象&mdash;&mdash;exec、eval、compile

       Python提供的调用可执行对象的内建函数进行说明,涉及exec.eval.compile三个函数.exec语句用来执行存储在代码对象.字符串.文件中的Python语句,eval语句用来计算存储在代码对象或字符串中的有效的Python表达式,而compile语句则提供了字节编码的预编译. exec的使用 eval的使用        本函数是用来动态地执行一个表达式的字符串,或者compile函数编译出来的代码对象.参数expression是一个表达式字符串,或者表示编译出来代码对

exec、eval

python的exec.eval详解

Python自动化运维之5、内置函数

python3.x内置函数 一些例子:后期慢慢接触到再补充 # help() 详细查看某个类有那些方法或者方法的具体使用 >>> help(str) >>> help(str.strip) # dir() 快速查看某个类有那些方法或者方法的具体使用 >>> dir(str) >>> dir(str.strip) # int() 实例化数字类型,或将其他类型转换为数字类型,或各种进制转换为十进制 (1)实例化数字类型 >>&

Python基础- 类和对象(使用、继承、派生、组合、接口、多态、封装、property、staticmethod、classmethod、反射、slots、上下文管理协议、元类)

标签: python对象 2017-07-01 16:28 79人阅读 评论(0) 收藏 举报  分类: python(11)  版权声明:本文为广大朋友交流学习,如有纰漏望不吝赐教,若存在版权侵犯请及时与我联系 目录(?)[+] 一.初识类和对象 在python3中类型就是类 先定义类在产生相对应的对象,也就是现有了概念再有了实体 class Garen: camp = 'Demacia' def attack(self): print('attack') 1.如何使用类 在python3:

Python自动化运维之2、运算符与数据类型

python对象的相关术语: python程序中保存的所有数据都是围绕对象这个概念展开的: 程序中存储的所有数据都是对象 每个对象都有一个身份.一个类型和一个值 例如,school='MaGe Linux'会以'MaGe Linux'创建一个字符串对象,其身份是指向它在内存中所处位置的指针(其在内存中的地址),而school就是引用这个具体位置的名称 对象的类型也称对象的类别,用于描述对象的内部表示及它支持的方法和操作 创建特定类型的对象时,有时也将该对象称为该类型的实例 实例被创建后,其身份和

python学习笔记-Day8 上(pickle补充、字段、面向对象成员、成员修饰符、特殊方法)

pickle 序列化补充 # pickle load # 现在有两个python程序,调用关系如下 # s1.py class foo: …. Obj = foo(x,y) Pickle.dump(obj, open(‘db’,’wb’)) S2.py # s2.py from s1 import foo pickle.load(db) # s2.py 反序列化加载包含对象,一定要先导入对象对应的类,否则Pickle load将会报错 类多继承关系 有共同父类的继承关系如下 如图,如果我们有两个

python开发学习-day07(面向对象之多态、类的方法、反射、新式类and旧式类、socket编程)

s12-20160227-day07 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin

《Python数据分析常用手册》一、NumPy和Pandas篇

一.常用链接: 1.Python官网:https://www.python.org/ 2.各种库的whl离线安装包:http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-learn 3.数据分析常用库的离线安装包(pip+wheels)(百度云):http://pan.baidu.com/s/1dEMXbfN 密码:bbs2 二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和

【python】-- 类的多继承、经典类、新式类

继承知识点补充 在python还支持多继承,但是一般我们很少用,有些语言干脆就不支持多继承,有多继承,就会带来两个概念,经典类和新式类. 一.多继承 之前我们都是讲的单继承,那么什么是多继承呢?说白了,就是:子类可以继承多个父类,就叫多继承. class SchoolMember(object): #SchoolMember类 '''学校成员基类''' def tell(self): print("the schoolmeber is tell...") class School(ob

Python自动化开发,Day10 - 进程、线程、协程

本章内容 操作系统发展史介绍 进程与线程的区别 python GIL全局解释器锁 线程 语法 join 线程锁Lock\Rlock\信号量 将线程变为守护进程 Event时间 Queue队列 生产者消费者模型 进程 语法 进程间通讯 进程池 一.操作系统发展史介绍 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式. 手工操作 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存