python开发技术详解读书笔记——python的基本语法

上一篇 / 下一篇  2016-05-19 16:42:55 / 个人分类:python

1    第二章python的基本语法

1.1  文件类型

1.    Python源文件以“py”为扩展名;

2.    字节代码,生成的文件以pyc为扩展名;

Import py_compile

py_compile.compile(‘文件名.py’)

3.    优化代码,生成的文件以pyo为扩展名;

直接进入命令行窗口,进入文件路径后,运行语句

python –O –m py_complie文件名.py

参数“-O”必须为大写 ,表示生成优化代码;

参数“-m”表示把导入的py_compile模块作为脚本运行,编译“文件名.py”需要调用py_compile模块中的compile()方法;

此时运行文件中无需再导入py_compile模块,也无需运行模块中的compile方法。

1.2  编码规则

1.2.1命名规则

好处:便于团队的协作和交流

1)    变量名:变量包含全局变量、私有变量。通常由字母和下划线组成;

1)    包名:小写字母

2)    模块名(文件名):小写字母

3)    类名:首字母大写,其他字母小写;

4)    对象:小写字母;

5)    方法名:首字母小写,其后每个单词首字母大写;

6)   函数名:通常采用小写,并用下划线或者单词首字母大写来增加名称的可读性

7)   尽量定义有意义的,能一目了然的变量;

如:尽量定义类似sumPay,monPgy而不是sum1,sum2

1.2.2代码缩进

1.2.2.1 缩进概述

1)     Python的代码缩进是一种语法,采用冒号和代码缩进来区分代码模块;

2)     相同层次,缩进需一致;

3)     若不为采用代码缩进的编码风格,会抛出IndentationError异常;

4)     冒号后面的代码需缩进编写;

5)     首层的代码书写在最左端;

6)     一般是缩进4个空格或制表键(tabulatorkeytab)或者同层缩进相同的空格也可,但这样不是规范的代码;

1.2.2.2 缩进报错

1.    中间语句未进行缩进时,报错

2.    If语句下多条语句缩进位置不一致时,报错

3.    由于import random,是在compareNum函数外,所以此处若需调用模块random下的函数randrange(),则必须与import random缩进一致,否则报错

4.    函数内调用函数自己报错

5.    函数缩进错误?函数无需缩进?

1.2.3模块导入规范

1.2.3.1 模块概述

1)    模块是类或者函数的集合,用于实现某个功能;

1.2.3.2 导入语句

1)    import模块名

a)     模块名.path   模块返回目录列表

print sys.path  #查看返回的目录列表信息

b)     模块名.argv   模块存储输入参数的列表

print sys.argv         #查看返回的存储参数列表信息

2)    from 模块名import属性        #导入模块的部分属性,但此方法不够规范,后期会不知道打印的是什么信息

如:

from sys import path     #from ...import...导入模块的部分属性

print path

1.2.4空行分隔代码

1)    函数、类的方法之间的空行分隔,表示一段新的代码的开始。

2)    类和函数之间也用一行空行分隔,突出函数入口的开始。

3)    空行不是语法,若无运行不会报错,但为了便于代码维护或重构最好加上。

4)    空行也是代码的一部分。

1.2.5注释

1)     单行和块注释均用#

2)     “#”注释,只在单行语句生效

3)     采用中文注释必须在文本首行标注:# -*-coding:utf-8-*-

如果源代码包含中文时,没有添加以上标注会报错如下:

syntaxError: Non-ASCII character'\xe5' in file D:/myrandom.py on line 3

encoding declared; see http://python.org/dev/peps/pep-0263/ for details

4)     程序的跨平台:#! usr/bin/python

1.2.6        语句的分隔

1)     Python的分隔符号“;”可以省略,表示分隔一条语句

2)     如果一行中有多条语句,则必须用分号,最好一行为一条语句

如:x = 1 ; y = 2

否则提示语法错误:SytaxError:invalid syntax

3)     分号不是python推荐使用的语句,因为python追求简单直白

4)     支持多行一条语句。使用“\”作为换行符

如:

print \

"many rows one statement"

5)     简短语句不推荐使用换行,一般换行用于复杂的sql语句

#单条sql语句换行

#方法1,推荐使用的规范方法,每行均使用"",需要注意空格

sql = "select id,name " \

"from depet " \

"where name = 'A'"

print 'sql=%s'%(sql)

#方法2,一条语句使用一次""

sql2 = "select id,name \

from depet \

where name = 'A'"

print 'sql2=%s'%(sql2)

1.3  变量和常量

1.3.1变量命名

1)    变量首字母必须是字母或者字符串;

2)    变量名由数字、字母或下划线组成;

3)    变量首字母为数字时,运行源文件时会报SyntaxError: invalid syntax错。

如:

C:\Users\Moxian>python D:/myrandom.py

 File "D:/myrandom.py", line 47

   1_name=1

         ^

SyntaxError: invalid syntax

1.3.2变量赋值

1)    Python变量无需声明,赋值过程中系统会对应分配内存;

2)    一次新的赋值操作,将创建一个新的变量。

如:以下代码将打印出两次不同的值

#为变量赋值

test_value=1

print 'first tinme %s'%(test_value)

#一次新的赋值,将创建一个新的变量

test_value="hello"

print 'second tinme %s'%(test_value)

3)    变量未赋值,python将视为该变量不存在,赋值后才会被创建。

如:

#未赋值视为变量不存在

yrrr

print 'no value number %s'%(yrrr)        #运行后提示NameError: name ‘yrrr’ s not defind

4)    给多个变量赋值,可同时给定字符或者数值,如果字符串没有引号则会被视为为赋值的变量

#给多个变量赋值

test_mvalue=(1,'name',3)

(value_1,value_2,value_3)=test_mvalue

print 'value_1 is %s'%(value_1)

print 'value_2 is %s'%(value_2)

print 'value_3 is %s'%(value_3)

1.3.3局部变量

1)     局部变量是只能在函数内或者代码段内使用的变量,其他文件同意不能访问此变量。

2)     超出变量范围,会提示找不到变量的错误,name ‘xxx’ is not defind

1.3.4全局变量

1)     全局变量能被不同函数、类或文件共享的变量,在函数之外定义的变量都可以称为全局变量

2)     使用保留字global引用全局变量,如果不引用,函数内有一样名称的局部变量时,则在函数内会调用局部变量

3)     如果不引用全局变量,且函数内没有同名的局部变量,则可自动调用全局变量

如:

my_value1 = 1

my_value2 = 2

def test_add():

# global my_value1

my_value1 = 3    #局部变量

return my_value1 + my_value2   #计算的是一个局部变量和全局变量的值

print test_add()      #计算结果5,是一个局部变量和全局变量的值

4)     引用全局变量后,函数内另外赋值全局变量,在函数执行前,不会改变全局变量的值

5)     引用全局变量后,函数内另外赋值全局变量,在函数执行后,会改变全局变量的值

如:

#全局变量

gal_value='zhuhuan'

def test_gal():

              global gal_value

              gal_value = 'little huan'

              return gal_value

print 'begin test  vlue'

# print gal_value()

print gal_value  #函数内另外赋值全局变量,在函数执行前不会改变函数外全局变量的值

print test_gal()      

print gal_value    #函数内另外赋值全局变量,在函数执行后会改变函数外全局变量的值

6)     调用其他文件的全局变量,调用其他文件若有日志时,会自动将文档的日志打印出来

如调用betaMo_ui.py文件的_a变量,代码如下:

importbetaMo_ui#导入文件betaMo.py

print betaMo_ui.a    #打印betaMo.py文件中的全局变量a

1.3.5常量

1)     常量指一旦初始化后就不能修改的固定值。Python没有保留字定义,可以自己定义一个类来实现变量的功能。

常量类

# -*-coding:utf-8-*-

class _const:   #定义常量类来实现常量的功能

       class ConstError(TypeError):pass

       def __setattr__(self,name,value):  #__setattr__为双下划线

              if self.__dict__.has_key(name):     #__dict__为双下划线

                     raise self.ConstError,"Can't rebind const (%s)"%name

              self.__dict__[name]=value

 

import sys

sys.modules[__name__] = _const()      #此处报错,提示_name_没有被定义,此处需要双下划线

 

2)     导入含此类的模块即可调用

import const  #导入常量文件

const.magic=23

const.magic=25     #此处报错,因为常量为固定值


TAG: Python 读书笔记 技术 开发 python

 

评分:0

我来说两句

Open Toolbar