一、动态语言
动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化,类型的检查是在运行时做的,优点为方便阅读,清晰明了,缺点为不方便调试。
动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
例如Python /SQL /JavaScript /PHP 等等。
静态语言,是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。 例如:C++、Java、Delphi、C#等。
详细解释可阅读:
二、 Java语言中关于”一切皆是对象“这句话的理解?
没错,万物皆对象!
这是java语言的一种编程思想,不必纠结万物如何成为对象的,而是你要首先去有这种编程的思维方式。
因为java的基础就是建立在对象之上的,桌子可以被看成一个对象,在代码中叫table,好,你创建了一个类就叫Table,这个Table就是一个对象,代表了桌子这个实际存在的东西。
那么既然万物皆对象,Table这个类也可以再被看成对象,对吧?那么Table类是谁的对象呢?
应该是Class的一个实例对象!
很多东西不是一下能理解的,你只要先记住,编程开发的时候对以对象的角度去看待问题,慢慢会理解的
三、Python中一切皆为对象
众所周知,面向对象语言的特点即为“万物皆为对象”,其中以Java开发尤为突出。那么在python中,这个 一切 是怎么表现出来的呢?
一切皆为对象(函数和类也是对象)
在Python中,函数和类也是对象。他们体现在以下几个方面
1. 可以赋值给一个变量
# 函数可以被赋值给变量
def hello(name='world'):
print('hello ' + name)
my_func = hello
my_func('python')
# 类可以被赋值给变量
class Person:
def __init__(self):
print('__init__')
my_class = Person
my_class()
通过以上代码可以发现使用新的变量名即可调用函数
2.可以添加到集合对象中
# 定义集合对象
obj_list = []
# 添加方法与类到几个中
obj_list.append(hello)
obj_list.append(Person)
for item in obj_list:
print(item())
输出结果:
输出结果.png
注:
以上输出结果中hello world以及init为print函数输出语句。None为函数返回值,无返回值时即为None值
3.可以作为参数传递给函数
# 可以作为参数传递给函数
# 输出类型
def print_type(item):
print(type(item))
for item in obj_list:
print_type(item)
输出结果:
输出结果.png
4.可以当做函数返回值
# 可以当做函数返回值
def decorator_func():
print('调用decorator_func函数')
return hello
my_func = decorator_func()
my_func('python')
输出结果
注:
此即为Python中装饰器实现原理
All Code
# /bin/python3
# -*- coding:utf-8 -*-
"""
Python中一切皆为对象
"""
# 函数可以被赋值给变量
def hello(name='world'):
print('hello ' + name)
# my_func = hello
# my_func('python')
# 类可以被赋值给变量
class Person:
def __init__(self):
print('__init__')
# my_class = Person
# my_class()
# 可以添加到集合对象中
# 定义集合对象
obj_list = []
# 添加方法与类到几个中
obj_list.append(hello)
obj_list.append(Person)
# for item in obj_list:
# print(item())
## 可以作为参数传递给函数
def print_type(item):
print(type(item))
# for item in obj_list:
# print_type(item)
# 可以当做函数返回值
def decorator_func():
print('调用decorator_func函数')
return hello
my_func = decorator_func()
my_func('python')