仅学习用,引用自《零基础学Python》张志强、赵越等编著
文件类型
- 源文件:就是写的代码原始文件,可以使用任何字母作后缀,如.pp,.ab但一般用.py
- 字节代码文件:对源文件进行编译后的文件,以.pyc作后缀,无法使用文本编辑器打开或修改,pyc文件是与平台无关,因此可在windows,linux,Unix下运行
- 优化代码文件:对源文件进行优化后就是优化代码文件,以.pyo作后缀,也无法使用文本编辑器打开或修改,需要使用命令行工具生成
- 优化命令:python -O -m py_compile hello.py
编码规范
- 命名规则
- 变量,包,模块通常小写,可使用下划线,如filename,file_name
- 类,对象,类名首字母大写,对象名采用小写,类的属性和方法名以对象作为前缀,类的私有变量、私有方法以两个下划线作为前缀,哪__name = "Jack";
3.函数名,通常小写,并用下划线或首字母大写增加名称可读性
class Person: #类名
__name = "" #私有变量
def __init__(self,name):
self.__name=name #self相当于java中的this,指当前类
def getName(self): #方法名首字母小写,其后每个单词首字母大写
return self.__name
if __name__=="__main__":
person=Person("jack") #对象名小写
print(person.getName())
- 代码缩进与冒号
- 缩进指在每行代码前输入空格或制表符,表示每行代码的层次关系,基于其他语言如java,c++等,代码缩进只是作为一种良好习惯,对于python,代码缩进是一种语法,作为一个代码块,以冒号开始,之后的相同缩进为一个代码块
if x==1:
print 'x>0'
if x==-1:
print 'x<0'
- 模块导入规范
- 模块定义:模块是类和函数的集合,用于处理一类总是,模块的导入和java中包的导入概念相似
1.import 语句
import sys
print (sys.path)
print (sys.argv)
- from...import...语句
与import语句不同,from...import...语句只导入模块中的一部分内容,并在当前的命名空间创建导入对象的引用;而import语句在当前程序的命名空间中创建导入模块的引用,从而可以使用"sys.path"的方式调用sys模块中的内容
from sys import path
from sys import argv
print (path)
print (argv)
- 正确的注释
- python 的单行注释和多行注释都使用“#”符号
# this is comment
# this is annother comment
########################
name="javck"
print (name)
- python中有一些特殊的注释,如中文注释,程序的跨平台
# -*- coding: UTF-8 -*-
- 使用空行分隔代码
- 语句的分隔
- 分号是C,java语言中标识语句结束的标志,python也支持分号,同样可使用分号作为结束标识,但在python分号不是那么重要,可省略,主要通过换行来识别语句的结束,以下语句是等价的:
print ("hello python")
print ("hello python");
变量和常量
- 定义:变量是计算机内存中的一块区域,可以存储任何值且可以改变。常量是一块只读的内存区域,一旦初始化就不能修改
- 命名:由字母、数字、下划线组成,第一个字母只能是字母或下划线
#正确的变量命名
var=1
_var=1
var_=1
var1=1
#错误的变量命名
1var=1
$var=1
- 赋值
- python中的变量不需要声明,变量的赋值操作即是变量的声明和定义的过程。每个变量在内存中创建,都包括变量的标识、名称、和数据这些信息。
#一次新的赋值操作,将创建一个新的变量
#以下两次打印的同一个变量的id不一样
x = 1
print (id(x))
x = 2
print (id(x))
print (y) #如果没有赋值,则python认为不存在,未定义
- 局部变量
- 定义:只能在函数或代码段内使用的变量,函数或代码段结束,变量的生命周期就结束
def fun():
local =1 #局部变量local
print (local)
fun()
- 全局变量
- 定义:能够被不同的函数,类或文件共享的变量,在函数之外定义的变量都可以称为全局变量
#在文件开头定义全局变量
a=1
b=2
def add():
global a #global关键字引用全局变量
a = 3
return "a + b",a+b
def sub():
global b
b=4
return "a - b" ,a-b
print (add())
print (sub())
- 常量
- 定义:一但初始化就不能改变的变量,如数字3,字符串“abc“都是常量,python没有提供定义常量的关键字,可以自己定义一个常量类来实现常量功能
#const.py
class _const: #定义常量类const
class ConstError(TypeError): pass #继承处TypeError
def __setattr__(self,name,value):
if self.__dict__.has_key(name): #如果__dict__中不包含对应的key则抛出错误
raise self.ConstError, "Can't rebind const(%s)"%name
self.__dict__[name]=value
import sys
sys.modules[__name__]=_const() #将const注册进sys.modules的全局dict中
import const
Person.magic=23
Person.magic=33 #抛出异常const.ConstError: Can't rebind const(magic)
- 数字
- python3数字类型分为:整型、浮点型、布尔型、分数类型、复数类型
- python变量无需声明变量类型
a =1
b= 0.1
c= 2+3j
print(type(c))
- 字符串
- python3中表示字符串--单引号、双引号、三引号,单引号和双引号的作用一样,三引号的用法是python特别语法,三引号中可以输入单引号,双引号或换行等字符
str = 'hello world'
str2 = "hello world"
str3 = '''hello world'''
str3 = ''' "hello world ,I'm Chinese" '''
运算符与表达式
运算符 |
描述 |
+ |
加法 |
- |
减法 |
* |
乘法 |
/ |
除法 |
% |
求模 |
** |
求幂 |
运算符 |
描述 |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
== |
等于 |
!= |
不等于 |
运算符 |
描述 |
表达式 |
and |
逻辑与 |
x and y 当x为True时才计算y |
or |
逻辑或 |
x and y 当x为False时才计算y |
not |
逻辑非 |
not x |
网友评论