首页 > 编程语言 >初学Python时需要认识清楚的几个概念:对象、函数、圆括号给、点取、方括号取

初学Python时需要认识清楚的几个概念:对象、函数、圆括号给、点取、方括号取

时间:2024-07-24 12:41:01浏览次数:9  
标签:方括号 函数 Python dataframe 对象 score 点取

这是我在自学Python的过程中自己挑选和提炼出来的几个重要的概念,之所以特意介绍这些概念,其中包含了我自己的思维方式和我对Python设计理念的认识,有其独特性和局限性。我希望这篇文章能够给喜爱Python的朋友们带来一些启发。

1、对象(Object)

对象是Python编程的基本单元。就像音是音乐的基本单元一样,音按照特定的方式组织起来成为音乐,而对象也是按照一定的组织方式构成程序。音具有多种属性:音色、调性、音高、响度、时值;而对象也具有多种属性:各种特定的属性和各种特定的函数。
例如,一个很简单的例子:

r = 1

# r的其中一个属性,.real是r这个对象的实部(相对于虚部而言的)属性
print(r.real)

# r的其中一个函数,.conjugate是r这个对象的一个函数,用于返回复数的共轭复数
print(r.conjugate)

其中,r被赋予值1,而r作为一个对象,它就被规定了许许多多的属性和被配置了许许多多的函数。这些属性和函数并不是操作者赋予的,而是Python赋予的(对于非自定义的对象类型来说)。所以牢牢记忆、熟练掌握不同类型(type)的对象所具有的属性和函数,是用好Python的一门必修课。
这里有一个特例,那就是模块(module)。虽然模块也被当做一个对象,但是它实际上是一份程序,模块虽然也会参与程序的构成,但是它本身已经是一个独立的程序了,它并不能算作严格意义上的对象。

2、函数(Function)

函数是操控对象的活动。它接受对象(可以多个),对其进行处理,并返回结果。所以它实际上就是一种特定的计算法则。而通过自定义函数还可以实现非常具有针对性的计算要求。一个简单的例子,例如:sum(score),其中sum这个函数就是对score对象进行加总求操作的活动。
需要提醒的是,虽然上面说对象会包含各种各样的函数,但函数是可以独立于对象而存在。例如:

score = [95, 90, 85]
print(sum(score))

但是并没有score.sum()。当然,如果score是个dataframe类型的对象,那么它又的确会有score.sum()。但是sum(score)对于无论是list类型的还是dataframe类型的对象都是能用的。所以,牢牢记忆、熟练掌握不同函数及其能够作用于的对象的类型,也是用好Python的一门必修课。

3、圆括号给

圆括号在Python中有特定的用途,除了用来创建元组(Tuple),圆括号(据我所知)就只有给函数传递参数的功能。圆括号给,指的是在函数名后面施加“()”,把圆括号括起来的东西传递给函数,而这些东西都叫参数,参数之间用“,”(半角逗号)隔开。参数可以是空的,因为有的函数会设定默认的参数,没有特殊的要求并不需要更改。

4、点取

点“.”(半角句号)在Python中也是有特定的用途。点取,指的是在某对象后面施加“.”,用来取得某对象的属性或函数。例如:score.sum()就是调用score这个对象自带的sum函数(这里score是个dataframe类型的对象);doctor.index就是取得doctor这个dataframe类型对象的index属性。而对模块用点取则很好理解,指的就是调用这个脚本当中的某个函数,例如:在smf.ols(pattern, dataframe)中的smf.ols(),指的就是对statsmodels.formula.api(导入的时候把它重命名为smf了)这个脚本进行调用,调用其内部的名叫ols的函数。

5、方括号取

方括号“[]”(半角方括号)在Python中也是有特定的用途。方括号取,就是在某对象后面施加“[]”,用来取得某对象的子项(或者说,其特定分类规则下的某一个类)。例如:doctor[‘score’]就是取得doctor这个dataframe的score列。有趣的是,往往可以在方括号里面施加条件,进行有条件地取得子项,例如:doctor[doctor[‘score’] == 10.0]就是取得doctor这个dataframe当中score为10.0的医生的数据。
而且方括号取可以进行嵌套,也就是说把方括号之前的东西重新当做对象。例如:

doctor['score'][0]

指的就是在取得了doctor这个dataframe的score列后,把这一列当做对象,然后取它的第0行的数据。这种操作在处理json类型的对象的时候经常使用。
需要注意的是,方括号取是取不了属性的。例如对于一个dataframe类型的数据,想要获得它的索引(index),因为索引是它的属性(因为dataframe的数据类型就是这样被设定的),要用df.index,而df['index']是得不到想要的数据的。

总结:所有的工程都有其基本单元和基本操作活动,一个工程就是去组织好这些基本的单元。例如:音乐作为一项工程,它的基本单元是单音,通过对单音进行有规律的组织(构造旋律、组织乐句、和弦进行、对位法等等),来构成音乐;而Python编程作为一项工程,在我看来,它的基本单元是对象,通过有规律的组织(设定函数),来构成程序。而在设定函数的过程当中,要灵活地取得需要的数据,就要分分清楚:点、圆括号和方括号的用法,这在处理网页数据的时候有明显的体现。所以我这篇文章就对对象、函数和圆括号、方括号和点的用法进行了简单的介绍。

标签:方括号,函数,Python,dataframe,对象,score,点取
From: https://www.cnblogs.com/luoxinli/p/18320608

相关文章

  • 如何接受文件或路径作为python中方法的参数
    我正在尝试编写一个方法,该方法将接受打开的文件myFile=open("myFile.txt")obj.writeTo(myFile)myFile.close()或带有路径的字符串obj.writeTo("myFile.txt")该方法的实现如下:defwriteTo(self,hessianFile):ifisinstance(hessianFile,file):pr......
  • Python,“pathlib.Path.open()”方法和内置函数“open()”不返回“typing.IO”的实例
    我读过一些其他答案,它们似乎与现实生活中发生的事情相矛盾。尝试以下操作:fromtypingimportIOfrompathlibimportPathexample_path=Path(r"D:\Example.txt")withexample_path.open("r")asf:print(isinstance(f,IO))withopen(example_path)a......
  • 【Dison夏令营 Day 28】用 Python 创建恐龙游戏
    谁没有玩过谷歌著名的“恐龙游戏”?也许每个人都玩过这个游戏。今天,在这篇文章中,我们将帮助你用Python开发一个恐龙游戏。本教程将深入讲解每一行代码,并提供参考资料。我们将尽力让读者详细、透彻地理解这个项目。Python版恐龙游戏的任务记录包括图片文档和Python资料......
  • Python 无法 pickle 自定义类型
    我正在尝试在ProcessPool中运行一个函数,该函数将通过读取python文件并运行生成的类中的方法来加载一些自定义类。我遇到的错误是TypeError:cannotpickle'generator'object该方法需要返回一个生成器。我该如何解决这个问题,谢谢。我用谷歌搜索但没有运气。......
  • python 语法无效?
    我试图编写一些Python代码,但由于某些奇怪的原因,它重复了无效的语法,我不知道最大的问题是什么。这些行是文件中唯一的代码行。Age=int(input("Howoldareyou?:"))ifAge>=18:print("YouareaAdult!")我尝试更改行,因为这似乎是我的生气,但它没有做任何帮......
  • 如何在Python的matplotlib中将条形标签绘制到右侧并为条形标签添加标题?
    我已经在python中的matplotlib中创建了一个图表,但是以下代码中的最后一行不允许在图表之外对齐条形标签。importmatplotlib.pyplotaspltg=df.plot.barh(x=name,y=days)g.set_title("Dayspeopleshowedup")g.bar_label(g.containers[0],label_type='edge')我得......
  • 19、Python之容器:快来数一数,24678?Counter能数得更好
    引言关于数据的分组计数,前面的文章中已经涉及了很多次。眼下要进行分组计数,我们可用的方法有:1、直接使用dict进行计数,需要对首次出现的键进行判断初始化的操作;2、使用dict的setdefault()方法进行计数,代码可以简化一些,虽然方法名有点怪;3、defaultdict进行计数,可以设置自动......
  • 如何使用 C# 检查用户是否安装了最低 Python 版本并且可以访问我的代码?
    我正在开发一个C#程序,该程序必须为一项特定任务运行一些Python代码。(Python代码很复杂,是由另一个团队开发的。无法在C#中重现其功能。)我正在尝试更新我的程序的安装程序文件以解决此问题:我希望它检查用户是否(谁正在安装我的程序)已安装Python并且它满足我的最低版......
  • 如何优雅地将复杂的Python对象和SQLAlchemy对象模型类结合起来?
    我有一个相当复杂的类,具有从提供的df到init计算的复杂属性,这些属性可能是最终可以序列化为字符串的其他类类型。在Python中,我想处理对象而不是原始类型,但也想使用SQLAlchemy与数据库交互。表中的列与许多类属性相同,如何优雅地组合这两个类?我可以使用组合并将数据......
  • Python Match Case:检查未知长度的可迭代内部的类型
    我想使用匹配大小写检查一个未知长度的迭代(假设为list)仅包含给定类型(假设为float)(还有其他情况,只有这个给我带来了问题)。case[*elems]ifall([isinstance(elem,float)foreleminelems]):returnnum这个似乎可行,但确实很不Pythony。看来应该有更简单的方法。......