`
wwty
  • 浏览: 542965 次
  • 性别: Icon_minigender_1
  • 来自: 北京-郑州
社区版块
存档分类
最新评论

python基础补习

阅读更多

Python是一种解释性的编程语言。就象Java一样,源代码必须首先由编译器转换成字节瘁

(byte code),然后再由解释器来执行字节码。和Java不一样的是,Python的编译器和解释器

都是一个程序。因此,源代码也可以直接交给这个编译器/解释器来执行。其实,源代码还是先

转换成了字节码,只是没有存在硬盘上,而是直接执行了。某些情况下,这种方式要比Java的

“编辑-编译-修改-再编译-执行”方式效率要高,特别是在写一些小规模的程序时。

 

Python是一种面向对象的编程语言。所有的内置(built-in)数据类型都是类:整数(int)、

浮点(float)、串(string)、布尔(boolean)、mapping、sequence,等等。经常你

会看到一些老鸟写的程序里有类似这样的代码:idx = "book.txt".find("txt") 乍一看,怎么

字符串常量还能有方法呢?其实,如果想到Python的字符串常量也是其类型的实例(instance),

也就是对象,那么这样用当然也就不奇怪了。

 

在Python类定义中,类构造器(constructors)必须用 __init__命名,析构器(destructors)

必须用 __del__命名。Python类的构造器不会自动掉用父类的构造器,子类必须在其构造器中

显式地调用父类的构造器。子类可以选择调用父类构造器的时机,比C++和Java又要灵活一些。

相应地,子类的析构器也需要显式地调用父类的析构器。

 

Python使用引用计数(reference counting)来简化内存管理,程序员基本上不用关心

内存管理的问题,但是要注意避免循环引用(cyclic reference)。变量生成时,其所指对象

的引用计数为一。每次变量出现在等号的右边,或者出现在方法或函数调用实参表里,其所指对

象的引用计数加一。当一个变量out of scope的时候,其所指对象的引用计数会被减一。如果计

数值为零,对象的析构器会被调用。

 

Python同时还是一种过程式(procedural)的编程语言,有条件判断、循环、函数等常见的控制

结构。不像Java,类对Python程序不是必须的。一个程序可以写出来完全没有类的定义,从头到

尾都是free functions和函数调用(function calls)。这点上,Python和C++类似。

 

大概最有争议性的是Python对源代码格式的要求。不像C家族的编程语言,Python不是自由格式

的。Python的scope是靠行首缩进来界定的,而不是匹配的括号。比方说,如果一个类的定义起

始于第一列,那么,类中所有成员及方法必须出现在第一列以后,并且处于同一层次的语句必须

出现在相同的列上。这个特点的初衷是为了维护程序的可读性,也确实达成了目的。大部分的

Python源代码都是排列得整整齐齐的,风格基本接近。但我个人认为有一点矫枉过正了。

 

每一个Python源代码文件可以包含一个或多个的类、free functions。多个源文件在一个文件

系统目录(directory)下可以成为一个模块(module),只要这个目录中有一个名为

__init__.py的文件存在。这个文件甚至可以是空的。模块可以被其他Python代码引入

(import),用类似于Java的“import graphic.2D.text”。模块也是Python最常见的代码

重用形式。Python的编译器和解释器会在缺省的和指定的路径中搜索被引入的模块。

 

Python的名字空间有一点古怪,不太容易说清清楚。对于初学者来说,记住在函数和类方法中存

取全局变量是一定要事先用“global foo”声明。当然,尽量少用全局变量这个金科玉律对

python也是适用的。

 

随着Python编译器/解释器一起发行的有大概上百个模块,涵盖了从字符串匹配,xml parsing,

操作系统功能到电子邮件处理等等各个领域。由于这些模块大部分是由来自世界各地的Python使

用者贡献的,在早期也没有比较正式的命名规范,每个人都有自己的风格。对于习惯了Java严谨

命名规范的人来说,Python看起来就太不“专业”了。这应该也是其他open source软件的一个

特点吧,如果不是问题的话。

分享到:
评论

相关推荐

    python3.5全栈工程师零基础到项目实战全套

    ##### 28.Python3.5 算法补习教程 - **算法基础**:排序、查找等基本算法的原理和实现。 - **数据结构**:栈、队列、链表等常见数据结构的使用。 通过上述知识点的学习,学员可以从零基础开始,逐步掌握Python3.5...

    Python双向循环链表实现方法分析

    如果不懂什么是双向循环链表的伙伴,需要补习一下数据结构的基础之后哦~~~ 在python当中 用一个类Node 来实现链表的节点,节点数据有三个变量: prev:前驱指针: 用于指向当前节点前一个节点 next: 后继指针 ...

    如何学习人工智能.pdf

    3. 数学知识:你需要补习数学知识,你是零基础的话,就先将高等数学基础知识学透,从基础的数据分析、线性代数及矩阵等等。 学习人工智能需要具备扎实的基础知识和实践经验。通过掌握编程语言、算法设计基础和人工...

    如何学习人工智能.docx

    第二步:你需要补习数学知识,你是零基础的话,就先将高等数学基础知识学透,从基础的数据分析、线性代数及矩阵等等, 在学习人工智能的过程中,还需要具备扎实的数学基础知识,因为很多人工智能算法都涉及到数学...

    python3实现字符串的全排列的方法(无重复字符)

    最近在学一些基础的算法,发现我的数学功底太差劲了,特别是大学的这一部分,概率论、线性代数、高数等等,这些大学学的我是忘得一干二净(我当时学的时候也不见得真的懂),导致现在学习算法,非常的吃力。...

    CompTutoring:对于我所有的补习材料

    2. **编程语言**:可能有不同编程语言的教程,如Python、Java、C++或JavaScript,涵盖语法、控制结构、函数、类和对象等。 3. **数据结构与算法**:讲解栈、队列、链表、树、图等数据结构,以及排序、搜索等算法,...

    上海交大程序设计思想与方法试卷

    同时,做历年试卷是检验学习效果的有效方式,可以暴露知识盲点,针对性地进行补习。 上海交通大学的试卷通常会涵盖上述各个方面的知识,并可能涉及到一些高级主题,如设计模式、算法和数据结构等。通过仔细研究这些...

    北邮作业答案答案各科作业答案

    1. 计算机科学基础:包括编程语言(如C++、Java、Python)、数据结构、算法分析、操作系统、计算机网络等。 2. 通信工程:无线通信、数字信号处理、通信系统、电磁场与微波技术、光纤通信等。 3. 电子技术:模拟电子...

    2009程序员考试大纲和教材,2007年上半年试题

    1. **编程语言基础**:包括对至少一种主流编程语言(如C,Java,Python等)的基本语法、数据类型、控制结构、函数及类的理解。 2. **算法与数据结构**:涉及基本算法设计与分析,如排序、搜索算法,以及常用数据...

    PreenchePlanilha:否,您可以通过以下方式获得签证,即不予批准的书面文字

    剧本创作者,女作家和表演者之间的关系功能完整的补习班,校服,基础知识,脚本,脚本,执行者,执行者 乌拉尔·普拉尼哈·马尔科·阿莱科·莫里斯·莫里斯·阿尔梅洛 可以在Excpy.py和quem cria界面上显示文本,并...

    2012 Microsoft Intern Hiring Written Test

    1. **编程题**:通常包括C++、Java或Python等主流编程语言的编程问题,考察候选人对语法、数据结构、算法的理解和应用能力。 2. **算法题**:可能会涉及排序、查找、图论、动态规划等经典算法,检验候选人的逻辑...

    计算机科学与技术专业职业生涯规划书详细版.pdf

    这个专业不仅包括编程语言的学习,如Java、Python或C++,还包括操作系统原理、数据结构、算法设计等基础课程。此外,随着大数据和人工智能的崛起,数据分析、机器学习、云计算等新兴技术也成为重要方向。 在个人...

    2008下半年程序员试题及答案

    2. **编程语言**:可能涉及C/C++、Java、Python等常见编程语言。考生需要熟练掌握语法特性,如变量、控制流、函数、类、对象等,以及异常处理和内存管理等高级主题。 3. **软件工程**:包括需求分析、设计模式、...

    软件设计师历年考试真题 05下-08下

    2. **编程语言**:软件设计师考试可能会涉及到多种编程语言,如C++、Java、Python等,重点考察语法、数据结构和算法的理解与应用。 3. **数据库管理**:SQL语言的使用,数据库设计(如ER模型)、关系数据库理论,...

    ChatGPT的12个应用实例(附操作流程)

    问:"对于一个数学基础较弱的学生,如何制定有效的补习计划?" 6. **实时答疑**: 学生提问:"我不明白这道代数题怎么做,可以帮我解答吗?" 7. **编程教学**: 例子:"我想学习Python编程,但不知道从何入手,...

    tutorial:记录重要主题

    本教程旨在为学习者提供有关WEBLAND补习的全面概述,以及与IT技术相关的实用信息。我们将深入探讨一系列关键主题,包括但不限于编程语言、版本控制工具、在线出版平台以及特定的JavaScript开发工具。下面将详细阐述...

    elsearch-test:将Django与Elasticsearch结合使用的复习应用程序

    在描述中提到,这是一个"小补习课程",意味着它可能包含了基础到进阶的教程,帮助开发者从零开始学习如何在Django应用中集成Elasticsearch。"没什么可看的"可能是作者谦虚的表达,实际上这个项目可能包含了许多实用...

Global site tag (gtag.js) - Google Analytics