Python语言主要有两个版本。Python2和Python3。在命令行中python默认是Python2,使用python3则使用Python3。
Mac下安装iPython的方法 sudo easy_install pip sudo pip install ipython #sudo pip3 install ipythonpy文件中如果有中文,则使用python执行时会报错,python3不会错。解决方法是在第一行加#coding=utf-8 或者 #-*- coding=utf-8 -*-[推荐]
在python2中,输入的内容是当做代码的。肉疼… 在python3中,输入的内容都当做是字符串 在python中使用raw_input()来实现python3中的input()功能
%s 表示字符串,%d表示数字
变量名由字母、下划线和数字组成,且数字不能开头。
查看系统的关键字
import keyword keyword.kwlistPython中的列表类似于其它语言的数组,不同的是Python中的列表元素可以是不同的数据类型。
names = ["bendeng","ada","ouyang"] #添加数据 names.append("David") names.insert(0,"First") //在某个索引位置添加 names2 = ["names1","names2"] names3 = names + names2 //两个列表直接相加 names3 = names.extend(names2) append直接添加,extends是扩展,两者是有区别的。 #删除数据 names.pop() //弹出最后一个 nams.remove(element) //根据element只删除第一个 del names[index] // 删除某个索引 #修改数据 names[index] = newValue #查找 element in names //使用in查找列表中是否存在某元素{key:value}
info = {'name':'bendeng','age':20} info['qq'] = '123456' #添加或修改 del info['qq'] #删除 info['qq'] 或 info.get('qq') #查询。后者不会崩溃 info.keys() #返回key的列表 info.values() #返回values的列表 info.items() #返回key-value(元组)的列表元组和列表用法极其类似。但不同的是使用()表示,而且定义后不可修改,只可查询和遍历。
name = ('ben','deng') a,b = name 元组只有一个元素,使用(a,) 表示两个变量交换值,可以使用a,b = b,a当调用function_name(A,B,C,D)时,kwargs不会接受参数。这时需要拆包,调用方式如下:function_name(A,B,*C,**D) * 表示拆元组,**拆字典,相当于调用function_name(A,B,c,'d':dv)
id(var) 获取变量的地址
a = 1 b = a在python中,a,b都指向同一个内存地址,即变量100的地址。
使用lambda关键字进行匿名函数的定义。像Java8和Swift语言中的闭包。
def function_name(a,b,func): code... function_name(A,B,lambda x,y:x+y)可以通过eval(Str)将字符串转换成函数,比如eval("lambda x,y:x+y")
r 只读模式。文件必须存在。 w 写模式,原来有内容则删除。文件不存在则创建。 a 追加模式。 rb 二进制模式只读。这是文件打开的默认模式。 wb 二进制打开只用于写入。 ab 二进制追加。 r+ 打开一个文件用于读写。文件指针件事放在文件开头 w+ 打开一个文件用于读写。文件不存在则创建。 a+ 打开一个文件用于读写。文件不存在则创建。追加模式 rb+ wb+ ab+
打开文件 f = open("1234.txt","w") 关闭文件 f.close() 读取文件 f.read() #读取文件所有的内容 f.read(1) #读取1个字节,指针往下移 写入文件 f.write("") #写入内容。返回写入文件的长度 其他方法 readline() #读取一行readlines() #返回一个列表,每一行是元素seek(offsetBytes,0) #文件定位。offsetBytes负数往左调,正数右调。python3不支持负数tell() #返回文件当前的位置重命名及删除 import os os.rename(newFileName,oldFileName) os.remove(fileName) 文件夹操作 import os os.mkdir(dirName) #创建目录 os.rmdir(dirName) #删除目录 os.chdir(dirName) #改变默认目录 os.getcwd() #当前目录 os.listdir('dirName') #获取某目录下的所有文件操作属性和方法的方式类似于JavaScript。
self和其它语言的this关键字类似
定义类 class 类名: 属性列表 property = value #在class体中定义的属性是类属性 __variable #以__开头的变量是私有属性,不会被子类继承 方法列表 def __new__(cls): // TODO return object.__new__(cls) #最后一定要调用父类的这个方法 def __init__(self): //TODO self一般这么写,可以写其它 def __str__(self): //TODO 类似于Java的toString方法 def __del__(self): //TODO python自动调用 def __privateMethod(): // #以__开头的是私有方法,不会被继承,也不能在子类中使用 #类方法 @classmethod def methodName(cls): #cls一般是这么写,可以写成其它; // TODO #静态方法 @staticmethod def methodName(): // TODO在python中先调用的new方法创建对象,init负责初始化。这两者合起来类似父类的构造方法
创建对象 var = ClassName()测量对象的引用计数:
import sys sys.getrefcount(object) 继承 class ClassName(ParentClassName): 方法列表 #调用父类的方法,类似于Java中的super.methodName();两种方法: 1、ParentClassName.methodName(self) 2、super().methodName() 多继承 class ClassName(Parent1,Parent2,...): // TODOprint(ClassName.__mro__) #返回元组,方法调用的遍历顺序
单例模式 class ClassName(object): __instance = None def __new__(cls): if __instance == None: __instance = object.__new__(cls) return __instance else: return __instance自定义异常类
class CustomeException(Exception): #Exception异常的基类 def __init__(self,message): //TODO先搜索当前路径下的模块,找不到再去找系统路径下的模块。
moduleName.__file__ #返回模块的路径 if __name__ == "__main__" // TODO 如果直接运行,为True。作为模块给别人调用,为False模块中的__all__定义的是模块被引用的内容,from ModuleName import * 只能使用在__all__ 中定义的属性、方法和类
__all__ = ["functionName","propertyName","className"]将几个相关py(模块)文件放在同一个文件夹,在文件夹下创建__init__.py 文件,那么python将此文件夹视为包。
1、python2必须在文件夹内添加__init__.py才能将文件夹当做包,python3则不必须 2、在__init__.py中定义__all__变量,决定包里能from的模块 3、[Python2]在__init__.py中import moduleName,决定包里能import的模块 4、兼容Python3:使用from . import moduleName
1、在当前目录新建一个setup.py文件。在文件里写入
from distutils.core import setup setup(name="bendeng", version="1.0", description="bendeng's module", author="bendeng", py_modules=['packageName.moduleName1', 'packageName.moduleName2'])2、构建模块
python(python3) setup.py build python(python3) setup.py sdist3、发布后安装 先将.tar.gz解压,cd到目录里
sudo python(python3) setup.py install方式:
python xxxx.py params实现
import sys sys.argv #接收params参数range的风险:python2中使用很大的数字,会申请很大的内存。python3中,没有此风险,按需申请内存。
a = [i for i in range(num1,[num2],[step])] #列表生成式 如: a = [i for i in range(10)] a = [10 for i in range(10)] a = [i for i in range(10) if i % 2 == 0] a = [(i,j) for i in range(10) for j in range(10)]