python 常用内置函数

len()

len(iterable):返回给定序列(可迭代对象)的长度或元素个数。
list1 = [1, 2, 3, 4, 5]
print("列表长度:", len(list1))

issubclass()

issubclass(class, classinfo):检查一个类是否是另一个类的子类,返回 True 或 False。
class Base:
    pass

class Derived(Base):
    pass

print(issubclass(Derived, Base))  # 输出: True

abs()

返回一个数的绝对值。
print(abs(-5))  # 输出: 5

round()

round(number, ndigits):返回浮点数 number 的四舍五入值,可以指定保留的小数位数 ndigits。
print(round(3.14159, 2))  # 输出: 3.14

pow()

pow(x, y, z=None):计算 x 的 y 次方,如果提供 z 参数,则计算结果取模。(x**y) % z
print(pow(2, 3))  # 输出: 8
print(pow(2, 3, 3))  # 输出: 2

range()

range([start,] stop[, step]):成一个从 start 到 stop 的整数序列,间隔为 step。
for i in range(0, 5):
    print(i)  # 输出: 0, 1, 2, 3, 4

divmod()

divmod(a, b):以元组 (a // b, a % b) 的形式返回两个数的商和余数。
print(divmod(8, 3))  # 输出: (2, 2)

sum()

sum(iterable[, start]): 计算 iterable 的所有项的总和,如果提供了 start,则从这个值开始累加。
print(sum([1, 2, 3]))  # 输出: 6
print(sum([1, 2, 3], 10))  # 输出: 16

sorted()

功能:sorted() 函数用于对可迭代对象进行排序,并返回一个新的已排序列表。
语法:sorted(iterable, key=None, reverse=False)
        iterable:待排序的可迭代对象。
        key:可选参数,用于指定排序的规则函数。
        reverse:可选参数,为 True 时按降序排列,默认为 False。
# 基本排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出: [1, 1, 2, 3, 4, 5, 6, 9]

# 按字符串长度排序
words = ["banana", "apple", "cherry"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # 输出: ['apple', 'banana', 'cherry']

# 逆序排序
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)  # 输出: [9, 6, 5, 4, 3, 2, 1, 1]

# 使用 key 参数按绝对值排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_numbers_abs = sorted(numbers, key=abs)
print("按绝对值排序:", sorted_numbers_abs)

reversed()

功能:reversed() 函数用于反转序列中的元素,返回一个逆序的迭代器。
语法:reversed(sequence)
# 反转列表
numbers = [1, 2, 3, 4, 5]
reversed_numbers = list(reversed(numbers))
print(reversed_numbers)  # 输出: [5, 4, 3, 2, 1]

# 反转字符串
hello = "hello"
reversed_hello = ''.join(reversed(hello))
print(reversed_hello)  # 输出: 'olleh'

enumerate()

功能:enumerate() 函数用于将可迭代对象组合为一个索引序列,同时列出数据和数据下标。
语法:enumerate(iterable, start=0)
        iterable:待枚举的可迭代对象。
        start:可选参数,指定下标起始值,默认为 0。
# 枚举列表
names = ["Alice", "Bob", "Charlie"]
for index, name in enumerate(names):
    print(f"{index}: {name}")
# 输出:
# 0: Alice
# 1: Bob
# 2: Charlie

# 从指定索引开始枚举
for index, name in enumerate(names, start=1):
    print(f"{index}: {name}")
# 输出:
# 1: Alice
# 2: Bob
# 3: Charlie

id()

id(object):返回对象的唯一标识符,即对象在内存中的地址。每个对象在内存中都有一个唯一的标识符。
# 使用 id() 获取对象的内存地址
num = 10
print("对象 num 的内存地址:", id(num))   # 输出: 对象 num 的内存地址: 140732046623816

hash()

hash(object):返回对象的哈希值,如果对象是可哈希的(即不可变的),则返回其哈希值。哈希值是一种用于快速比较对象的值是否相同的机制。
num = 10
hash_num = hash(num)
print("对象 num 的哈希值:", hash_num)   # 输出: 对象 num 的哈希值: 10

input()

input(prompt):从标准输入(通常是键盘)获取用户输入,并返回用户输入的字符串。
name = input("请输入你的名字:")
print("你好," + name + "!")

type()

type() 函数用于返回对象的类型。
其语法如下:

type(object)   
  object:要获取其类型的对象
  
type(name, bases, dict, **kwds)

type() 函数返回对象的类型。如果只传入一个参数,则返回该对象的类型;如果传入三个参数,则返回一个新的类型对象。
# 获取对象的类型
num = 10
print(type(num))  # <class 'int'>,num 是整数类型

# 获取函数的类型
def greet():
    print("Hello!")

print(type(greet))  # <class 'function'>,greet 是函数类型

# 获取类的类型
class Person:
    pass

print(type(Person))  # <class 'type'>,Person 是类类型

# 获取实例的类型
class Dog:
    pass

my_dog = Dog()
print(type(my_dog))  # <class '__main__.Dog'>,my_dog 是 Dog 类的实例

# 获取类型的类型
print(type(int))  # <class 'type'>,int 是类型对象
print(type(str))  # <class 'type'>,str 是类型对象

# 使用三个参数创建新的类型对象
NewClass = type('NewClass', (object,), {'attr': 10})
print(type(NewClass))  # <class 'type'>,NewClass 是新的类型对象


# 返回字符串对象的类型
string = "hello"
type_str = type(string)
print(type_str)  # 输出:<class 'str'>

# 返回列表对象的类型
list1 = [1, 2, 3]
type_list = type(list1)
print(type_list)  # 输出:<class 'list'>

# 隐式转换
print(type(1+True))     # 输出:<class 'int'>
print(type(1+True+2.0)) # 输出:<class 'float'>

# 获取自定义类的实例的类型
class MyClass:
    pass

obj = MyClass()
print(type(obj))  # 输出:<class '__main__.MyClass'>

isinstance()

isinstance() 是 Python 内置函数,用于检查一个对象是否是指定类或类型中的一个。
其语法如下:
isinstance(object, classinfo)

object:要检查的对象
classinfo:要检查的类、类型或元组

如果 object 是 classinfo 类或类型的实例,或者是其子类的实例,则返回 True;否则返回 False。
# 检查对象是否是指定类的实例
num = 10
print(isinstance(num, int))  # True,num 是整数类型
print(isinstance(num, str))  # False,num 不是字符串类型

# 检查对象是否是多个类或类型中的一个
num = 10
print(isinstance(num, (int, float)))  # True,num 是整数或浮点数类型中的一个
print(isinstance(num, (str, float)))  # False,num 不是字符串或浮点数类型中的一个

# 结合继承关系进行检查
class Animal:
    pass

class Dog(Animal):
    pass

my_dog = Dog()
print(isinstance(my_dog, Animal))  # True,my_dog 是 Animal 类的实例
print(isinstance(my_dog, Dog))     # True,my_dog 是 Dog 类的实例

callable()

callable() 是 Python 内置函数,用于检查对象是否可调用(callable)。可调用的对象包括函数、方法、类和某些类的实例等。
其语法如下:

callable(object)

object:要检查的对象

如果 object 可以调用,则返回 True;否则返回 False。
# 检查函数是否可调用
def greet():
    print("Hello!")

print(callable(greet))  # True,函数 greet 可调用

# 检查方法是否可调用
class Person:
    def greet(self):
        print("Hello!")

p = Person()
print(callable(p.greet))  # True,方法 greet 可调用

# 检查类是否可调用
class Dog:
    pass

print(callable(Dog))  # True,类 Dog 可调用,创建类实例

# 检查实例是否可调用
class Calculator:
    def calculate(self, x, y):
        return x + y

c = Calculator()
print(callable(c.calculate))  # True,实例 c 的方法 calculate 可调用

# 检查不可调用的对象
num = 10
print(callable(num))  # False,整数对象 num 不可调用

iter()

iter() 是 Python 内置函数,用于获取可迭代对象的迭代器。
其语法如下:
iter(object, sentinel)

object:要创建迭代器的可迭代对象
sentinel:可选参数,指定在迭代器到达特定值时停止迭代

iter() 函数返回一个迭代器对象,该对象可以用于遍历可迭代对象的元素。
# 获取列表的迭代器
my_list = [1, 2, 3, 4, 5]
my_iter = iter(my_list)

print(next(my_iter))  # 1,获取迭代器的下一个元素
print(next(my_iter))  # 2
print(next(my_iter))  # 3

# 获取字符串的迭代器
my_string = "Hello"
my_iter = iter(my_string)

print(next(my_iter))  # 'H',获取迭代器的下一个字符
print(next(my_iter))  # 'e'
print(next(my_iter))  # 'l'

# 使用 sentinel 参数创建迭代器
def my_generator():
    yield 1
    yield 2
    yield 3

gen_iter = iter(my_generator(), 2)  # 当迭代器产生值为2时停止迭代

for value in gen_iter:
    print(value)  # 1,迭代器产生值为2时停止

# 迭代字典的键
my_dict = {'a': 1, 'b': 2, 'c': 3}
key_iter = iter(my_dict)

print(next(key_iter))  # 'a',获取字典键的迭代器
print(next(key_iter))  # 'b'
print(next(key_iter))  # 'c'

hasattr()

hasattr() 是 Python 内置函数,用于检查对象是否具有指定属性。
其语法如下:
hasattr(object, name)

object:要检查的对象
name:要检查的属性名称

如果对象具有指定属性,则返回 True;否则返回 False。
# 检查对象是否具有属性
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Alice", 30)
print(hasattr(person, "name"))  # True,person 对象具有属性 "name"
print(hasattr(person, "gender"))  # False,person 对象不具有属性 "gender"

# 检查模块是否具有属性
import math
print(hasattr(math, "pi"))  # True,math 模块具有属性 "pi"
print(hasattr(math, "sin"))  # True,math 模块具有属性 "sin"

# 检查内置类型是否具有属性
print(hasattr(int, "bit_length"))  # True,整数类型具有属性 "bit_length"
print(hasattr(float, "real"))  # True,浮点数类型具有属性 "real"

# 检查实例方法是否具有属性
class Car:
    def drive(self):
        print("Driving the car")

car = Car()
print(hasattr(car.drive, "__call__"))  # True,实例方法 "drive" 可调用

# 检查字符串是否具有属性
my_string = "Hello"
print(hasattr(my_string, "upper"))  # True,字符串具有属性 "upper"
print(hasattr(my_string, "split"))  # True,字符串具有属性 "split"

getattr()

getattr() 是 Python 内置函数,用于获取对象的属性值。
其语法如下:
getattr(object, name, default)

object:要获取属性的对象
name:要获取的属性名称
default:可选参数,如果属性不存在,则返回默认值

如果对象具有指定属性,则返回该属性的值;如果属性不存在且未提供默认值,则引发 AttributeError 异常。
# 获取对象的属性值
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Alice", 30)
print(getattr(person, "name"))  # 'Alice',获取对象 person 的属性 "name" 的值
print(getattr(person, "age"))   # 30,获取对象 person 的属性 "age" 的值

# 获取模块的属性值
import math
print(getattr(math, "pi"))  # 3.141592653589793,获取 math 模块的属性 "pi" 的值
print(getattr(math, "sin"))  # <built-in function sin>,获取 math 模块的属性 "sin",为函数对象

# 提供默认值
class Person:
    pass

person = Person()
print(getattr(person, "name", "Unknown"))  # 'Unknown',属性 "name" 不存在,返回默认值

# 处理不存在的属性
class Person:
    def __init__(self, name):
        self.name = name

person = Person("Alice")
print(getattr(person, "age", None))  # None,属性 "age" 不存在,返回 None

# 获取内置类型的属性值
print(getattr(str, "upper"))  # <method 'upper' of 'str' objects>,获取字符串类型的属性 "upper"
print(getattr(int, "bit_length"))  # <method 'bit_length' of 'int' objects>,获取整数类型的属性 "bit_length"

issubclass()

issubclass() 是 Python 内置函数,用于检查一个类是否是另一个类的子类。
其语法如下:
issubclass(class, classinfo)

class:要检查的类
classinfo:要检查的类或类的元组

如果 class 是 classinfo 类或其子类,则返回 True;否则返回 False。
# 检查类是否是另一个类的子类
class Animal:
    pass

class Dog(Animal):
    pass

print(issubclass(Dog, Animal))  # True,Dog 是 Animal 的子类

# 检查内置类型是否是指定类型的子类
print(issubclass(bool, int))  # True,布尔类型是整数类型的子类
print(issubclass(float, int))  # False,浮点数类型不是整数类型的子类

# 检查类是否是元组中任一类的子类
class Shape:
    pass

class Circle(Shape):
    pass

class Square(Shape):
    pass

print(issubclass(Circle, (Shape, int)))  # True,Circle 是 Shape 或 int 的子类
print(issubclass(Square, (Shape, int)))  # False,Square 不是 Shape 或 int 的子类

# 检查类是否是自身的子类
class Parent:
    pass

class Child(Parent):
    pass

print(issubclass(Child, Child))  # True,Child 是自身的子类

# 检查内置类型是否是基本类型的子类
print(issubclass(str, object))  # True,字符串类型是基本类型 object 的子类
print(issubclass(list, object))  # True,列表类型是基本类型 object 的子类

map()

map() 函数是Python内置的高阶函数,用于对可迭代对象中的每个元素应用一个指定的函数,然后返回一个包含所有函数返回值的新的可迭代对象。
功能:map 函数是一个内置函数,它将一个函数应用于一个序列(比如列表、元组等)或迭代器的每个元素,并返回一个迭代器。使用 map 函数可以实现对序列中每个元素进行操作的目标,而无需显式地编写循环。这样不仅代码更简洁,而且提高了代码的可读性和效率。
语法: map(function, iterable, *iterables)
        function:要对每个元素应用的函数。
        iterable:一个或多个可迭代对象,如列表、元组、集合等。map 将逐个从提供的序列中取出元素,并将它们作为参数传递给函数。
返回值:map 函数返回一个迭代器,迭代器中的元素是应用函数后的结果。
# 基础示例
# 定义一个函数,用于计算数字的平方
def square(x):
    return x * x

# 创建一个数字列表
numbers = [1, 2, 3, 4, 5]

# 使用 map 函数应用 square 函数到 numbers 的每个元素
squared = map(square, numbers)

# 将结果转换为列表,并打印
print(list(squared))   # 输出: [1, 4, 9, 16, 25]

# 多个序列
# 定义一个函数,用于计算两个数的和
def add(x, y):
    return x + y

# 创建两个数字列表
a = [1, 2, 3]
b = [4, 5, 6]

# 使用 map 函数将两个列表对应位置的元素相加
result = map(add, a, b)

print(list(result))   # 输出: [5, 7, 9]

zip()

zip() 函数用于将多个可迭代对象中对应位置的元素打包成一个元组,然后返回一个包含这些元组的迭代器。
默认情况下,zip() 在最短的迭代完成后停止。较长可迭代对象中的剩余项将被忽略,结果会裁切至最短可迭代对象的长度。
zip() 与 * 运算符相结合可以用来拆解一个列表。
zip()函数的语法如下:
zip(iterable1, iterable2, ...,strict=False)
  iterable1, iterable2, ...:多个可迭代对象,可以是列表、元组、集合等。
  strict:如果设置strict=True,则会在长度不匹配时引发ValueError异常。
# 将两个列表中对应位置的元素打包成元组
list1 = [1, 2, 3]
list2 = ['d', 'e', 'f', 'g']
zipped = list(zip(list1, list2))
print(zipped)      # 输出:[(1, 'd'), (2, 'e'), (3, 'f')]

# 使用zip()函数同时遍历多个列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for num, letter in zip(list1, list2):
    print(num, letter)
# 输出:
# 1 a
# 2 b
# 3 c

# 将字典的键和值分别打包成元组
my_dict = {'a': 1, 'b': 2, 'c': 3}
zipped = list(zip(my_dict.keys(), my_dict.values()))
print(zipped)
# 输出:[('a', 1), ('b', 2), ('c', 3)]

# 使用zip()函数合并多个列表成为一个字典
keys = ['a', 'b', 'c']
values = [1, 2, 3]
my_dict = dict(zip(keys, values))
print(my_dict)
# 输出:{'a': 1, 'b': 2, 'c': 3}

# 解压缩元组列表
data = [(1, 'a'), (2, 'b'), (3, 'c')]
numbers, letters = zip(*data)
print(numbers)
print(letters)
# 输出:
# (1, 2, 3)
# ('a', 'b', 'c')

# 解压缩字典的键和值
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys, values = zip(*my_dict.items())
print(keys)
print(values)
# 输出:
# ('a', 'b', 'c')
# (1, 2, 3)

max()

用于从一组参数中返回最大值。这些参数可以是数字、字符串或者可迭代对象(如列表、元组等)。
语法: max(arg1, arg2, *args, key=None, default=None)
参数: 
    arg1, arg2, *args: 用于比较大小的参数,可以是数字、字符串或者可迭代对象。
    key (可选): 用于指定一个函数,该函数将应用于每个参数以进行比较。
    default (可选): 如果参数为空,则返回该默认值,否则引发 ValueError。
返回值:返回参数中的最大值。
# 作为独立函数使用
max(3, 6, 1, 8, 4)  # 输出: 8

# 通过指定 key 函数来进行比较
words = ['apple', 'banana', 'cherry', 'dragonfruit']
max_word = max(words, key=len)  # 输出: 'dragonfruit'

chr()

描述:chr(i) 方法将一个 Unicode 编码点转换为对应的字符。
用法:chr(i)  i 必须是一个整数,表示 Unicode 编码点。
返回值:返回表示该编码点的字符。
print(chr(65))      # 输出: 'A'
print(chr(8364))    # 输出: '€'
print(chr(128516))  # 输出: '😄'

ord() 

描述:用于返回表示给定字符的 Unicode 码点的整数。该函数接受一个表示单个字符的字符串作为参数,并返回该字符的 Unicode 码点(整数)
用法:ord(character)。character 是要获取 Unicode 码点的字符(必须是长度为 1 的字符串)。
返回值:返回表示给定字符的 Unicode 码点的整数值。
print(ord('A'))     # 输出: 65
print(ord('€'))     # 输出: 8364
print(ord('😄'))    # 输出: 128516

isprintable() 

描述:用于检查字符串是否包含可打印字符。即该字符是否在屏幕上可见,而不是控制字符或不可见字符。
返回值:如果一个字符是可打印的,isprintable()将返回True;否则,将返回False。
print('A'.isprintable())    # 输出: True
print('€'.isprintable())    # 输出: True
print('😄'.isprintable())   # 输出: True
print('\n'.isprintable())   # 输出: False
print('\t'.isprintable())   # 输出: False
print('\r'.isprintable())   # 输出: False
print(' '.isprintable())    # 输出: True
print(''.isprintable())     # 输出: True
print(chr(8).isprintable()) # ASCII. 输出: False
print(chr(127).isprintable()) # ASCII. 输出: False

iter()

功能:iter() 函数用于生成一个迭代器对象,返回一个迭代器,可用于逐个访问某个可迭代对象的元素。
语法:iter(object, sentinel)
        object:要转换为迭代器的对象(如列表、元组、字典等)。
        sentinel:可选参数,用于指定终止条件。如果提供了 sentinel 参数,object 必须是一个可调用的对象,在每次调用时返回结果直到等于 sentinel 为止,并且不会输出哨兵值本身。
# 使用 iter() 获取列表的迭代器
my_list = [1, 2, 3, 4]
my_iter = iter(my_list)

# 使用迭代器遍历列表
for number in my_iter:
    print(number)
# 输出:
# 1
# 2
# 3
# 4

# 使用 iter() 创建一个以哨兵值停止的迭代器
import random

# 生成随机数直到生成5为止
random_iter = iter(lambda: random.randint(1, 10), 5)

# 迭代并打印随机数直到生成的数是5
for num in random_iter:
    print(num)
# 输出: 当 5 被生成时,迭代会立即终止,因此不会有机会打印 5。所以输出将包括 1 到 10 之间的随机数,但不包括 5。

next()

描述:next() 是 Python 中的一个内置函数,用于从迭代器中获取下一个项目。如果迭代器已经耗尽(没有更多的元素可供返回),则根据是否提供了默认值,next() 函数会抛出一个 StopIteration 异常或返回一个指定的默认值。
用法:next(iterator, default=None)
        iterator:要从中获取元素的迭代器。
        default(可选):如果迭代器耗尽(没有更多元素可返回时),返回的默认值。如果未提供此参数且迭代器耗尽,则会抛出 StopIteration。
# 在没有默认值的情况下使用 next(),当迭代器耗尽时会抛出 StopIteration 异常。
numbers = iter([1, 2, 3])

# 使用 next() 逐个获取元素
print(next(numbers))  # 输出 1
print(next(numbers))  # 输出 2
print(next(numbers))  # 输出 3

# 再次尝试获取元素将抛出 StopIteration 异常
try:
    print(next(numbers))
except StopIteration:
    print("迭代器已耗尽")

# 使用默认值
# 创建一个简单的迭代器
numbers = iter([1, 2, 3])

# 使用 next() 逐个获取元素,提供默认值
print(next(numbers, '结束'))  # 输出 1
print(next(numbers, '结束'))  # 输出 2
print(next(numbers, '结束'))  # 输出 3
print(next(numbers, '结束'))  # 输出 '结束'(因为迭代器已耗尽)

# 在循环中使用 next()
# 创建一个迭代器
import random
random_iter = iter(lambda: random.randint(1, 10), 5)

# 循环使用 next(),直到迭代器耗尽
while True:
    try:
        number = next(random_iter)
        print(number)
    except StopIteration:
        print("随机数生成器达到哨兵值,迭代终止")
        break

参考文档

https://docs.python.org/zh-cn/3.12/library/functions.html

posted @ 2024-04-23 12:55  小吉猫  阅读(18)  评论(0编辑  收藏  举报