Python基础知识

1. python介绍

  python语言是由Guide van Rossum在1989年开发,并最终于1991年初发表。python是一种动态解释型的编程语言,支持面向对象、函数式编程。python可以在windows、unix等多个操作系统上使用,python的简洁性、易用性使得开发过程编的简练,特别适用于快速应用开发。

2. python特色

  • 面向对象

  python是一种面向对象的语言,它的类模块支持多态、操作符重载和多重继承等高级概念,并且以python特有的简洁的语法和类型,OOP十分易于使用。

  • 内置的数据结构

  python提供了一些内置的数据结构,这些数据结构实现了类似Java中集合类的功能。python的数据结构包括元组、列表、字典、集合等。内置数据结构的出现简化了程序的设计。

  • 简单性

  python语言的关键字比较少,它没有分号、begin、end等标记,代码块使用空格或制表键缩进的方式来分隔。python的代码简洁、短小、易于阅读。python简化了循环语句,即使程序结构很复杂也能快速读懂。

  • 健壮性

  python提供了异常处理机制,能捕获程序的异常情况。此外python的堆栈跟踪对象能够指出程序出错的位置和出错的原因。异常机制能够避免不安全退出的情况,同时能帮助程序员调试程序。

  • 跨平台性

  python会先编译为与平台相关的二进制代码,然后再解释执行。这种方式和Java类似,但python的执行速度提高了。python程序可以运行在windows、unix、linux等不同操作系统上。

  • 可扩展性

  python是采用c开发的语言,因此可以使用c扩展python,可以给python添加新的模块、新的类。同时python可以嵌入c、c++语言开发的项目中,使程序具备语言的特性。

  • 动态性

  python与javascript、php、perl等语言类似,它不需要另外声明变量,直接赋值即可创建一个新的变量。

  • 强类型语言

  python的变量创建后会对应一种类型,它可根据赋值表达式的内容决定变量的类型。python在内部建立了管理这些变量的机制,不同类型的变量需要类型转换。

  • 应用广泛

  python语言应用于数据库、网络、图形图像、数学计算、web开发、操作系统扩展等领域,有许多第三方库支持python。例如,PIL用于图像处理、NumPy库用于数学计算、WxPython库用于GUI程序设计、Django框架用于web开发等。

 

3. python文件类型

  • 源代码

  python源代码的扩展名是以.py结尾,可以在控制台下运行。python语言编写的程序不需要编译成二进制代码,可以直接运行源代码。pyw是windows下开发图形用户接口的源文件。py和pyc文件都可以使用文本工具打开并修改内容。

  • 字节代码

  python源文件编译后生成pyc后缀的文件,pyc是编译过的字节文件,这种文件不能使用文本编辑工具打开或修改,pyc文件是与平台无关的,py文件直接运行后即可得到pyc类型的文件,或通过脚本生成该类型的文件。

  • 优化代码

  扩展名为pyo的文件是优化过的源文件,pyo类型的文件需要用命令行工具生成。pyo文件不能使用文本编辑工具打开或修改。

#脚本方式把hello.py编译为hello.pyc
import py_compile
py_compile.compile("hello.py")

#生成优化代码
#a. cd进入hello.py所在目录
#b. 使用以下命令生成优化代码
python -O -m py_compile hello.py
#"-O"表示生成优化代码。
#"-m"表示把导入的py_compile模块作为脚本运行。
#编译hello.pyo需要调用py_compile模块的compile()方法。
#然后就可以在该目录中生成一个名为hello.pyo的文件。

 

4. python程序运行过程

  当python运行脚本时,在代码开始进行处理之前,python还会执行一些步骤,先是将源代码编译成所谓的“字节码”,之后将其转发到所谓的“虚拟机”中。

  • 字节码编译

  当程序执行时,python内部(对大多数用户是完全隐藏的)会先将源代码(.py结尾的文件)编译成字节码形式。如果python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc为扩展名的文件。python这样保存字节码是作为一种启动速度的优化。下一次运行程序时,如果在上次保存字节码之后没有修改过源代码,python将会加载.pyc文件并跳过编译这个步骤。当python必须重新编译时,它会自动检查源文件和字节码文件的时间戳:如果你又保存了源代码,下次程序运行时,字节码将自动重新创建。
  如果python无法在机器上写入字节码,程序仍然可以运行:字节码将会在内存中生成并在程序结束时简单地丢弃。

  • python虚拟机(PVM)

  一旦程序编译成字节码(或字节码已从存在从.pyc文件中载入),之后的字节码发送到python虚拟机上执行。PVM就是迭代运行字节码指令的一个大循环,一个接一个地完成操作。PVM是python的运行引擎,它时长表现为python系统的一部分,并且它是实际运行脚本的组件。从技术上讲,它才是所谓“python解释器”的最后一步。

 

5. python命名规范

  • 变量名、包名、模块名称通常采用小写,可使用下划线。
  • 类名首字母采用大写,对象名采用小写。类的属性和方法名以对象作为前缀。类的私有变量、私有方法以两个下划线"__"作为前缀。
  • 函数名通常采用小写,并用下划线或单词首字母大写增加名称的可读性,导入的函数以模块名作前缀。
     1 class Student:                      #类名大写
     2     __name__ = ""                   #私有实例变量前必须有两个下划线
     3     def __init__(self,name):
     4         self.__name__ = name        #self相当于java中的this
     5     def getName(self):              #方法名首字母小写,其后每个单词首字母大写
     6         return self.__name__
     7 
     8 if __name__ == "__main__":
     9     student = Student("Andy")       #对象名小写
    10     print(student.getName())
    命名举例

 

6. 代码的缩进与冒号

  代码缩进是python的一种语法,python没有采用{}、begin...end...等分隔代码块,而是使用冒号和代码缩进区分代码之间的层次。python对代码缩进要求非常严格,如果程序中不采用代码缩进的编码风格,将跑出一个IndentationError。python建议最好使用4个空格缩进,即制表符键缩进。

  另外python也支持分号";"作为一个语句的结束标识,往往都是省略不写即可。

 

7. 注释

单行注释:#
多行注释:''' ''' 或者""" """

中文注释:需要在代码中使用中文注释,必须在python文件的最前面加上如下注释

# -*- coding: UTF-8 -*-

python3中默认编码是Unicode,所以不需要在每个python文件中再加上以上注释,但是在python2中若使用中文必须加上。
扩平台注释:如果需要使用python程序运行在*nix系统中,最好在python文件的最前面加上如下注释。

#!/usr/bin/python
或者
#!/usr/bin/env python   #建议使用这一种方式

 

8. 变量和常量

  • 变量

  变量是计算机内存中的一块区域,变量可以存储任何值,而且值可以改变。常量是一块只读的内存区域,常量一旦初始化就不能修改。

  • 变量的命名

  变量由字母、数字或下划线组成。变量的第1个字符不能是数字。

  • 变量的赋值

  python的变量不需要声明,变量的赋值操作即是变量声明和定义的过程。每个变量在内存中创建,都包括变量的标识、名称和数据这些信息。如x=1。查看变量内存值print(id(x))。

  • 局部变量

  局部变量是只能在函数或代码段内使用的变量。函数或代码段一旦结束,局部变量的生命周期也就结束。局部变量的作用范围只在其被创建的函数内有效。python创建的变量就是一个对象,python会管理变量的生命周期,python对变量的回收采用的是垃圾回收机制。

  • 全局变量

  全局变量是能够被不同的函数、类、或文件共享的变量,在函数之外定义的变量都可以成为全局变量。全局变量可以被文件内部的任何函数和外部文件访问。全局变量通常在文件的开始处定义。
  应该尽量避免使用全局变量,因为不同的模块都可以自由地访问全局变量,可能会导致全局变量的不可预知性。
  全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。

  • 常量

  常量是指一旦初始化后就不能改变的变量。例如,数字5,字符串“abc”都是常量。java使用static和final关键字指定常量,而python并没有提供常量的关键字。python是一门功能强大的语言,可以自己定义一个常量类来实现常量的功能。



 

 

 

 

 

原文地址:https://www.cnblogs.com/jmwm/p/9640963.html