【Python基础学习篇】Python基本语法

一、Python的文件类型

Python的文件类型主要分为3种,分别是源代码字节代码优化代码

1、源代码

以py为扩展名

2、字节代码

Python源文件经过编译后生成扩展名为pyc的文件,pyc是编译过的字节文件。这种文件不能使用文本编辑工具打开或修改。

下面这段脚本可以把hello.py文件编译为hello.pyc文件

import py_compile
py_compile compile("hello.py")

将此脚本保存为以py为扩展名的文件,运行后即可得到hello.pyc文件

3、优化代码

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

例子:

用下面的步骤把hello.py文件编译成hello.pyo文件

python -O -m py_compile hello.py

-O:表示生成优化代码;

-m:表示把导入的py_compile模块作为脚本运行。编译hello.pyo需要调用py_compile模块中的compile()方法。

二、Python的编码规则

1、命名规则

变量名的首字符必须是字母或下划线,首字母之外的字符可以由字母、数字或下划线组成,并且不能使用Python的保留字。

常见的规则:

(1)变量名、包名、模块名

变量名通常由字母和下划线组成,包名、模块名通常用小写字母。

#!/usr/bin/env python# -*- coding=utf-8 -*-#变量、模块名的命名规则#Filename:ruleModule.py'''#Filename:ruleModule.py用于声明模块的名称,模块名用小写字母,也可以不指定模块名,以py后缀的文件就是一个模块。模块名就是文件名。'''_rule = "rule infornation"#定义了一个全局变量_rule

(2)类名、对象名

类名首字母用大写,其他字母采用小写对象名用小写字母。类的属性和方法名以对象作为前缀,对象通过操作符“.”访问属性和方法。类的私有变量、私有方法以两个下划线作为前缀。

#!/usr/bin/env python# -*- coding=utf-8 -*-#变量、模块名的命名规则class Student: #类型用大写字母__name = "" #私有实例变量前必须有两个下划线def __int__(self,name):
    self __name = namedef getName(self):#方法名首字母用小写,其后每个单词的首字母用大写return self __nameif __name__ == "__main__"
  student = Student("Lee")#对象名用小写字母print student.getName()

(3)函数名

函数名通常采用小写,并用下划线或单词首字母大写来增加名称的可读性,导入的函数以模块作为前缀。

例子:

randrange()的声明如下:

randrange(start,stop[,step])

start:表示生成随机数所在范围的开始数字

stop:表示生成随机数所在方位的结束数字,但不包括数字stop

step:从start开始往后的步数。生成的随机数在[start,stop - 1]的范围内,取值等于start + step

例如:

randrange(1,9,2)随机数范围在1、3、5、7之间取得。

范例:

定义一个行数compareNum(),该函数用于比较两个字的大小,并返回对应的结果。

#!/usr/bin/env python # -*- coding=utf-8 -*-#Using GPL v2.7#Author: [email protected]#函数中的命名规则import random #导入random模块def compareNum(num1,num2):#定义函数compareNumif(num1 > num2):return 1elif(num1==num2):return 0else:return -1num1 = random.randrange(1,9)#调用random模块的randrange()返回两个随机数num2 = random.randrange(1,9)print ("num1 =",num1)print ("num2 =",num2)print (compareNum(num1,num2))
2、代码缩进和冒号

Python使用冒号代码缩进来区分代码之间的层次。

3、模块导入的规范

模块是类或函数的集合,用于实现某个功能。在Python中,如果需要在程序中调用标准库或其他第三方库的类时,需要先用import或from...import...语句导入相关的模块。

(1)import语句

例子:

#!/usr/bin/env python# -*- coding=utf-8 -*-#Using GPL v2.7#Author: [email protected] sys #sys模块是处理系统环境的函数的集合。print (sys.path) #默认情况下会查找sys.path返回的目录列表,列表是Python内置的数据结构,定义了一组数据,通常用来作为参数或返回值print (sys.argv) #sys.argv是存储输入参数的列表。默认情况下,argv自带的参数是文件名

输出结果:

---------- python2.7 ----------['C:\\Users\\Administrator\\Desktop', 'C:\\Windows\\system32\\python27.zip', 'D:\\Python27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\lib-tk', 'D:\\Python27', 'D:\\Python27\\lib\\site-packages']
['Noname1.py']

输出完成 (耗时 0 秒) - 正常终止

(2)from...import...语句

首先解释一下命名空间的概念。命名空间是指标识符的上下文。相同名称的标识符可以在多条命名空间中定义,命名空间中可以定义任何标识符,并且保证这些标识符不会与任何已有的标识符发生冲突。

使用from...import...语句导入与import语句导入有所不同,区别是前者只导入模块中的一部分内容,并在当前的命名空间中创建导入对象的引用;而后者在当前程序的命名空间中创建导入模块的引用,从而可以使用“类名.属性”的方式调用。例如import sys后,可以在当前文件中调用sys.path

例子:

#!/usr/bin/env python# -*- coding=utf-8 -*-#Using GPL v2.7#Author: [email protected]#不规范导入方式from sys import pathfrom sys import argvprint (path)print (argv)

输出结果:

---------- python2.7 ----------['C:\\Users\\Administrator\\Desktop', 'C:\\Windows\\system32\\python27.zip', 'D:\\Python27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\lib-tk', 'D:\\Python27', 'D:\\Python27\\lib\\site-packages']
['Noname1.py']

输出完成 (耗时 0 秒) - 正常终止
4、使用空行分隔代码

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

例子:

创建一个类A,并在类A中定义funX()和funY()这两个方法

#!/usr/bin/env python# -*- coding=utf-8 -*-#Using GPL v2#Author: [email protected] A:def funX(self):print ("funY()")def funY(self):print ("funX()")if __name__ == "__main__":
    a = A()
    a.funX()
    a.funY()

输出结果:

---------- python2.7 ----------funY()
funX()

输出完成 (耗时 0 秒) - 正常终止

5、正确的注释

注释的用法及其作用

注释的用法

作用

单行注释 说明一行语句的作用
块注释 说明一段代码的作用或者整个程序文件的功能
程序的跨平台 #!/usr/bin/python
中文注释的支持 # -*- coding=utf-8 -*-
调试程序 注释可以帮助程序员调试程序
6、语句的分隔

Python主要通过换行来识别语句的结束。

Python支持多行写一条语句,Python使用“\”作为换行符。

三、变量和常量

变量是计算机内存的一块区域,变量可以存储规定范围内的值,而且值可以改变

常量时一块只读的内存区域,常量一块只读的内存区域,常量一旦初始化就不能修改。

1、变量的命名

变量名由字母、数字或下划线组成。变量名的首字符必须是字母或下划线,首字符之外的字符可以由字母、数字或下划线组成。

例如:

#!/usr/bin/env python# -*- coding=utf-8 -*-#Using GPL v2.7#Author: [email protected]#正确的变量命名var_1 = 1print (var_1)
_var1 = 2print (_var1)

输出结果:

---------- python2.7 ----------
1
2输出完成 (耗时 0 秒) - 正常终止
2、变量的赋值

Python中的变量不需要声明,变量的赋值操作即是变量声明和定义的过程。每个变量在内存中创建,都包括变量的标识、名称和数据这些信息。

例如:

x = 1

如下所示:

1

Python中一次新的赋值,将创建一个新的变量。即使变量的名称相同,变量的标识并不相同。

例子:

演示Python的变量声明以及赋值操作。

#!/usr/bin/env python# -*- coding=utf-8 -*-#Using GPL v2.7#Author: [email protected]#一次新的赋值操作,将创建一个新的变量x = 1print (id(x))
x = 2print (id(x))

输出结果:

---------- python2.7 ----------
31030120
31030096输出完成 (耗时 0 秒) - 正常终止

说明:调用函数id,输出变量x的标识。每个变量都有一个内部标识,便于变量的维护和管理。

例子:Python支持对一些变量同时赋值的操作

#!/usr/bin/env python# -*- coding=utf-8 -*-#Using GPL v2.7#Author: [email protected]#给多个变量赋值a = (1,2,3)
(x,y,z) = aprint ("x = ",x)print ("y = ",y)print ("z = ",z)

输出结果:

---------- python2.7 ----------('x = ', 1)
('y = ', 2)
('z = ', 3)

输出完成 (耗时 0 秒) - 正常终止
3、局部变量

局部变量是只能在函数或代码段内使用的变量。函数或代码段一旦结束,局部变量的生命周期也将结束。局部变量的租用范围只在局部变量被创建的函数内有效。

例子:

如果文件1的fun()中定义了一个局部变量,则该局部变量只能被fun()访问。局部变量不能被fun2()访问,也不能被文件2访问。如图所示:

1[1]

例如:

#!/usr/bin/env python# -*- coding=utf-8 -*-#Using GPL v2.7#Author: [email protected]#局部变量def fun():
    local = 1print local
local = local - 1

输出结果:

---------- python2.7 ----------Traceback (most recent call last):
  File "Noname1.py", line 9, in <module>local = local - 1NameError: name 'local' is not defined

输出完成 (耗时 0 秒) - 正常终止

注意:

Python创建的变量就是一个对象,Python会管理变量的生命周期。Python对变量的回收采用的也是垃圾回收机制

4、全局变量

全局变量是能够被不同的函数、类或文件共享的变量,在函数之外定义的变量都可以称为全局变量。全局变量可以被文件内部的任何函数和外部文件访问。

例如,如果文件1中定义了一个全局变量,文件1中的函数fun()可以访问该全局变量。此外,该全局变量也能被文件1以外的文件访问。如下:

1[2]

全局变量通常在文件的开始处定义。

例如:定义两个全局变量_a、_b和两个函数add()、sub(),这两个函数调用全局变量执行加法和减法计算。

#!/usr/bin/env python# -*- coding=utf-8 -*-#Using GPL v2.7#Author: [email protected]#在文件的开头定义全局变量_a = 1_b = 2def add():global _a #引用全局变量_a = 3 #对全局变量_a重新赋值return "_a + _b =",_a + _bdef sub():global _b
    _b = 4return "_a - _b =",_a - _bprint (add())print (sub())

输出结果:

---------- python2.7 ----------('_a + _b =', 5)
('_a - _b =', -1)

输出完成 (耗时 0 秒) - 正常终止

如果不适用glocbal保留字引用全局变量,而直接对_a、_b赋值,将得到不正确的结果:

#!/usr/bin/env python# -*- coding=utf-8 -*-#Using GPL v2#Author: [email protected]#错误的使用全局变量_a = 1_b = 2def add():
    _a = 3 #对全局变量_a重新赋值return "_a + _b =",_a + _bdef sub():
    _b = 4return "_a - _b =",_a - _bprint (add())print (sub())

输出结果:

---------- python2.7 ----------('_a + _b =', 5)
('_a - _b =', -3)

输出完成 (耗时 0 秒) - 正常终止

注意:

变量名相同的两个变量可能并不是同一个变量,变量的名称只是起标识的作用。变量出现的位置不同,变量的含义也不同。

可以把全局变量放在一个专门的文件中,这样便于统一管理和修改。

例如:

创建一个名为gl.py的文件

#全局变量_a = 1_b = 2

再创建一个调用全局变量的文件use_global.py

# -*- coding=utf-8 -*-#Using GPL v2.7#Author: [email protected]#调用全局变量import gldef fun():print (gl._a)print (gl._b)
fun()

输出结果:

---------- python2.7 ----------
1
2输出完成 (耗时 0 秒) - 正常终止

你可能感兴趣的:(源代码,color)