08.eval、exec和其他函数

eval、exec和其他函数

一、eval函数

1). eval函数的功能

  1. 将字符串形式的变量转换成Python的数据类型
    • 元组 字典 列表 有返回值
  2. 将字符串形式的数字的计算式直接转换并计算出结果
  3. 必须是单行代码

2). 用法演示

  1. 将字符串提取内容转换为四则运算
g = '1 + 2 * 3 -2 / (-1 -1)'
g = eval(g)
msg = '4 ** 5'
a = eval(msg)
  1. 将字符串提取内容转换为int
a = '1.1'
a = eval(a)
  1. 将字符串提取内容转换为list
b= '[1,2,3]'
eval(b)
  1. 将字符串提取内容转换为tupe
c = '(1,2,3,)'
c = eval(c)
f = '1,2,3,4'
f = eval(f)
  1. 将字符串提取内容转换为dict
d = '{1:1,2:2,3:3}'
d = eval(d)
  1. 将字符串提取内容转换为set
e = '{1,2,3}'
eval(e)
  1. 补充:交互器写多行代码的方法
code = '''
pass
'''

3).exec函数

  1. 能将多行字符串转换成代码
  2. 没有返回值
  3. exec模板
code = """
for i in range(5):
    print(i)
"""
exec(code)

二、其他函数

1). isinstance() 判断对象是否为类的实例

isinstance(1,int)
isinstance('abc',str)
isinstance([],list)
isinstance({},dict)
isinstance({1,2},set)

2). sum()求和

d = [1,2,3,4,5]
sums = sum(d)

3). bytearray() 转换为字节数组

s = "ABC哈哈大圣"
s = s.encode("utf8")
s = bytearray(s)
s[0] = 97
print(s[5])
s[5] = 137
s = s.decode("utf8")
print(s)

4).callable(a) 判断是否可调用,是否是函数

def a():
    pass
boolean = callable(a)

5). locals()返回局部变量

6). globals()返回全局变量

7). repr(obj)返回规范化的字符串表示该对象的方法

8). zip将两个可迭代对象打包成一个对应元素的元组列表

print(list(zip([0,1,2,3],["a","b","c","d"])))

9). complex(int_a, int_b) 复数

10). round(2.35434, 3)保留几位小数

11). abs(-1)取绝对值

12). 编码转换

name='你好'
print(bytes(name,encoding='utf-8'))  # 转换为字节,py3把除非Unique编码的汉字全部以16进制表示
print(bytes(name,encoding='utf-8').decode('utf-8'))  # 先编码,再解码

13). hash()哈希运算

  1. 可hash的数据类型即不可变数据类型(预防篡改),不可hash的数据类型即可变数据类型
hash_after = hash('12sdfdsaf31231asdfasdfsadfsadfasdfasdf23')

14). help(dict) 查看帮助信息

15). 幂运算

a = pow(3,3)     # 3**3
b = pow(3, 3, 2) # 3**3%2   #3的3次方然后取余

16). 反转

l=[1,2,3,4]
h = reversed(l) # 返回一个反转的列表迭代器
print(next(h))
print(l)

17). slice()自定义切片功能

l='hello'
s1=slice(3,5)      # 定义切片(不收尾)
s2=slice(1,4,2)    # 定义切片(不收尾)指定步长为2
a = l[3:5]         # 直接切片
b = l[s1]          # 使用定义的切片取值
c = l[s2]          # 使用定义的切片取值,步长为2
d = s2.start       # 查看定义的参数  开始位置
e = s2.stop        # 查看定义的参数  结束位置(不收尾)
f = s2.step        # 查看定义的参数  步长

18). max

注意!比较的值必须是同一个类型,否则报错

l = [1,3,100,-1,2]
maxs = max(l)   # 取最大值,从前到后一个一个比较(类型必须一样)(print(min(l))

19). min

age_dic={'a':18,'b':20,'c':100,'d':30}
a = max(age_dic) # 默认比较的是字典的key
b = max(age_dic.values())
print('=======>',list(max(zip(age_dic.values(),age_dic.keys()))))  # 默认比较转换结果的第一个参数
  • 指定比较的值
people=[
    {'name':'a','age':1000},
    {'name':'b','age':10000},
    {'name':'c','age':9000},
    {'name':'d','age':18},
]
print(max(people, key=lambda dic:dic['age']))

20). set('hello') 变成一个集合的方式 鸭子类型转换

21). type("ss") 查看数据类型

22). vars() 获得当前作用域所有的变量值或者类型,是一个字典。

三、函数闭包

# 闭包的效果,这种情况当return了,当前函数bibao没有被释放.
def bibao():
    name = "go"
    def baobao():
        print(name)
    return baobao
    
func = bibao()
func()

四、补充:import导入方式

  1. import---调--->sys---调-->import()
import test   #test.py 这个写的模块,import不能导入字符串
test.say_hi()
import 'test'   # 报错

module_name='test'
m=__import__(module_name)  # 这种方式为导入字符串方式导入模块
m.say_hi()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容

  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,052评论 0 1
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,231评论 0 4
  • abs() 函数 描述 abs() 函数返回数字的绝对值。 语法 以下是 abs() 方法的语法: abs( x ...
    时光是座城阅读 490评论 0 2
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,122评论 0 21
  • 1. abs(x) abs()函数返回数字(可为普通型、长整型或浮点型)的绝对值。如果给出复数,返回值就是该复数的...
    TENG书阅读 413评论 0 0