【Python】Basics - Built-in Function(内置函数)

Posted by 西维蜀黍 on 2019-11-01, Last Modified on 2024-01-09

range() - 生成 list

Using only one argument in range()

print("Print first 5 numbers using range function")
for i in range(5):
    print(i, end=', ')

Output:

Print first 5 numbers using range function
0, 1, 2, 3, 4,

要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))

>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

str()

类(或对象)的类型

isinstance() - 判断对象类型

判断一个变量引用的对象是否是某个类型可以用isinstance()

比如:

>>> a
[1, 1, 2]
>>> isinstance(a, list)
True
>>> type(a) is list
True

这其实等价于用 type(...) is x


当然,我们还可以用 isinstance 来判断类类型

class Animal(object):
    pass
class Dog(Animal):
    pass    
>>> a = Dog()
>>> isinstance(a, Dog)
True
>>> isinstance(a, Animal)
True

type() - 获取对象类型

属性相关

dir() - 获取对象的属性和方法列表

如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法:

>>> dir('ABC')
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

类似__xx__的属性和方法在Python中都是有特殊用途的,比如__len__方法返回长度。在Python中,如果你调用len()函数试图获取一个对象的长度,实际上,在len()函数内部,它自动去调用该对象的__len__()方法,所以,下面的代码是等价的:

>>> len('ABC')
3
>>> 'ABC'.__len__()
3

我们自己写的类,如果也想用len(myObj)的话,就自己写一个__len__()方法:

>>> class MyDog(object):
...     def __len__(self):
...         return 100
...
>>> dog = MyDog()
>>> len(dog)
100

剩下的都是普通属性或方法,比如lower()返回小写的字符串:

>>> 'ABC'.lower()
'abc'

设置、获取对象属性

  • setattr() - 设置对象的特定属性
  • hasattr() - 对象是否存在某个属性
  • getattr() - 获取对象的特定属性
class P(object):
    name = "cq"
    def __init__(self, age):
        self.age = age

print hasattr(P, "name")    # True
print hasattr(P, "age")     # False
setattr(P, "age", 31)
print getattr(P, "name")    # cq
print getattr(P, "age")     # 31