Python开发第五篇内置函数

Posted Tanglaoer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python开发第五篇内置函数相关的知识,希望对你有一定的参考价值。

abs()

函数返回数字的绝对值

__author__ = "Tang"

a = -30
print(abs(a))# 30

all()

函数用于判断给定的可迭代参数iterable中的所有元素是否都为True,如果是则返回True,否则返回False

如果iterable的所有元素不为0、\'\'"、False或者iterable为空,all(iterable)返回True,否则返回False;注意 空列表 空元组 空字典 空字符串是True

__author__ = "Tang"

a = all([1,0])
print(a) # False

a = all([1,False])
print(a) # False

a = all(["",1])
print(a) # False

a = all([])
print(a) # True

a = all(())
print(a) # True

a = all({})
print(a) # True

a = ""
print(all(a)) # True

any() 

函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。

如果都为空、0、false,则返回false,如果不都为空、0、false,则返回true

__author__ = "Tang"

a = any([1,0])
print(a) # True

a = any([1,False])
print(a) # True

a = any(["",1])
print(a) # True

a = any([])
print(a) # False

a = any(())
print(a) # False

a = any({})
print(a) # False

a=""
print(any("")) # False

basestring() 

方法是 str 和 unicode 的超类(父类)可以用来判断一个对象是否为 str 或者 unicode 的实例,isinstance(obj, basestring) 等价于 isinstance(obj, (str, unicode))

bin()  返回一个整数 int 的二进制表示

__author__ = "Tang"

a = 10
print(bin(a)) # 0b1010

a = 500
print(bin(a)) # 0b111110100

bool() 

函数用于将给定参数转换为布尔类型,如果没有参数,返回 False

__author__ = "Tang"

# 为False的情况 七兄弟
# () [] {} 0 False "" 空
print(bool(())) # False
print(bool([])) # False
print(bool({}))# False
print(bool(0))# False
print(bool(False))# False
print(bool(""))# False
print(bool())# False

print(bool(10)) # 其他情况都为True

bytearray() 

方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256

__author__ = "Tang"

a = bytearray()
print(a) # bytearray(b\'\')

a = bytearray([1,2,3]) 
print(a)#bytearray(b\'\\x01\\x02\\x03\')

callable()

 函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。

对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True

 

chr()

用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应ascii字符

__author__ = "Tang"

print(chr(97)) # a

classmethod 

修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等

是类里面方法的语法糖,有property,staticmethod等

__author__ = "Tang"

class A(object):
    @classmethod
    def func1(self):
        print(\'foo\')

A.func1()  # foo

cmp(x,y)

Python3中已经不能使用该函数

 

compile()

函数将一个字符串编译为字节代码

__author__ = "Tang"

# compile() 函数将一个字符串编译为字节代码
# compile(*args, **kwargs)
str1 = "for i in range(1,10): print(i,end=\' \')"
a = (compile(str1,"","exec"))
print(a) # <code object <module> at 0x02AFD758, file "", line 1>
exec(a) # 1 2 3 4 5 6 7 8 9

delattr(object,name) 

函数用于删除属性

__author__ = "Tang"

class A:
    x = 20

print(A.x) # 20
delattr(A,"x")
print(A.x) #报错

dict() 

函数用于创建一个字典 五星级别*****

__author__ = "Tang"

"""
class dict(**kwarg) # 键值对方式
class dict(mapping, **kwarg) # 映射函数方式来构造字典
class dict(iterable, **kwarg) # 可迭代对象方式来构造字典
"""

a = dict(a=\'a\',b=\'b\',c=\'c\')
print(a) # {\'a\': \'a\', \'b\': \'b\', \'c\': \'c\'}

a = dict(zip([1,2,3,4,5],[\'a\',\'b\',\'c\',\'d\',\'e\']))
print(a) # {1: \'a\', 2: \'b\', 3: \'c\', 4: \'d\', 5: \'e\'}

a = dict([(1,\'a\'),(2,\'b\'),(3,\'c\'),(4,\'d\')])
print(a) # {1: \'a\', 2: \'b\', 3: \'c\', 4: \'d\'}

a = dict(((1,\'a\'),(2,\'b\'),(3,\'c\'),(4,\'d\'),))
print(a) # {1: \'a\', 2: \'b\', 3: \'c\', 4: \'d\'}

dir() 

函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息

__author__ = "Tang"

"""此方法在学习过程中非常有用,可用于查看类的方法"""

print(dir())
"""
[\'__annotations__\', \'__author__\', \'__builtins__\', \'__cached__\', \'__doc__\', \'__file__\', \'__loader__\', \'__name__\', \'__package__\', \'__spec__\']
"""

print(dir( [] ))
"""
查看列表的方法
[\'__add__\', \'__class__\', \'__contains__\', \'__delattr__\', \'__delitem__\', \'__dir__\', \'__doc__\', \'__eq__\', \'__format__\', \'__ge__\', \'__getattribute__\', \'__getitem__\', \'__gt__\', \'__hash__\', \'__iadd__\', \'__imul__\', \'__init__\', \'__init_subclass__\', \'__iter__\', \'__le__\', \'__len__\', \'__lt__\', \'__mul__\', \'__ne__\', \'__new__\', \'__reduce__\', \'__reduce_ex__\', \'__repr__\', \'__reversed__\', \'__rmul__\', \'__setattr__\', \'__setitem__\', \'__sizeof__\', \'__str__\', \'__subclasshook__\', \'append\', \'clear\', \'copy\', \'count\', \'extend\', \'index\', \'insert\', \'pop\', \'remove\', \'reverse\', \'sort\']
"""

divmod()

函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)

__author__ = "Tang"

print(divmod(9,3)) # (3, 0)

a,b = divmod(5,2)
print(a,b) # 2 1

# 如果有一个参数是小数,那么结果都是小数
a,b = divmod(10.0,3)
print(a,b) # 3.0 1.0

a,b = divmod(11,3.0)
print(a,b) # 3.0 2.0

enumerate()

函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列

__author__ = "Tang"

"""
enumerate(sequence, [start=0]) 可以自定义start 开始下标
返回两个参数,第一个为下标,第二个为值
"""

a = [\'tang\',\'lao\',\'er\']
for key,value in enumerate(a,10):
    print(key,value)
"""
10 tang
11 lao
12 er
"""

 eval()

函数用来执行一个字符串表达式,并返回表达式的值,可以说是一个计算器

__author__ = "Tang"

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

x = 2
print(eval(\'3 * x\')) # 6

print(eval(\'2+2\')) # 4

print(eval(\'2**10\')) # 1024

execfile() 

函数可以用来执行一个文件

python3 中没有该函数 

 

file()

python3 中没有该函数

 

filter() 

函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表

__author__ = "Tang"

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

def test(n):
    return n%2
li = filter(test,[i for i in range(10)])
print(li) # <filter object at 0x00B132F0>
print(list(li)) # [1, 3, 5, 7, 9]

# 配合匿名函数
li = filter(lambda x:x%2,[i for i in range(10)])
print(li) # <filter object at 0x036232F0>
print(list(li)) # [1, 3, 5, 7, 9]

float() 

函数用于将整数和字符串转换成浮点数,字符串是数字在里面才行,不然会报错

__author__ = "Tang"

a = 10
print(float(a)) # 10.0

a = -234
print(float(a)) # -234.0

a = "123"
print(float(a)) # 123.0

a = "123abc"
print(float(a)) # 报错

format()

请看 字符串格式化篇

frozenset()

返回一个冻结的集合,冻结后集合不能再添加或删除任何元素

__author__ = "Tang"

"""
class frozenset([iterable])
iterable 可迭代对象  能够被for循环的都是可迭代对象,也可以去重
"""

a = frozenset(range(10))
print(a) # frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
print(list(a)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

a = frozenset("tanglaoer") # 2个a
print(list(a)) # [\'r\', \'l\', \'e\', \'o\', \'a\', \'t\', \'g\', \'n\'] 一个a

li = [1,2,3]
li.append(4)
print(li) # [1, 2, 3, 4]

a.append(4) # 报错
print (a)  # 报错

getattr()

函数用于返回一个对象属性值

__author__ = "Tang"

"""
getattr(object, name[, default])
object 对象
name 字符串,对象属性
default 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError
"""
class A:
    b = 12
a = A()
c = getattr(A,\'b\')
print(c) # 12

d = getattr(A,\'z\')
print(d) # 报错 AttributeError: type object \'A\' has no attribute \'z\'

globals() 

函数会以字典类型返回当前位置的全部全局变量

__author__ = "Tang"

a = "tang"
print(globals())

"""
{   \'__name__\': \'__main__\',
    \'__doc__\': None,
    \'__package__\': None, 
    \'__loader__\': <_frozen_importlib_external.SourceFileLoader object at 0x009FC350>,
    \'__spec__\': None, 
    \'__annotations__\': {},
    \'__builtins__\': <module \'builtins\' (built-in)>, 
    \'__file__\': \'F:/python_django/基础/内置函数.py\', 
    \'__cached__\': None,
    \'__author__\': \'Tang\',
    \'a\': \'tang\'
}
"""

hasattr()

函数用于判断对象是否包含对应的属性

__author__ = "Tang"

"""
hasattr(object, name)
object 对象。
name 字符串,属性名
"""
class A:
    b = \'10\'
a = A()
print(hasattr(a,\'b\')) # True
print(hasattr(a,\'z\')) # False

hash()

用于获取取一个对象(字符串或者数值等)的哈希值

__author__ = "Tang"

"""
hash(object)
"""
print(hash("tang")) # 278126952
print(hash(23)) # 23
print(hash(str([1,2,3]))) # 716557122
# print(hash([1,2,3])) # 报错

help()

 函数用于查看函数或模块用途的详细说明

__author__ = "Tang"

"""
help([object])
object 对象
"""
print(help("os")) # 查看os模块的详细帮助信息
# 输出内容太多了,我就不打印了

hex()

函数用于将10进制整数转换成16进制,以字符串形式表示

__author__ = "Tang"

print(hex(10)) # 0xa

a = hex(17)
print(a, type(a)) # 0x11 <class \'str\'>

id()

函数用于获取对象的内存地址

__author__ = "Tang"

"""
在这里提一下,两个变量指向一个相同的不可变数据类型的数值时,它们的id是相同的,
但是元组不一样,它们id是改变的,与列表一样
"""
# int
a  = 10
print(id(a)) # 1368449952
b  = 10
print(id(b)) # 1368449952

# str 字符串是不可变数据类型
a = "tang"
print(id(a)) # 17810368

b = "tang"
print(id(b)) # 17810368

# 列表
a = [1,2,3,4]
print(id(a)) # 50262384

b = [1,2,3,4]
print(id(b)) # 50262344


a = (1,2,3,4,)
print(id(a)) # 6564096

b = (1,2,3,4,)
print(id(b)) # 6631664

input()

 函数接受一个标准输入数据,返回为 string 类型

 

__author__ = "Tang"

a = input(\'请输入:\')
print(a,type(a))

 

int()

函数用于将一个字符串或数字转换为整型

 

__author__ = "Tang"

"""
class int(x, base=10)
x 字符串或数字
base 进制数,默认按十进制
"""
a = "123"
print(int(a))  # 123

# a = "abc123"
# print(int(a)) # 报错

a = 3.6
print(int(a))  # 3

a = \'0xa\'
print(int(a, base=16)) # 10

a = \'10\'
print(int(a,base=8)) # 8

isinstance()

 函数来判断一个对象是否是一个已知的类型,类似 type()

__author__ = "Tang"

"""
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。

isinstance(object, classinfo)
object 实例对象。
classinfo 可以是直接或间接类名、基本类型或者由它们组成的元组
"""

a = 10
print(isinstance(a,int)) # True


class A:
    pass

class B(A):
    pass
obj = B()
print(isinstance(obj,A)) #True
print(isinstance(obj,B)) #True

issubclass()

方法用于判断参数 class 是否是类型参数 classinfo 的子类

__author__ = "Tang"

"""
issubclass(class, classinfo)
class 类。
classinfo 类
"""
class A:
    pass
class B(A):
    pass
print(issubclass(A,B)) # False
print(issubclass(B,A)) # True

iter() 

函数用来生成迭代器

__author__ = "Tang"

"""
iter(object[, sentinel])
object 支持迭代的集合对象。
sentinel 如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),
此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object
"""

li = [1,2,3]
for i in iter(li):
    print(i,end=" ") # 1 2 3

l = [\'a\',\'b\',\'c\',\'d\']
def test():
    return l.pop()
it = iter(test,\'z\') # 无穷执行test() 直到test结果等于\'z\'
print(it.__next__()) # d
print(it.__next__()) # c
print(it.__next__()) # b
print(it.__next__()) # a
print(it.__next__()) # IndexError: pop from empty list

len()

方法返回对象(字符、列表、元组等)长度或项目个数

__author__ = "Tang"

"""
len( s )
s -- 对象
"""
s = "tang"
print(len(s)) # 4

a = [1,2,3,4]
print(len(a)) # 4

list() 

方法用于将对象转换为列表

__author__ = "Tang"

# 字符串转换
a = "tang"
print(list(a)) # [\'t\', \'a\', \'n\', \'g\']

# a = 123
# print(list(a)) # 报错

a = (1,2,3,)
print(list(a)) # [1, 2, 3]

locals()

 函数会以字典类型返回当前位置的全部局部变量

对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True

__author__ = "Tang"

def test():
    a = 1
    print(locals()) # {\'a\': 1}
    print(globals())
    """
    {
    \'__name__\': \'__main__\', 
    \'__doc__\': None, 
    \'__package__\': None, 
    \'__loader__\': <_frozen_importlib_external.SourceFileLoader object at 0x00E3C350>, 
    \'__spec__\': None, 
    \'__annotations__\': {}, 
    \'__builtins__\': <module \'builtins\' (built-in)>, 
    \'__file__\': \'F:/python_django/基础/内置函数.py\', 
    \'__cached__\': None, 
    \'__author__\': \'Tang\', 
    \'test\': <function test at 0x002BB618>}
    """
test()

long()

python3 已经没有该函数

map() 

会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表

__author__ = "Tang"

"""
map(function, iterable, ...)
function  函数,有一个参数
iterable 一个或多个序列
"""
def test(a):
    return a**2
li = [1,2,3,4]
print(map(test,li)) # <map object at 0x017432F0>
print(list(map(test,li))) # [1, 4, 9, 16]

# 结合lambda表达式
a = map(lambda a:a**2,[i for i in range(10)])
print(list(a)) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

max()

方法返回给定参数的最大值,参数可以为序列

__author__ = "Tang"

"""
max( x, y, z, .... )
"""
a = [1,2,3,4]
print(max(a)) # 4


a = (1,2,3,4)
print(max(a)) # 4

memoryview() 

函数返回给定参数的内存查看对象(Momory view)。

所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问

__author__ = "Tang"

"""
memoryview(obj)
"""

v = memoryview(bytearray("tang",\'utf-8\'))
print(v[1]) # 97

print(v[0]) # 116
print(chr(v[0])) # t

min()

方法返回给定参数的最小值,参数可以为序列

__author__ = "Tang"

a = [1,2,3]
print(min(a)) # 1

next() 

返回迭代器的下一个项目

__author__ = "Tang"

"""
next(iterator[, default])
iterator 可迭代对象
default 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常
"""
li = [1,2,3,4]
# print(next(li)) # TypeError: \'list\' object is not an iterator

# 先转换为可迭代对象
li = iter(li)
print(next(li)) #  1
print(next(li)) #  2
print(next(li)) #  3
print(next(li,80)) #  4
print(next(li,90)) #  90 不然就报错

oct()

函数将一个整数转换成8进制字符串

__author__ = "Tang"

a = 10
t = oct(a)
print(a,t,type(t)) # 10 0o12 <class \'str\'>

open()

函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写

__author__ = "Tang"

"""
open(name[, mode[, buffering]])
name : 一个包含了你要访问的文件名称的字符串值。
mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认


r    以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb    以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+    打开一个文件用于读写。文件指针将会放在文件的开头。
rb+    

以上是关于Python开发第五篇内置函数的主要内容,如果未能解决你的问题,请参考以下文章

python开发 第五篇面向对象

第五篇:模块

Python全栈开发记录_第五篇(装饰器)

Python成长之路第五篇:Python基础之模块

MySQL从青铜到王者第五篇:MySQL内置函数

python学习第五篇 常用模块