Python高级语法(13)python中的一切皆对象

Python高级语法(1)抽象类

Python高级语法(2)多继承和MRO继承机制

Python高级语法(3)global和nolocal关键字使用详解

Python高级语法(4)魔法函数__init__/__del__/__new__

Python高级语法(5)魔法函数__str__/__repr__即str和repr的联系与区别的本质

Python高级语法(6)魔法函数__len__和__contains__即in和len()的本质

Python高级语法(7)魔法函数__getitem__/__setitem__/__delitem__即字典通过key取值赋值等本质

Python高级语法(8)魔法函数__enter__/__exit__即with上下文管理器的本质

Python高级语法(9)魔法函数__call__让对象像函数一样调用

Python高级语法(10)魔法函数__getattr__/__setattr__/__delattr__/__getattribute__对属性设置查询等的底层拦截处理

Python高级语法(11)多线程、多进程、协程简介与选择

Python高级语法(12)编码规范即pep8详解

Python高级语法(13)python中的一切皆对象

Python高级语法(14)type、object和class的关系

Python高级语法(15)装饰器

Python高级语法(16)迭代器

Python高级语法(17)map,filter,reduce,zip,lambda的应用

1 python中一切皆对象,类和函数都是“一等公民”,其中一等公民的含义如下:

  • 赋值给一个变量
  • 可以增加到集合对象中
  • 可以作为参数传递给参数
  • 可以作为函数的返回值

2 下面用代码演示在python中类和函数都是一等公民

  • (1) 类和函数都可以进行赋值

# 定义一个函数
def func(name="default"):
    print(name)

# 函数赋值
my_func=func
my_func("jack")

# 定义一个类
class Person:
    def __init__(self):
        print('person')

# 类进行赋值
MyPerson=Person
p=MyPerson()

执行结果如下:

jack
person
  • (2)类和函数都可以加到列表中去
# 定义一个函数
def func(name="default"):
    print(name)

# 定义一个类
class Person:
    def __init__(self):
        print('person')

# 定义一个列表
obj_list=[]
# 函数和类可以加到列表中
obj_list.append(func)
obj_list.append(Person)
for item in obj_list:
    item()

运行结果如下:

default
person
  • (3)类和函数都可以作为参数传入函数
# 定义一个函数
def func(name="default"):
    print(name)

# 定义一个类
class Person:
    def __init__(self):
        print('person')

# 定义一个执行函数,参数为一个函数
def run(func):
    print("begin to run func")
    func()
    print("finish running func...")

run(func)
run(Person)

执行结果如下:

begin to run func
default
finish running func...
begin to run func
person
finish running func...
  • (4)类和函数都可以作为函数的返回值
# 函数作为函数的返回值
def func_01():
    def func():
        print("jack")
    return func

# 类作为函数的返回值
def func_02():
    class Person():
        def __init__(self):
            print("person")
    return Person

f=func_01()
f()
p=func_02()
p()

执行结果如下:

jack
person

总结:在python中,函数和类都和普通的变量一样,都可以赋值,加到列表中,也可以作为函数的参数传入函数,也可以作为函数的返回值返回

Guess you like

Origin blog.csdn.net/redrose2100/article/details/121298153