python类和函数的区别

我想请教下,在python中,是进来用函数,还是进来用类。还有,python中,在一个模块能不能访问另外一个模块的类,如果可以,希望说明下。说明的越详细越好

一、主体不同

1、类:是面向对象程序设计实现信息封装的基础。

2、函数:是指一段在一起的、可以做某一件事儿的程序。也叫做子程序、(OOP中)方法。

二、特点不同

1、类:是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。

2、函数:分为全局函数、全局静态函数;在类中还可以定义构造函数、析构函数、拷贝构造函数、成员函数、友元函数、运算符重载函数、内联函数等。


三、规则不同

1、类:实质是一种引用数据类型,类似于byte、short、int(char)、long、float、double等基本数据类型,不同的是它是一种复杂的数据类型。

2、函数:函数必须声明后才可以被调用。调用格式为:函数名(实参)调用时函数名后的小括号中的实参必须和声明函数时的函数括号中的形参个数相同。


参考资料来源:百度百科-函数

参考资料来源:百度百科-类

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-07

1、作用不同

Python是面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

函数是一段在一起的、可以做某一件事儿的程序。也叫做子程序、(OOP中)方法。

2、特点不同

Python的设计哲学是“优雅”、“明确”、“简单”。因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。

函数中一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。

3、功能不同

Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。

在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。要善于利用函数,以减少重复编写程序段的工作量。

参考资料来源:百度百科-函数

参考资料来源:百度百科-Python

本回答被网友采纳
第2个回答  推荐于2017-11-24
楼上说错了哦,类可以有类方法(查查什么是class method),不需实例化也可以使用的。

python的类和函数的区别主要在于类可以有变量和各种方法,而函数没有。函数只能被运行,返回或者不返回值都可以。

模块如果没有把类声明为私有,其他模块就可以使用这个类,方法是import这个模块,然后用"模块名.类名"来调用。追问

用类好,还是用函数好点。写脚本的时候。还有希望给个例子说明下在模块a调用模块b中的一个类,并且调用这个类的方法,类中的成员变量

追答

看你份额编程风格和实际需要。
如果你是倾向于函数式编程,肯定用函数。如果你习惯于面向对象,肯定以类为主。
如果需要把功能和数据归在一起,肯定用类,用函数只能把数据来回传,不能保存。
例子:
模块b中假设有类B,其中有变量v1,方法f1,类方法f2。
那在模块a中调用方法是:
import b
a = b.B()
aa = a.v1 #引用变量
bb = a.f1() #引用函数
cc = b.B.f2() #引用类方法

本回答被提问者采纳
第3个回答  2011-12-01
类使用需要实例化,函数不需要实例化。
class L(object):
def do(self):
...
类L使用时要先实例化
l=L()
然后才能调用do这个函数
result=l.do()
函数是
def do():
....
result=do()
类主要用于封装一些函数
具体可以参考你比较了解的语言

可以在a模块中访问b模块中的类
a模块下有a.py这个文件,a.py中有个类A
b模块中有b.py这个文件,b.py中有个类B

在a.py中调用类B
from a.a import A

bb=B()

这就调用了B这个类,但是不能在a中调用B的同时在b中调用A
第4个回答  2014-04-23
额,类主要是为了数据封装,隐藏细节,再加上类对多态,继承的支持,可以更好地运用设计模式等设计方法。

例子嘛。。。

你说的应该是函数式编程和面向对象编程的区别~~~

就像c语言和c++的区别一样~

使用c也可以做面向对象编程,比如结构体中封装数据,使用函数指针封装方法,但是这种“伪装”有时候并不直观~~ 所以才有从语法层面支持面向对象的语言~~

不知道我说没说到点子上。

详细的来说,如果只是简单的脚本,过程式没问题~~
但是如果是复杂的系统,比如万行以上的系统,不使用面向对象的设计方法,是很容易失控的~~