【Python】函数记录
1. enumerate(可迭代对象, 起始下标=0)
- 作用:遍历序列时,同时拿到 下标索引 + 元素值。
- 可迭代对象:list,tuple,str,set,dict,range,Dataset(PyTorch),DataLoader(PyTorch)
fruit_list = ["苹果", "香蕉", "橘子"]
for fruit_name in enumerate(fruit_list):
# 不拆包时,可以组包成一个元组
print(fruit_name)
# ------------------输出结果---------------
(0, '苹果')
(1, '香蕉')
(2, '橘子')
2. eval() 【谨慎使用】
- 作用:把字符串里的代码,👉当成真正的 Python 代码执行!
# 1. 计算字符串里的数学表达式
print(eval("10 + 5")) # 15
print(eval("3 * (2 + 4)")) # 18
# 2. 把字符串转成列表 / 字典 / 元组(超级常用)
s = "[1,2,3,4]"
lst = eval(s)
print(type(lst)) # <class 'list'>
s = '{"name":"小明", "age":20}'
d = eval(s)
print(type(d)) # <class 'dict'>
# 3. 执行简单代码
x = 10
print(eval("x + 5")) # 15
- 【慎重】:如果用户输入恶意代码,eval 会直接执行!
s = input("请输入表达式:")
eval(s)
# 如果用户输入:__import__('os').system('rm -rf /')。服务器"根"文件直接删除。
3. isinstance()
-
作用:判断一个对象是不是指定类型,返回
True / False -
使用场景:
- 判断单个数据类型
- 同时判断多个数据类型
- 判断自定义类对象
- 继承关系也会返回True
# -----------------------单个数据类型-----------------------
# 判断单个数据类型
a = 10
print(isinstance(a, int)) # True
print(isinstance(a, str)) # False
c = [1,2,3]
print(isinstance(c, list)) # True
# -----------------------多个数据类型-----------------------
# 判断多个数据类型。 "and"关系,满足一个即返回True
x = 3.14
# 是 int 或 float 都算
print(isinstance(x, (int, float))) # True
# -----------------------自定义对象-------------------------
# 判断自定义类对象
class Person:
pass
p = Person()
print(isinstance(p, Person)) # True
# -----------------------继承关系---------------------------
# 继承关系也会返回True
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(isinstance(dog, Dog)) # True
print(isinstance(dog, Animal)) # True 继承也算
4. super()
-
作用:调用父类方法
-
写法:
- 简化写法:super().方法名()
- 老式写法:super(当前类名, 对象).方法名()
-
四层继承链条
- 动物 (第 1 层) → 马 (第 2 层) → 白马 (第 3 层) → 千里马 (第 4 层)
# 第一层:基类 动物
class Animal:
def run(self):
print("跑起来")
# 第二层:马 继承 Animal
class Horse(Animal):
def run(self):
print("迈着矫健的步伐跑起来")
# 第三层:白马 继承 Horse
class WhiteHorse(Horse):
def run(self):
print("白马轻轻奔跑")
# 第四层:千里马 继承 WhiteHorse
class SwiftHorse(WhiteHorse):
def __init__(self):
self.name = "千里马"
if __name__ == '__main__':
# 创建最子类对象
sh = SwiftHorse()
print(sh.name)
print("-" * 30)
# 1. 调用自己本身父类(四层)
sh.run()
print("-" * 30)
# 2. 跳过四层,调用三层 WhiteHorse
super(SwiftHorse, sh).run()
print("-" * 30)
# 3. 跳过三层,调用二层 Horse
super(WhiteHorse, sh).run()
print("-" * 30)
# 4. 跳过二层,调用一层 Animal
super(Horse, sh).run()
# ---------------------------------------------------输出结果
# 千里马
# ------------------------------
# 白马轻轻奔跑
# ------------------------------
# 白马轻轻奔跑
# ------------------------------
# 迈着矫健的步伐跑起来
# ------------------------------
# 跑起来

浙公网安备 33010602011771号