首页 > 技术文章 > python内置函数-20200310

bwcheng 2020-03-10 15:36 原文

一、json模块,load和loads,dump和dumps根据序列化和反序列的特性总结

loads: 是将string转换为dict
dumps: 是将dict转换为string
load: 是将里json格式字符串转化为dict,读取文件
dump: 是将dict类型转换为json格式字符串,存入文件

二、容易遗忘的python内置函数

1、setattr()函数

setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的。

语法:setattr(object, name, value)

  • object -- 对象。
  • name -- 字符串,对象属性。
  • value -- 属性值。

实例:

1、

class(A):

  bar = 1

a = A()

print(a.bar)

打印--1--

setattr(a, 'bar', 2 )

print(a.bar)

打印:---2---。说明可以修改 已经存在的属性

2、

class(A):

  bar = 1

a = A()

setattr(a, 'new', 'new')

print(a.new)

打印:---new---。说明如果属性不存在会创建一个新的对象属性,并对属性赋值

2、eval()函数

eval() 函数用来执行一个字符串表达式,并返回表达式的值

语法:eval(expression[, globals[, locals]])

  • expression -- 表达式。
  • globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

返回值:

返回表达式计算结果。

实例:

eval('print(range(10))')

打印--range(0, 10)--

3、exec()函数

exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。

语法:exec(object[, globals[, locals]])

  • object:必选参数,表示需要被指定的Python代码。它必须是字符串或code对象。如果object是一个字符串,该字符串会先被解析为一组Python语句,然后在执行(除非发生语法错误)。如果object是一个code对象,那么它只是被简单的执行。

实例:

>>>exec('print("Hello World")') Hello World # 单行语句字符串
>>> exec("print ('runoob.com')") runoob.com # 多行语句字符串
>>> exec ("""for i in range(5):
... print ("iter time: %d" % i) ... """)
iter time: 0
iter time: 1
iter time: 2
iter time: 3
iter time: 4
 
4、hasattr()
hasattr() 函数用于判断对象是否包含对应的属性。

hasattr 语法:

hasattr(object, name)

参数

  • object -- 对象。
  • name -- 字符串,属性名。

返回值

如果对象有该属性返回 True,否则返回 False。

以下实例展示了 hasattr 的使用方法:

class Coordinate:
   x = 10
  y = -5
   z = 0
point1 = Coordinate()
print(hasattr(point1, 'x'))
print(hasattr(point1, 'y'))
print(hasattr(point1, 'z'))
print(hasattr(point1, 'no')) # 没有该属性

输出结果:

True
True
True
False


4、filter()函数

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

语法

以下是 filter() 方法的语法:

filter(function, iterable)

参数

  • function -- 判断函数。
  • iterable -- 可迭代对象。

返回值

返回一个迭代器对象

过滤出列表中的所有奇数:

#!/usr/bin/python3
def is_odd(n):
  return n % 2 == 1
  tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
   newlist = list(tmplist)
  print(newlist)

输出结果 :

[1, 3, 5, 7, 9]

5、sorted()函数

sorted() 函数对所有可迭代的对象进行排序操作。

语法

sorted 语法:

sorted(iterable, key=None, reverse=False)

参数说明:

  • iterable -- 可迭代对象。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

返回值

返回重新排序的列表。

实例

以下实例展示了 sorted 的最简单的使用方法:

>>>sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5] # 默认为升序
 
6、range()函数
range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表

函数语法

range(stop)
range(start, stop[, step])

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

实例

>>>range(5)

range(0, 5)

>>> for i in range(5):

... print(i)

...

0

1

2

3

4

>>> list(range(5))

[0, 1, 2, 3, 4]

>>> list(range(0))

[]

 

 

推荐阅读